{"_id":"axway-flow-graph","_rev":"238-8d1123c61b3d27a5053ef89081cda610","name":"axway-flow-graph","dist-tags":{"v4-next":"1.1.1-0","v4-preview2":"2.0.0-1","v4-preview1":"2.0.0-1","v4-preview3":"2.0.0-4","canberra":"2.0.0","athens":"2.0.0","dublin":"3.0.2","eden":"3.0.3","fuji":"3.0.4","geneva":"3.0.4","halifax":"3.0.8","jakarta":"3.0.23","kobe":"3.0.23","istanbul":"3.0.23","lisbon":"3.0.24","naples":"3.0.25","melbourne":"3.0.25","phoenix":"3.0.26","quebec":"3.0.26","osaka":"3.0.26","raga":"3.0.27","sofia":"3.0.28","wellington":"3.0.30","valencia":"3.0.30","utopia":"3.0.30","turin":"3.0.30","v3-latest":"1.2.13","akita":"3.0.31","zams":"3.0.31","xapuri":"3.0.31","yako":"3.0.31","barcelona":"3.0.32","darwin":"3.0.34","cairo":"3.0.34","ennis":"3.1.0","jackson":"3.1.2","florence":"3.1.2","ghent":"3.1.2","huddersfield":"3.1.2","independence":"3.1.2","kharkiv":"3.1.2","leeds":"3.1.2","marrakech":"3.1.2","nancy":"3.1.2","oslo":"3.1.3","rason":"3.1.4","tokyo":"3.1.4","shanghai":"3.1.4","qena":"3.1.4","prague":"3.1.4","agra":"3.2.0","bruges":"3.2.0","calgary":"3.2.0","ufa":"3.2.0","vancouver":"3.2.0","warsaw":"3.2.0","xenia":"3.2.0","yokohama":"3.2.0","zagreb":"3.2.0","dubai":"3.3.0","giza":"3.3.0","ibiza":"3.3.0","jaunpur":"3.3.0","kalamitsi":"3.3.0","lyon":"3.3.0","hanoi":"3.3.0","faro":"3.3.0","edirne":"3.3.0","madrid":"3.3.1","quezon":"3.3.2","nashville":"3.3.2","ottawa":"3.3.2","perm":"3.3.2","roberttown":"3.3.2","sydney":"3.3.2","timbuktu":"3.3.2","utrecht":"3.3.2","venice":"3.3.2","wrecsam":"3.3.2","xalapa":"3.3.2","york":"3.3.2","zigong":"3.3.2","amsterdam":"3.3.2","bangkok":"3.3.2","caracas":"3.3.2","djibouti":"3.3.2","haarlem":"3.3.3","ikeja":"3.3.3","johannesburg":"3.3.3","kabul":"3.3.3","london":"3.3.3","madurai":"3.3.3","nantes":"3.3.3","gondar":"3.3.3","flint":"3.3.3","exeter":"3.3.3","oyo":"3.3.4","qom":"3.3.5","riga":"3.3.5","sunnyvale":"3.3.5","tauranga":"3.3.5","unna":"3.3.5","villasimius":"3.3.5","latest-4":"3.3.5","wicklow":"3.3.5","xiangxiang":"3.3.5","yangon":"3.3.5","zaanstad":"3.3.5","latest":"3.3.5","paris":"3.3.5","next":"3.3.5"},"versions":{"1.0.1":{"name":"axway-flow-graph","version":"1.0.1","keywords":["axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENCE","_id":"axway-flow-graph@1.0.1","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"dist":{"shasum":"3bf2f9bfd0e20ee2e8d63fb5a240086d730097be","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.0.1.tgz","integrity":"sha512-+ik3uxgLU83dlohZheU4XSJeqdBkihcff0YJSscQlSHK54soXElNAlYjGO/PsUfVJP/IntlWKSMpoX2McUWF/w==","signatures":[{"sig":"MEYCIQCZ9sPikR0cfEHn/HX1f/tO9m6SftKqueq1aIX/AymsTgIhALrzJF9Ydk2N4BWV1YeVcNRbfmqeDO/vLOSo/8hw4yEH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"dist/node/index.js","_from":"axway-flow-graph-1.0.1.tgz","files":["dist","README.md","LICENCE"],"_shasum":"3bf2f9bfd0e20ee2e8d63fb5a240086d730097be","browser":"dist/web/index.js","scripts":{"test":"rimraf coverage && rimraf .nyc-output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary node_modules/mocha/bin/mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev && npm run security","clean":"rimraf dist coverage .nyc-output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && rimraf .nyc_output","security":"echo '[]' > scan-retire.json && echo '[]' > scan-nsp.json","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","test:watch":"rimraf coverage && rimraf .nyc-output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary node_modules/mocha/bin/mocha --require babel-register ./test --watch --recursive -R spec","release:npm":"curl -X GET http://registry.ecd.axway.int:8081/artifactory/local-npm/$npm_package_name/-/$npm_package_name-$npm_package_version.tgz 2>/dev/null > $npm_package_name-$npm_package_version.tgz && npm publish --registry  https://registry.npmjs.org ./$npm_package_name-$npm_package_version.tgz && rm ./$npm_package_name-$npm_package_version.tgz","build:readme":"node-readme && mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && rimraf README.hbs","security:nsp":"nsp check --output json > scan-nsp.json","release:major":"npm version major && npm run release:publish && git push --follow-tags","release:minor":"npm version minor && npm run release:publish && git push --follow-tags","release:patch":"npm version patch && npm run release:publish && git push --follow-tags","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","release:publish":"git add -A && git push && git push --tags && npm publish","security:retire":"retire --exitwith 0 --package --outputformat json --outputpath scan-retire.json","release:prerelease":"npm version prerelease && npm run release:publish && git push --follow-tags"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"_resolved":"file:axway-flow-graph-1.0.1.tgz","repository":{"url":"https://git.ecd.axway.int/amplify/axway-flow-graph","type":"git"},"_npmVersion":"4.5.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"7.9.0","dependencies":{"babel-runtime":"^6.25.0"},"devDependencies":{"nsp":"^2.7.0","nyc":"^10.2.0","chai":"^3.5.0","esdoc":"^0.5.2","mocha":"^3.4.2","eslint":"4.3.0","retire":"^1.3.3","rimraf":"^2.6.1","webpack":"^1.12.0","istanbul":"^0.4.5","jsonpath":"^1.0.0","babel-cli":"^6.24.0","cross-env":"^5.0.1","babel-core":"^6.25.0","json-loader":"^0.5.7","node-readme":"^0.1.9","babel-eslint":"^7.2.3","babel-loader":"^6.2.4","eslint-loader":"^1.9.0","babel-istanbul":"^0.12.2","babel-polyfill":"^6.23.0","jsdoc-to-markdown":"^3.0.0","babel-preset-es2015":"^6.24.1","eslint-plugin-mocha":"4.11.0","babel-preset-stage-2":"^6.24.1","eslint-plugin-import":"2.7.0","eslint-plugin-jsx-a11y":"5.1.1","eslint-config-axway-base":"^2.0.0-0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph-1.0.1.tgz_1510762502683_0.5597165110521019","host":"s3://npm-registry-packages"}},"1.0.2-101":{"name":"axway-flow-graph","version":"1.0.2-101","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.0.2-101","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"99caeda61be59ec7e8b2e9c8890c68062ec3041f","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.0.2-101.tgz","integrity":"sha512-Y8/0RBLmLK7t11shpUV6riMzlGmUEwnn5EDX4Bkqk2HapY08pRWe4QnHvfQwXqqFxhy/JipSF/b8xu3NoAsrDA==","signatures":[{"sig":"MEUCIBrVSKpqmc2wU5kcgojPTNXcOJYhD39G2F7RkHQLXhGVAiEAxGpH7vcgHgfB3BZsx6P0Wld5fkVmydGv4AsHxSJ9wLU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"browser":"dist/web/index.js","engines":{"node":">= 8"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph-1.0.2-101.tgz_1517849241624_0.6711685843765736","host":"s3://npm-registry-packages"}},"1.0.2-102":{"name":"axway-flow-graph","version":"1.0.2-102","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.0.2-102","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"6e948f0924b281be720a79f3f9c078c87b0fc25f","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.0.2-102.tgz","fileCount":7,"integrity":"sha512-EBM2dxjR0Kyfj2E7x/W23bA6DWzQZOm+pG3rrRZWkQDOH21X5261XMzm/szUXLInrG+c7fEu/s94GnjZ3Nowcw==","signatures":[{"sig":"MEQCIBrL3q0GuOVlY5YtghSlbW1H4bKzFKAXjvO5emJnMOHYAiBtyLnQLmBounID8g6n4kY5lHcPkp6qoE2i7wCJlH/GJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":104275},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSON path selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, type)](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, type)\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| type | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name)\nRemoves a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>bool</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>bool</code> - - Is the JSONPath selector valid?  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.0.2-102_1518531177201_0.6747836295327994","host":"s3://npm-registry-packages"}},"1.0.2-103":{"name":"axway-flow-graph","version":"1.0.2-103","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.0.2-103","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"94fcfca96981cf0908c6d7c117fac448d5c426d9","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.0.2-103.tgz","fileCount":7,"integrity":"sha512-Ln+3KqvbkWuMt2yFxLiboMSy0QXRZeTAPA4HfKhN2Wo5Y8ohMf1cX/skk6eVBnnfte+HHEGBabpDJBj14U3RrA==","signatures":[{"sig":"MEYCIQDH88YC7ibbTigVG8YAfPCJJdOmjfzXyH6vTu/mjvcnyQIhAMqsMXHp8ZapgnZsK2U0mexhp8nayePSs/gGWq+3ljnB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116117},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.0.2-103_1519225914844_0.427691667374813","host":"s3://npm-registry-packages"}},"1.0.2-104":{"name":"axway-flow-graph","version":"1.0.2-104","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.0.2-104","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"5d3969890b7a6efec2217d52ff800ec579f9f7e4","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.0.2-104.tgz","fileCount":7,"integrity":"sha512-J1eZGuj5VaFrMjBWHc4eKenPiSg3i3MwNeG0X6Cp3xF5HH/4V8ivnpNOGxawl+MWZDuf5JdA7uJOwIu8ZB7ibA==","signatures":[{"sig":"MEYCIQDYxX7pfhO1iUYZi+6lSmSpI2y9UYoxZ2hnSR124LlESgIhAKOjI9I82K9PmZt6qpad4FIv0yBvd5iyZSbmgw+teZto","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116124},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.0.2-104_1519248532787_0.31574149959537756","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"axway-flow-graph","version":"1.1.0","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.1.0","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"1c71abb625a62157294cbcf74085621863b9f5ff","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.1.0.tgz","fileCount":7,"integrity":"sha512-0k5nE+aqBahkNZMqhbL30S+xzhcbCg6bB6iNyXA2CLr8unut4wCMglOJn7ZbS2GrqU1TmXM+Z27f2EvjNSU61g==","signatures":[{"sig":"MEQCIHm/8uaC3UB8okPk0ss/PZ5HfB3Yd3nT5tyvxNKftJfeAiBLjPhZmKH8UhgByIaA5JW6TJ3Ft2UyLd9huLkOxPfuug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116171},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.1.0_1519323950828_0.9227051642033346","host":"s3://npm-registry-packages"}},"1.1.1-0":{"name":"axway-flow-graph","version":"1.1.1-0","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.1.1-0","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"70d8b7c2418f6d7bc8f33d101ed70aac040d866a","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.1.1-0.tgz","fileCount":7,"integrity":"sha512-/pTqD4vh9pIhSSYtibLuWUXzi0LtVlRl0IA3cwJ/TUh1JryT8pdkrUlefW3a0HmPwbbtO5Tgv3F6I8T4q1LKuQ==","signatures":[{"sig":"MEYCIQCHGyVd4CT+myarbp4I1BDZAucVfiu7P/paQoHdOmJh0wIhAOoXl+wJM8VOtFShC0XWC8bEgNbJ5B1YPrfvxogbk60b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116183},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.1.1-0_1521553928421_0.022150877595786822","host":"s3://npm-registry-packages"}},"1.1.1-1":{"name":"axway-flow-graph","version":"1.1.1-1","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.1.1-1","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"612c9208cd040952cc6cb1b773424b39d405cce5","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.1.1-1.tgz","fileCount":7,"integrity":"sha512-vkixRHdGmn0q71jwBLy55+YaxZpx7NHv0i5RbaPUpLb6YAgvzZTep4EV0RwFSKA3naNmwSC9ZaI/zyWkRwYl1Q==","signatures":[{"sig":"MEQCIBh4Q4/Usz140C0oAuCtcbXYT2NzR0f1fmxgxAG7q9EDAiBIAfsAIx/ew85u84MMz5CVP8udB9PWFAenD9FgQP/Uig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116194},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.1.1-1_1523458252914_0.97486497562924","host":"s3://npm-registry-packages"}},"2.0.0-1":{"name":"axway-flow-graph","version":"2.0.0-1","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@2.0.0-1","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"51ef1f1c37f909db9f687008aaf9fe20a8975869","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-2.0.0-1.tgz","fileCount":7,"integrity":"sha512-vqbenH54anzQe8zQLx1k5rZFagin4jh/SfOwVy4nL6OsP5I4gKG2vAAnq8iY4hnYzcRpEpJ6QvZiV2H+8VdjmQ==","signatures":[{"sig":"MEQCIGtVAqXD3aL96EUklgIrFiGqvvQnTYI1zl93iPXWjCgaAiBOCygpcqyOSegJy0eymrnrhPlzKDmnKP5nacIZyKV5TQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116194},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_2.0.0-1_1523531989510_0.6073688731452671","host":"s3://npm-registry-packages"}},"2.0.0-2":{"name":"axway-flow-graph","version":"2.0.0-2","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@2.0.0-2","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"b08e96adaf7fc7b3bc128485ceab7a2acaa69814","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-2.0.0-2.tgz","fileCount":7,"integrity":"sha512-qhhCvIfepubF3Lkg0qW0qaX+PGSmCvWgbrU3g7sEyRgNBcN7Guh+Q7edoF2wFmSRBJforQsPwI6kEBecEjYgKA==","signatures":[{"sig":"MEYCIQDvh8L0Fm+PHvSQwUQ+v0TWzySkTXaklKangtXQN3AEoQIhAOCQIVoy4pEGf8onfn3W/l3eIBgZMZ4ikRdzAVowdgpy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":116654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9Ak4CRA9TVsSAnZWagAARY4P/RdHVopaEUiwvx4Zx3UB\n3pJvXbZNNsHsoiUXaIAUzUTyDzPMXCR+foSyL9VCK86C0gpUev7UXxInYa1X\n0i4qeP97Kbk2j0lcXGjKijJnjAzzRKV+fWzqJl6FJLE4V2OBzRg42KoRVtwe\ncBeR1A72P5GmhhTpOuxYmN1YasggEs/lUX5mXUtoAK+AJvcVDLFvZqb6xONu\nANqBnKIjKDPkkPlYGHWIzj3d8T2xOU0YIproyYDM244QPwg5X2qjGAMA2ibB\nNHzC4NOpnb2mUpgknxqCpKn60aEac+2xy800ssQiZBg23hNBTEn8obbYwZp5\nzigi3Msh6BAkuzwPNWcG3vltKuJj3gQS2VgIfG587rtD2zlbHZx014bQRGcA\nt7pTdrz/PCgD1tHAhCpMFWV4BAB3v4Mk6A18y5XIjVSKADPWP+AEXGV/QM21\n+4T2vLVja+GYoD9FwpEKHORvYD39Ip3VMaGcqN3uZaQt1u/XZ0kUC2Vpc0kK\nnWpZcdMQdahULzBwJmjVyjzTNe5mptQF/FmywpW8BW1+nS3yU8B6JYA1/ZzW\nqLGMcTXF4hRPXNIRFZzuZuLp/5HcX5YGS7384M9/ZudKGhMx5qXWJTabkZJt\nwSjt8n4L7udts7eX6b+q69ozR6P6mhVs03lRIrRHhP3KZ7aPIkHdbnsfPXiY\nrjff\r\n=7jm+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_2.0.0-2_1525942583239_0.7135910358538515","host":"s3://npm-registry-packages"}},"2.0.0-3":{"name":"axway-flow-graph","version":"2.0.0-3","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@2.0.0-3","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"8647d809fe9204cdb1ded5f41e3c37f06bbfe69f","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-2.0.0-3.tgz","fileCount":7,"integrity":"sha512-Qbh45gcc9XxGaU3KAIRyfbQBhw3zndRvcNoDKwA+UxX63IsVbYOTFxAbXOMdVw/xsr8az29YyW3nkfvZTTz61A==","signatures":[{"sig":"MEUCIF9nLs8THRZnsAgJ3HEw/KWccvfNzjCePDxFGgrGDAAlAiEA8/KlK4dhu+2SEyGxprgL1uISGRc0LY2leS4f0mgydjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCDTgCRA9TVsSAnZWagAAYrwQAJ3jGpvERhrqpGIPbsVP\nd+WtaFZ5qCT5O0oiquYP3rOZqdjPVTSoKTkTQrK1kKt2BzKflNHI4LGSYnb1\nKmws8qSR9TusZP2rj01GpOhMjoczoi201xtLf5rhY0filp737zUTFt5lJ9Qi\nxtg2jsGyZsQTZcVqKB9dpR4JsVrEkzVzWd/3gyCAVN/3+lt3QpRMtLPJD9pL\nlvs/VD3oBemncOdRgM81bG1oaFREUrxdUstLstTdsSyY8L6qfxniCx086G70\n6gxlqzKUB8SHUEP/CDheWu+CK10+kSadm+/3P+w1DTzBjQKKAsBif0p0WKoB\n2m+BKN5/uGkBdasZXJYx/+KdxM3grSm41ASh4yYEg/fyOk2/gzg5dQh5iBRq\nUGnaNFLlsQI7nj5M9iQU0NW39tO/aGQMv8AKTW3MCPH2IMz8zhPmk5aw5dEQ\nu3Muofj4h4FrjPKA4/zcV/dmAV9K2J3bvXhogtcsOmH3ASUz3UfEIKUiS4H0\nCr3sE2HJOtLA/kpnEQv9uLi0Hq2UsKwmrp9o2GP0cn4eXbxZEbtwvPibYJvj\nP3AJO1UgthwRRdqjbtjrBHYohIbX/cK3+k6O8rZ6NQEPVnRAZX5pO8qfD2GO\n9N/4ztaeEI+ehZbktAmEm4ylfOZBODoRAcRm03XV2XdiNZigvrxQGHe9dkCR\nSGZN\r\n=6YZR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies.  Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions).  Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"gmatthews@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_2.0.0-3_1527264480118_0.5590049725076167","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"axway-flow-graph","version":"1.1.1","keywords":["axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENCE","_id":"axway-flow-graph@1.1.1","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"dist":{"shasum":"2a2fd183f68057e9a1fdc39cd1e1d66c03da814e","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.1.1.tgz","fileCount":7,"integrity":"sha512-5oXCcMzubVj14yTrBLzH7mYU8redoTB2V4fnJotG2XAYPIx8KIq4grQiqdVQTR0ekyFjmIr1QRP1BdLGN7qq2w==","signatures":[{"sig":"MEUCIQCkfu8MA8LJ+NdwRAuXFaR3BeRsfEfp5psZKPdJ7kHnrgIgeMINJ0Ota3WH5/eBm0GosTLLxEAyFsHX9/kJqoUlDd8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":659143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJ8VeCRA9TVsSAnZWagAA9yUP/A6heo8VlwW9uhz8+qIJ\neipD5Uk1Qjs1agyurceB7/DzH6QbGbr4Ps9rk/hwqS0Djq1rPm2oYv4doSxo\nhn+VegX67INSjvipAXkbjeSx5VZb09lLdE3eLHgaNlRyNyT0sldfnGWYOYtH\nBnuSl44K2toIBYqy6/i4HTL2o8djtI+YvEuXsxdG/42uAx7nJCsnTFV3z6ko\nSdXQlEAp6SzSTS4kSCVCqn04+Q4kje/7zoXIGe06o5feb5tDJsEW3O0QfMtY\ne1Ko7+K5jhj1YrFVlQzv2oY0GGI/I7NqnI0fIC/hwUhg+gyfztNjNhY4ht54\nTJNawJwADNWjdkY2WNaGbHXBCcL815/DA2pRXle0ZjEPXPd+fGf2lp6Lp6lA\n26vROzcCXGOJ74X4/4vos6akR2g/sLMAMY0a3WiGwNO51KqGFN2eab2BG55y\nqZhZDAcA/D5oeuSz+DbZ8vzFpsw7eFHJ71ZXie8to2YKzltseNpYOkkkKXWT\nzq8q5oPsrFHmUUZZ3ozvCh0dqLXB/tz/GnLBN1/cuagIrvCWeIOptYIj0SI0\nJra0fOQVQI0liMXcE4vyuwW2/oya2dB4gmaV/Rk+pSax4rcJetcgqCjXyba8\nHnjfCPawWj6yl8ax4omsXhjN8ESIXfU4vjYsp/jvgDVSaiHH5uPBrnQAm1GI\nPQ3n\r\n=QLVX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","files":["dist","README.md","LICENCE"],"browser":"dist/web/index.js","scripts":{"test":"rimraf coverage && rimraf .nyc-output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary node_modules/mocha/bin/mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev && npm run security","clean":"rimraf dist coverage .nyc-output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && rimraf .nyc_output","security":"echo '[]' > scan-retire.json && echo '[]' > scan-nsp.json","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","test:watch":"rimraf coverage && rimraf .nyc-output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary node_modules/mocha/bin/mocha --require babel-register ./test --watch --recursive -R spec","release:npm":"curl -X GET http://registry.ecd.axway.int:8081/artifactory/local-npm/$npm_package_name/-/$npm_package_name-$npm_package_version.tgz 2>/dev/null > $npm_package_name-$npm_package_version.tgz && npm publish --registry  https://registry.npmjs.org ./$npm_package_name-$npm_package_version.tgz && rm ./$npm_package_name-$npm_package_version.tgz","build:readme":"node-readme && mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && rimraf README.hbs","security:nsp":"nsp check --output json > scan-nsp.json","release:major":"npm version major && npm run release:publish && git push --follow-tags","release:minor":"npm version minor && npm run release:publish && git push --follow-tags","release:patch":"npm version patch && npm run release:publish && git push --follow-tags","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","release:publish":"git add -A && git push && git push --tags && npm publish","security:retire":"retire --exitwith 0 --package --outputformat json --outputpath scan-retire.json","release:prerelease":"npm version prerelease && npm run release:publish && git push --follow-tags"},"_npmUser":{"name":"axway","email":"builder11@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/axway-flow-graph","type":"git"},"_npmVersion":"6.0.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"10.0.0","dependencies":{"babel-runtime":"^6.25.0"},"_hasShrinkwrap":false,"devDependencies":{"nsp":"^2.7.0","nyc":"^10.2.0","chai":"^3.5.0","esdoc":"^0.5.2","mocha":"^3.4.2","eslint":"4.3.0","retire":"^1.3.3","rimraf":"^2.6.1","webpack":"^1.12.0","istanbul":"^0.4.5","jsonpath":"^1.0.0","babel-cli":"^6.24.0","cross-env":"^5.0.1","babel-core":"^6.25.0","json-loader":"^0.5.7","node-readme":"^0.1.9","babel-eslint":"^7.2.3","babel-loader":"^6.2.4","eslint-loader":"^1.9.0","babel-istanbul":"^0.12.2","babel-polyfill":"^6.23.0","jsdoc-to-markdown":"^3.0.0","babel-preset-es2015":"^6.24.1","eslint-plugin-mocha":"4.11.0","babel-preset-stage-2":"^6.24.1","eslint-plugin-import":"2.7.0","eslint-plugin-jsx-a11y":"5.1.1","eslint-config-axway-base":"^2.0.0-0","babel-plugin-transform-runtime":"^6.23.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.1.1_1529333076838_0.10753439040240842","host":"s3://npm-registry-packages"}},"2.0.0-4":{"name":"axway-flow-graph","version":"2.0.0-4","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@2.0.0-4","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"5015c0acb062fc949dc90c0a65fc4b53c9766a1d","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-2.0.0-4.tgz","fileCount":7,"integrity":"sha512-DEN6wxkhE5r2SHExmL0CGWDoElF88bjTokGZ46BSTo3AoWysTDJ0H+KadTcqgLCBvlgPrGxua64Ww+gJNvCBYQ==","signatures":[{"sig":"MEUCIQChsz3SkgwfRlgLubDZPzldOgylidJyaiy5gLGXtbicSAIgaZ8zEYRTZGNhVtzkA+dAeKXE2CHSNTY5fZfv52OUrE0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbK4gqCRA9TVsSAnZWagAAVAcP/39KLmEHUzfqDybknwvj\nNIEpYH7TIov5c/3YZbQMSm1pyRFgqDh9ZiF3FN0j5l5P6T08N6xyyTE9a/Ki\n6dHZ/scrIB1WuFQO/n9N6MPq6bdWV4zzzVLNUYz/sCwBNol2HtHBNVkB25v7\n53zYhcf14b9UWUmgO1e4XYRexy/lPGugVInaNlharKVmnyaeR9PtZUctTkhx\n43vtd20XIqIBo21dJ4iw0GDeO3QMXIn5ugXEZjf091/N4srRPim0mzDb8Crp\nBuvn0LYrjX6NUPmkqmQxZsHZ4xlXCozF9OC1NvmgPkSSaHBB2mnl/3w7yTpH\nWULHeSFaubgBuM8BbO+ub27UzcUHrshFHTKRZC7BKST6ES1Q/OjQnOOvPUD7\npp5IerYwUt1guEofvZBePImOluIqw3HwYC7CKNTSlNlrXnuJHsoXtp3L4hua\njZ7YK0NLt2QEJN/mRIB+hyQ9V9cvPwYbcYeyaezIVaJDUhGLEnO5tyfrCH2k\nBo3ZTVZTt6hQ1FPO2BBJV0l73W1slTY1AcCMODXtAy7AnhfwMo/2X3ph4/64\n8b08UXn/S5PMbwTMdF/5aA9XjlcYcZoplHd6J08XWTIbNYvt+BN8qRkgdXjW\nlhtscWHX5E+pdgKwCo9M+RpvFVlJxk+zj4kDI9L9DnkxL708Ztjbi4bxy7Lb\n1ta1\r\n=/ihg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies.  Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions).  Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"builder11@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.4","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_2.0.0-4_1529579561551_0.2047672778067926","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"axway-flow-graph","version":"2.0.0","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@2.0.0","maintainers":[{"name":"axway","email":"gmatthews@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"67c7c33fe01b568d3501c6885b7f3f86c302aaf0","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-2.0.0.tgz","fileCount":7,"integrity":"sha512-U8NMcxTQCSxKQmBbc3eAI0xDdGwE5xOMCPjjAZ0t3+RMhptzWX3IdfFsD01ZftGIUtvwfXC0Wm+8aJe59HFFug==","signatures":[{"sig":"MEUCIQC/K5r027AScTq8M4H+1tt/phSy9vtcSAmdX4PoFicwqQIgNJtuScsBv3sPVcef1D1Er/9OGKg/iLTcqb1pjl43wCA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbM2LTCRA9TVsSAnZWagAAtMAP+waVZfyF63m9TAsOQ3Zh\ncxNm6FlwSt31FeI4To1FkFDW/2NumQGRvr1rvbdWnMsoDG0x9hTS+gHEU37h\nZ18pCjgfG5nxgoLCURllkxQ7lIY+dSZrGEVal8SjOMAKeJpro5p0wWInbzZB\nz1p1MqWppkfrW3px+PHrEiRdY5T3avJcx0QpSSzph8Ml+tZ7V7BaDjRWuhE/\nT+welGf+MiR5Pq9Y5dJVRgLfAXXpYRMJd3mQXbW8kCvX6x7FKD6cSV31x3/O\nVibcIyRLOrF4XLtzj9Hc2aczfL9H9e5ZDULwcwN/87jKY9NeBg9t+W8ieOKQ\nMffaXYqeSCUdFOAIU9b+X1nXv+RMxovkKoOH+IomAc76+zzTbM70TeIM0Adq\nvVP5GU+uTd/bdAi8npgZ5dvi2WYdIBoeF9ARt0uZ3ZiA7wdtDeLT993DbV9B\ng4uzXFmZhGxHVXiCKyWBR7phhPy47xDLrw36yrdZ1lsi6SOiCckLh5QR/uTU\ndAQZNCyK1QwuxcLsSLjsYZNO6FfInDODStrWtuw8tfv+EV+jV0fvESheh6j1\n6ADjU0a0aLvZGDkeLBkP5Oy9AkLVopgvl4fFOSBFww0Im2ybyvNURUxogI/J\ntB5QAf8F8ibANrCTWabf0/LMoALGBk9UGS11N9HpQAQ68a4mmN8g9sqg6gof\nUFbW\r\n=BAR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","files":["dist","src","README.md","LICENSE"],"browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway","email":"builder11@axway.com"},"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"5.6.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.9.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_2.0.0_1530094291300_0.193610940277825","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"axway-flow-graph","version":"3.0.0","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.0","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"276b4e066705d1abbc963502696b20ce06919fb0","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.0.tgz","fileCount":7,"integrity":"sha512-P5kU8aAjYWqqK/AHCqxSl2ZsZz75x5iR/3afBF3LCHKENz6cHloNzIpCy4OIxOW3oiAdRdf5OQJRtAgTciHWvQ==","signatures":[{"sig":"MEUCIHvjVK8R4EakCuOSsBlGAA5cnv3TOfyVhUL9Er3Fbb9mAiEAt82B3ck7kvDaNaVvN98IwppHU23kWJ+UnBtSbi2ss/E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfZJcCRA9TVsSAnZWagAAh/YQAJC4NgNlBrHt5RphGWBP\nXLf6MywVMbw9ZVKDxZcTlZvlXz24MojXfXZM72LBSZw731Jl8vAlGMBh/3q6\nxMgDsy+BmpgU2hmVe5vPmcJ3Qfkspgug0s2k6/JDGWu/DhSvs7VVcIZq8Auv\nKvos3HPnzoPeztk4i0rJ8DUsZoTOUI+m832umZnbS1OShDvv8Xn8sZUJygep\n4sm0tfG2iLdtGl8DdWJLOjVHJU1c8a7KS0IsEBCGy2BJcFdwkE3cIDO8/6bq\nGmH4nXzFLBZT3hj1R3cad0hwqaGDRKK6JXV7qJf9sTRLvvn8wewOKHhioCdM\ntL9vC/uJI13bJyBch77FcosZjuyPtV7Icl8RKfOOhXm1oP5w2w2Ct5wFH9IJ\ntL6Fzje74sRo1po6dynWiY0wco73F0UIeWwPhNtE8GrMj7MJKLQvIThs0VJK\nEQxer6QlhMuGH8OKTfira3Z7fQI9z1WkraiIpR5ebnkQ/WMgvPyF5mocdTse\nEJyGPMlZuyxoQlbBsrvWpHUeNzr+dbWvNVLpzMrfMvCSEA6oIbH155c56z3c\nuBJzfnDMe/rz6VkrV9ghTkwd1JIfXXq6ebB/goytp+Q1Tg80UCJPGCW311YG\nmCDaZ77xsPfZ9qvHCfiWGa84VgL47v7nHzuaCjcYcKCj7IocIood/Hwu0vC4\nggjg\r\n=+87w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.0.tgz","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies.  Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions).  Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.2.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.10.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.0_1534956123264_0.40938999487322447","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"axway-flow-graph","version":"3.0.1","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.1","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"c1fa7eacdd3f25060a8fbe20a44b3cf514052a59","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.1.tgz","fileCount":7,"integrity":"sha512-pdVlP0WsTTLLPMUv3eqZLJewA5jmiXzziMIhpNiJywj5Vt2aRHdKGtrob0EjRHjclFgP8tVECrxlkE5c2ZyOgA==","signatures":[{"sig":"MEUCIHmNb1hJkQf0UGcnJCoo/ICZDz5uPeg8MKNs8tkUHes2AiEA9SLfGh2ZuET7uUQzPAvtCG96TRfEsKpKazxAYtgqZpo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfoF3CRA9TVsSAnZWagAAdrUP/2UJSQ+kecjd1G9Bo5H2\nQcySXjpzcpD06Tzt2U9lgwFv89glSTotM7R+eQT+40WzcKxdMSiPcUYhWuV1\nFIhfgQvzuJm6nQhW4pSSRH//JuIfCCZCW0HosERP5xx7WwrhuGOYHrCeic4l\n2TTtC6rwK13Gije3d+WOFlIxWeCiA9/6SzHx77rJbbvqsWVnx/K8/mkr7Gg3\nz2U2jP2ZOW9r/dyYqfRkNjsEDYRFXwkNdnWLemW5l3YlQm3q/lyq5lGMBXBw\nOYzdO4xTD0IEOFR4drEriQqVeETGDMWNheGdM2Bs3eTQrGWsvZWaNmLS+RaV\nmjHWvn001DCCrDHXtq4bvsB6EMbURYg90XuKa01L9IrlMFORiCMboLX2nI28\nRm5htjSu1bkmVzy3wtV/zMvTN6yg/OUS5CchryH6HkAX5t5PnR1B7g1u9KDZ\n8OjtQjJv2o/068Q/IsNMqgeT4uSlX4vs3Iyrz3p81Z2y5bgKSuHv9kELzgd+\nAgbQt53v+aarf6GmKutCYoRdBkrIYJ4pVh7KR3HhJ9oe/S0IwldSYx0obhmr\nZwrBLPvwXQTHmzUf0TTO/XohgoUtj3sLXbKLcNev13BKDwxJ/9Hvket/BV6+\nXZ4g7nSDuhqAn0Msi16LxxISfH2ldgtXvGEQggodRxWeGQIzmZXDwl5bi2oa\njKXV\r\n=rvQD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.1.tgz","files":["dist","src","README.md","LICENSE"],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator._strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator._parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator._addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator._addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph._ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph._deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph._getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph._getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph._ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph._deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph._deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph._setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph._getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph._onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph._buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph._buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph._addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph._getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph._getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph._updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph._removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph._removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies.  Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions).  Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.1_1535017334539_0.7176180575114028","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"axway-flow-graph","version":"3.0.2","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.2","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"4138c53e3e8ac80680bfb9a70eb9a796f05b18f7","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.2.tgz","fileCount":7,"integrity":"sha512-eZgF+SEAMrpO+OwLry24CLZAdTRR72V1jRYTyJbtW9lo/gS/8mTWsVrTSfufM3lU4iI6Kprtgc8/xjv9a5GYrA==","signatures":[{"sig":"MEQCIFoZhxRMEGqiTawUXQBSTmu0YZmBVT6+B92138a469BeAiAWlY2Ee4Xp/75Cy/NqHeSXWzQsuB9SRXalXacL54BTRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbh//rCRA9TVsSAnZWagAAsYsP/0suiJ9eATCFk0F1OlUy\n3QncJObp+KlJaxcOLP3vgVlNc+NNu3IL6Hj6/fZfrOqw6DXSNprC171Ts/Yi\nB78CjXr/n09SypVjP/9f8cnchB2nR78rc0H+fQ6D1NHONkCDd9hTXKh5Ev6K\nXBv2GjIF4BqA2qOsW53H6l6iuqKmMTgtPa+fK2OMYgM2EaUWPjs+Wl5umzYD\nSX6WUkVF3KlxPCqX3dnuunLdF5tMekiXkOK7+bGoR51QObotT8LKBO84NKcG\nbP09Gm1vwlDjUd6whhP/GsdaGomLn9jFTEbaNYjK+87AcO/ROWnhHVRguyRo\nJoIIK7+YFLDYLL7EHBIu0ZTqd7LfdSNoB5ilGsNbewrFIKafkBp/vUDskUG2\nem+0ROkZoJPP7jUUeR48j3dXLSdspkrtFIAI+w9J/HrORnm+RgNnKNIas8gG\n0TrRDHIkARYu/9Qh63nVL1Vey/6pbw9Ts/jElp0jCVSXcRfkwCmeW50IBbDu\nY+Gi/RY94SG+bB6LYdKv7tRwInbH2hqRB0VhfUzti8Z1+F6xOVw7o7mZkdhN\nD/Rb7mq4mvXXPeNOxQxGq3pQZ2fpRdfz6zvZxIIOJEdiUp82DOTQqo83RPNF\nAwArE3t3cZ9ZP7Rc06RWDUtbuPp6pJm2wRvZurLgJmL24vN9I2qNycfKslrQ\n88fh\r\n=dx7U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.2.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.2_1535639531144_0.05470157051049651","host":"s3://npm-registry-packages"}},"3.0.3":{"name":"axway-flow-graph","version":"3.0.3","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.3","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"45cf052961d169cb971abd560bb92af87000cbfa","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.3.tgz","fileCount":7,"integrity":"sha512-+v2nrMYNuGaPH6quIJvQEBW40Zl57EWkCbx+RByIxz1zUMi9S/J23pPrD3vjzROo23t5Z5HB+j5jI3pG0cMHYQ==","signatures":[{"sig":"MEYCIQDgueyLuRq4VIq6E2gaGURkh7DEs9Beuo5ER44/0qvIkQIhAP++NfD4JFrJehbFZD3fBtyPlkmt1fEEFs6Um7ksDwhE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkS1qCRA9TVsSAnZWagAAOf8QAJ4D+uttOy0rdhiCnxFA\nXeoXiIteSydsy9Qik0x4D1b1zm0wF0NyMZUuWAONk5RndADc8Yvq/rtR1Uwl\nlPRXC7IMjyTiYvjvPLGniVkiJLK4TvvTRChAUFOKOXrcrfcfbMVH3mBsrENT\nx39ft1bcQQiEneTgcJi6jzTMb9hpNZcfIVmR9MbwgeNGwVyReWZPh3RPE7km\nObtmAMmPtQj02wal9YZ1tlfUlXYi67MrtiqSUmC5IQg/Nz56LGKwPge8M/x9\n8DAIpURRIINeW8JQrcROtVEFTBsU8IvrXIbXeQc1T/GzJxzuhLs1geNvhYEz\nstm2HNTD13yuGZ8KFNw+/6kcImkxZAuLKY6OAoclAeT22iKUUFP78FC14IHk\nM9q7QDeaBi65HeUgDKIgusi9YGY9vqzooETf1+3TQBPABuRSBRNdMC1IYFWZ\nAQwho0V6ocmSZXHAYlgpRlDnDfn9mFz5FJmCTd6VsAwD+KkLBZBaUD07sEzj\n8O51vnWqP1NFg0B7//alnN0kBC2gAnb1W8cUGTcC/hnqvAIQSWH5OipnSLMi\nvY9ACoxRO1OokP/dZvP+Grf322ZwliRT1iQcmuH4KY6MkrDWcFRADFAY2nNQ\nPhDGiEY+8yAdDHuhA4w7ajq/zyRA2yZePr8IvLeAv8SRQRmuuxnmsDdZ6o/e\n3pEc\r\n=snVP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.3.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.3_1536241001408_0.7704804893807513","host":"s3://npm-registry-packages"}},"3.0.4":{"name":"axway-flow-graph","version":"3.0.4","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.4","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"f068a8794ea7b978089b8e7f8cb2241705369ed5","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.4.tgz","fileCount":7,"integrity":"sha512-utfiCw0bTEX6AvP0RcyNiar+vEUFp9lPYk2me2ORPy+wGgid5giSb4cz9hjhrpv+uYvEXkileC+1oPgX75MNFg==","signatures":[{"sig":"MEUCIQDm9tf6IQC6m1HbLVgD3Bfbag08yJQyJAluYUWG/YQUdQIgD/ey0kdYjVeMmk3PbkVXGHv5Hn3r9KlRirY2YdPnny4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbn+2KCRA9TVsSAnZWagAA7egP/RxcDGOlmzumfiw8mRms\nwWvT3VkwHZCOVGpPHN6agLRqs0kIKVwqTa0Cw37nbm5MriAnattE0HDMGCsN\niH0b8RqJM6+KOQg1/g+wE5i4gIKZDro6Ru3JkM2qirx26i2u/2Z5OD7ecKeQ\nkuWa9tOkuzD50v6YT/kjacUe+el0YiLeXdP/SJP2pvRAmzqZiPGQnCewjnyR\neFRJH2RXgbvxBftx+IVT4G5i8/chHrq+KwDZPKjhJNG5tzH0Kpyq6tudMFsa\nx4j7lsgl2oUb96bivXw/Dgv7BkyhgBKWNEPsPT38SDcW/+ZTx6y3kQbXYb7y\nH3W/sRvJx229F2IRlIKSStXigYm468QuOFwktxmYMxabCHdKzJ+4AMe8ta1U\nwF+QPxY55yGA9NJaHBeMgfl3mto+YtKb7CCrS7Ug3+9h8KkIZpjKmEuIWMAJ\nm6iZN9RlEhxUyiiUWkQUwFz6gY+h6iHCaYoFJVV99oOBa5e3cK81PB+KSoxQ\ntf6ubaHBkXAKf2u2mJs+FIHd9Ffh2HlJ1gdru1Ru47blEiT96DK6M89HdImm\nSTnJVLLX78ReXK1zyULfQM8VpKmU07jif6fwiffAYy56Naip9t4/96umHB5W\nBhBVo/FOiMQFupO5gjjlcuWWmZdXCYct9oNPH62hTw5HS+GxCoPqoFll9bIy\ncF50\r\n=gnoi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.4.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.4_1537207689330_0.560007132523682","host":"s3://npm-registry-packages"}},"3.0.5":{"name":"axway-flow-graph","version":"3.0.5","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.5","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"242af76e4e4937c1b7c6c1970a94ce05b8b29e64","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.5.tgz","fileCount":7,"integrity":"sha512-IR2SoH1bGr+yFexz7cdl0DJc+8J/ucpCnWPjpDuRJXyTUo8MdWTLdx4p/36JUeCy8yYonIB0jT/V1OAkCBjNdQ==","signatures":[{"sig":"MEQCIEdAtz1XyPKcvm9YjgKnFm16oJCFHtkyIBgxRcnn7V2bAiBmo6F78v4GPbPCNUJdU6CDuCbmRoC97j1ChMlMcAiFtQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyY5DCRA9TVsSAnZWagAAM2cQAIqVvyRGg11hoEzmW0Fx\nJTWOBjVgaeooNP92GSRGSFL2/A44MV+FKTKpB7U/cwU+HzrULKY8IqYEOVor\nmQW9qNd7HLRm/Xg3P3obYbXa31bk+ju3/kS1SW7QhN7vIb+1EQ+B3BlT/WKS\nICAO6ZJU2RXU+9l/mloemaIO3SR3fZN5Xu/PJRQjlZoNt9Ib8ZdanYVMG1zD\n/C/CMPIW6leC97IjDVohQRwa7pXOS4INk1pbn9/fn1CXplshzYJGTro1kQMf\nvtZNAXPdQlGFfCLcfH+sPV/ssZwzsN7dujEVEQ1r5xa9E8l6CpzO4VCZLWrP\ni5UIP8VwIMmiYShI8O/V7B714F7zyBvqJkoeDkybdZvSlmX8GK9P20j8m6E5\nMMM5A7eV3U0/VWBW7HmQw2rLhzsW+TkQ6NZCyUUS1TL9vpwZhqeJ6VaWfs5X\nd78yT/O6JTI9S4iTjYwBlhgF0fd7JasX9UAyZJmsbPKNHUCs4x3PGLRCwf6f\n8SFFUuhysccBfmKKTwejToGWlchCnZgIs2iy2g1tGgPP/6msiH6sBycMWiRa\n5xoGI3zyU0m396izFPuSQpBgpurcF0JFsoJDNfoJXhewOuaMva4C2msz7MrI\nP/h4MLCkorC9iuW+zTIT/7ZcRXBsDTZctEVI9KhIoOkWsKBiemPEscMMF2C+\nrsQF\r\n=PSR6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.5.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.5_1539935810765_0.5972327795313519","host":"s3://npm-registry-packages"}},"3.0.6":{"name":"axway-flow-graph","version":"3.0.6","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.6","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"2ebe04089be56588e164c647bb62f2e13a91ac35","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.6.tgz","fileCount":7,"integrity":"sha512-Ibzjqbkn0CswWORd50o/n/IFjQ/zPx3UX7H1R0jzLNkkKtDqsl3k/+KXZtKJCXzEfeVEw7Bl2XyOqzHR5kuD6A==","signatures":[{"sig":"MEUCIQDzOxiinRXC97pvet+jwNKdw+Ygo1FrI4tCEOGlYwkwwQIgIDNL+7iwLpORBUyvAadrPeWcbE1T28WKdTcIMKcuuOs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyeNUCRA9TVsSAnZWagAAxawP/0AsG+bFiYYD2cUdWN9Y\nN4wHYwNnDeopNTzJEwso7G0VLvb4sNcLOabr7D3D0g0SXY3y2Hp3zM6ISETw\nERcpOVtCsHZIOtqg59F52tnQ3t20mMoMl1e87GWBwFZY9frn8hIiLGvSl7cB\nOpo1+nt5vujQzU+8QTBcQv9JN8ZsKkg6U5M46u3adwU0eBAipyr4zakFTOQA\n+nDvI679YuHoUPQa3mKcrGc3kizckbnh7rRJOi1VdO0SGxXDK3vDb8lcM3uj\nkYwH6kney6+LQkOzm6I0XOdlpBVyZ6gfMfYR0w/4YOHuFqR6vkFLtZ2OWf/l\nMln+WexP0UfVfa6s/WbZJsMNBnxcxNClECJD9k13yB43lEI4iba8BvJMovzY\n7Cx0szfZUEpQumQeoUA6hhYQt5UZWZsMaWglfx3RENtAXa+dsf+EXi5udjG2\nAEkP18J823HD69OR22I6vj1qazUDJwfgvoVlS2LXZQvY5Lq7vp6dr+V7ifXe\ngcFaH7+Zh26wrrfguOEnkV38QJ4Ipqim1OGIG/Vyt62+aw2oOobQs9Kg+Ztm\nR7Rh0s6rSE1J98wnbr2PZdZ+1ZQiV5or1cs0DBs4OhJ/m7BDr1Mnnk92f332\nSDUvq6+1htzNfmLVgcVSL0XJk4NY6CkeLeCaqJnTFrcbj8Ap1Ud0K3vvo3F1\nF4He\r\n=oMA3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.6.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.6_1539957587287_0.8360072864547365","host":"s3://npm-registry-packages"}},"3.0.7":{"name":"axway-flow-graph","version":"3.0.7","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.7","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"f6b8fc60bb12a0073390a1083c87a7140a7fb5b8","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.7.tgz","fileCount":7,"integrity":"sha512-uSpvjkbk8UQsRxo4/xvY5VntwrmDzuwA3XjXmYyrV1Y6AD9w3xKIKVb31aHytqOloCUibVooIxSH8Vae5HKGqQ==","signatures":[{"sig":"MEUCIQDnA1r8rtnsuaKqug1GH/xZa5C37NVxq2PREhtActP8kgIgAL+Ec3dJyXSDUoNxNU8x0ibZHNJyDGTTr7Y2/vN4Z/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbz2NLCRA9TVsSAnZWagAAKEUP/iiqL6FNxHR42kNmEj6F\noALyQeX/vvzuBy6uhJP4k+5sYkSH6d1Zx55mFw3dh+rV+ITH54Agn4frPuuC\nC8kbAl+uijf235sjCAs9fctPDyn8dExMa9oNCgSIxKf4YnofSbk6ZqaCt3vS\nXNHJPdl0zgHaUyhf0MT+GLK7AjNeQOgWSVitLZ0+hhByzid9//GQj9ylMWB2\nz2/Qj2KgCdygRI9JhdaKdgPTuAtDRHRpCJ0JUC5IVuYlG3iBIbZqm1AYLmuZ\nzyWTxN/2xNnJ5qjXpv0+o6IQRsBdobT0dwlX6NePmVcOG0H39MQE/iilHQrD\nWNYH+1ScnK1fkiK7HhuTSUNZOFQcKbmH1wAsQgRItmcHcHbD6g0ECDF2ioyt\nqqlv9/vQv1VuxCWFrBZviejqq9jT3/QIoCsuAX2mIPBdrbkgJz3AmjeJieZ4\nJVt/ms4DF28o9rLZtN39vK77lyWVul6FmseZj5Ape9cpBhYtT03qrhktS8xs\nJZQEgrl/W9FpZT52mJ2Zjr/9qlEd+FbYc348o4381pMAdu6RqDggOxpwhsOf\nJdEFJRJ3IIioIOwI4eFjgfF82M+HTGr7ccysJvNKncPmKSYlrW1SLfLVnbDY\n1lavyyWKrdo60DlqMTC7g71an9+Luht5sOOvvNTHB+OXJmGh+TSRHOMlOylr\nyEcc\r\n=v1Rc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.7.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.7_1540318026859_0.444680157618236","host":"s3://npm-registry-packages"}},"3.0.8":{"name":"axway-flow-graph","version":"3.0.8","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.8","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"ec31f7c9d09133ebbb9a025480526d2e007898a9","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.8.tgz","fileCount":7,"integrity":"sha512-WNGJB6ZqR9WMECcpgZaO2nXCX5tpyU3O0uM6p135zZ4ea523G9GbY+Fo7H+7NmKhoUb/DkdJJczCIjr+OSJS1Q==","signatures":[{"sig":"MEUCIQCWEZY7TLpddjQwaTqj+yIjQ6g07BUTVHH++ibvkt7QogIgDkThdczJeS3CMTOsEFSa6iKNskQr4OZOdFGDoWo7Z+g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbz4wFCRA9TVsSAnZWagAAXdUP/0XSoZb0iJ60bkCkXR7e\naRy2Y8IDfuOZgnz5TGJuw9NywASwCXQ53Y1nswBmMFQMZkao5LUVEj8+iQ//\nxzOaYqSEMFxhPwh5yiblm+cQ8+B1JMxnRXOcwR48EvGhwwLvXTud2yU4hXtE\nLGqlZV8T1xfzQvMRDdDfjoBN/2UbuGmnPCxhVgvO9QZnPDInHJZ5qmvfAh+P\nmA5vLNKbldx+tqAHaS3WHIXeoUVCNEphl5bzoskePZ6xudYQGAsHnQuPPUDZ\nW75YlpkHHkkfBbJlRhW0CctZxBAUFfa80HY7WnJMtClHFgYoaYp3Px0y1vlL\nQxksFRSJuCkc3sD9KXRx6Pe0k6TACd+PxTJpYCAE2+SoMP/gi8opP11iX0Cr\nf2C1hkGbnxeOtNh3f8i8eTgZKYtr1Uuz3p8lWqQZEbwFPaaVRVV+OML7Bse5\nwZZuz6p4ccX4BZUex6VpJOb5E+SU0X8gtmi9HPXRSzKIUD1E6xyXfzFB8JOX\nMmBKKGIdTUec+FZrcDGhhOBaPN24GUrxNqrkCrVFiGz4FPpv0zsPN7GaTJNY\noBIyTJh5KAiOU9HF7HZZJMcSPjr/gtWr0z0yZAzAh4O1dRwu6O7rhEM+1lHj\nUqlndGqsJSPtJzINKHGZZsguWILv47piPFg+gi896k5NHhdKqZMtivFd30MK\nVhAb\r\n=w73C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.8.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.8_1540328452100_0.8075515425661186","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"axway-flow-graph","version":"1.2.4","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.4","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"0a01cdc8f9a149cbb7756885837e0e0dd9275bd4","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.4.tgz","fileCount":7,"integrity":"sha512-C+NaMU/9GbvXUghfLj7u6ToLNKHR1hfNU/CUB7BjqNpSCGc9wXs6dXU7MHJnSbXwME2RZmliuDGgjfMCq3kUtw==","signatures":[{"sig":"MEYCIQC5zxBqG26PeSjdnjZghVdn+vjbhkXkjtZ549me8L7EaQIhAPoUFvAYGnRP4qrOlKunbC3pmAMmWW8MY9UwQCJZSJM1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb0eoDCRA9TVsSAnZWagAA/FEP/RLO/PN9yV0bKcFCru0L\nXaw2t0mVvUvF4ZTO3I8XvMj2vDvL2q7nEk3NsTGFgOBY9EizFncWc2yazPZq\nDzKDERTX6t3FAZzY7/btDLJDVqcUxsYAPXC7PfdLoMuysXLO3MDuOqxoCSEM\nh1QAG0f3v/cTXDv31m2Fc52VD7Xb/JauTkZOM4DSn7i7cmvQ/JxdUvlWcNwe\n2AEvNgsj5DYJMlJCxb9pZm9Vhvi/5ZWJIPf6mGh2p+4Py8LllwDhJGJ7FYf6\n9vy4xKVOL7QPQDk4wvmGM93Xl+Fdtlkkw/ME0l/qwnlcV6LK8jUAQaI+ju1p\n5tdxUh3wjRfY/pPd6u8X0my5DZDKs+WFqYQOkhy5W2fpHSW7FAUb0V1/xmG6\nFhlLXOP0Ds0J3MCKshSQHS7Fo733afzQwwZz8a4E6jUMi1V3hsm67Gf80vaG\n4b6Px+eIoWAfOnTkqLMbjnO+D3wc+GowGbE5ytEU6VAGixwxsgA3nPSH0seH\n0B2nhmc/7G92tp3Hi9B8TuHjjPrcEGIZHZuda9Rd0SwsgfqeBhYHVAEY9WEb\n6HlFiBn6Sy2CfuKjzZRtKXN28lkOUTmYEPwhj6KOAOAw+Fz1z8+Z/JAvpRuC\n4prYosWEIYC+jMzVZJLJPHkKPFiFIhOiQ2rSs2Lemg7FFFqc33Ql4530Rw9W\nUvbb\r\n=6L9n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.4.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.4.1","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.4_1540483586415_0.9962839161350461","host":"s3://npm-registry-packages"}},"3.0.9":{"name":"axway-flow-graph","version":"3.0.9","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.9","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"955e8f8a960d58124dda17c9e05a7bfc6950aa14","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.9.tgz","fileCount":7,"integrity":"sha512-RD16najaIGIqYVyctlLgkAnu9/mkWyoFv2wboevGbEsCakJKq5q+cpmGaz0wj218wuKr+TSN1S6uG3Lt30K53Q==","signatures":[{"sig":"MEYCIQD053MJjWlH5DJEjJLdfX2jjcoERWH95nCA6VC9ThkMsQIhAMO36PCbQe5H77c5P1lQzSgBVRWLuWq2jCiplPFOZ+LT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb1DL+CRA9TVsSAnZWagAAiF8P/ip8KXdRPLGaYK37aTyH\nnq8IC9BWoa37MCwLHFrLlihwoNvR1raGLaFVrrn2P7N02OG1L55OU4QLwWcM\nGcMXoCy7XDIzvH5Lb9EU97QMMU6KEA+O5cBORRs80zFoBlQcDsAAyAzFOYoJ\nl/WGS2zaX7ENQd5G3tNLpnk3awT2VQxFZ3UfBSQlP8HOm5W+6y/L8CI1IR97\n1xk/CkbaotsYOqtpdpBo08GUE6wTA7YOW5CY0EWOiO63B+BoNsFhLImXd4fI\nqmc2XHa/MBxxLtzJvMKeUZ4vIYEyKawyN+DTmixGi8KhBkOLJCCh3syZ4cur\nTg2n1642evsHOXAq4+W5mXeYDgi44QGhlq1K+UDTfpzb87md15gS4UVEDdPn\nSaR7gVCpAar/AAruN16b+w/rRKtBQo2QZ3TKHJK408D6WeyUFFZrpAPv4jFh\nIzr10z/tAK33ONjm6emo9tlANY56fZhL94i1Ax+2QW1o1uWbOqXNw7VE0hzJ\nByOWLunulKFCt74HT846elzjtwJI0Vlv2ref4JMZ8U1LmXRQPtuR1dSvR/kr\nfZUKUBX+c2wih5TEHlNSKAy1wsTYg/gOGebGmlvZsUwzGTXW1YTUkHO/qCi4\nvCT/uWCVr3pgfK5j0f82kAHNvtbvOFWtL/Pa/pZOXz/iezJqeHlbOW6jang8\n4WSt\r\n=LbM/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.9.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.9_1540633341599_0.7751174173023736","host":"s3://npm-registry-packages"}},"3.0.10":{"name":"axway-flow-graph","version":"3.0.10","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.10","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"07d4d0af6c07f42471dfed88336cd6a577112fbf","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.10.tgz","fileCount":7,"integrity":"sha512-Ypps+kdDcQOceU8e3Pdwol9QMmJ/qTeAy/sdRCeOMXfrwpZcRM3w1sjBZ29ht2r4RGYb0XV0plf1CccQ/R6XlA==","signatures":[{"sig":"MEQCIE3yU4vqHJ0mAeulv/lyhgaAS+6goy1/JA0R3nlSx9R2AiByOTqyzqC3CTl4J4qv1tQGRvl9lXmyTrBDYNOQtbabiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb1w+0CRA9TVsSAnZWagAAcJcQAJfvu7dPZlxVI5ciZn7Y\n2t9SPD6xZUBRz8jpbWEIh2pRozBQh7VqhCJ/0+rcQ4gDjbVqCsAZhqI14Ukf\njAMLKVCDpCtgJaoSO9EbmQHo8pvznT3n25qHcEIlwLsYEbG7u4on8XeNl9pw\nHEoei2YcWgwy5vTYFPNyZ7i0ORK3dg1O3TDuOhfFJN80eMOoZMmsMpkeQaUS\nT0Deh7DUvmM0kKNDY32LwaWuV6p8w8lf1wXnt8YP01YXbw3aTW1ONRF5HC3Z\nwEjvOrcWDPofIfaPvjq2SOAfAtcyuHspTgCv+5e7ZE1i4A+fTaMt70HK6Y5+\n0eEHB4gzDBgGRRl+MOk5wSJ1DAM/i7PtL/JNCRe+OmGDjcUuQyUZCxPxXyhr\n/yFeiXXRomO0dzu/dkfdUBtooqP7S/COKUFij15a0/P1jY36E6P9ERbQwRcK\nXsjfATeJr8k8QKT5FBq4pkZuE/SPvYUlTaFcxz2etMB0g81BuTdxiA+ACND7\nuS9CXbQsPZxU9aZ0XmuWTZxMCemrOh9pXYdZE/snDg67iSHSXh2MUYGp+1Rc\na/y37qfJpOnywemwbcBr9TIM4ujzBaXxvRRtj9z738/tjXWv1I/Lal5TqEPD\n4TOHmDS0J6rvNj12b6XDMw+v6CA1Trdnn6RwBNFUV7z2qXTXA3R3H4KYrVwQ\ncUc2\r\n=kENM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.10.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.10_1540820915751_0.6710714943501987","host":"s3://npm-registry-packages"}},"3.0.11":{"name":"axway-flow-graph","version":"3.0.11","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.11","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"68ce0fd62db95cede715de3569d2a72e51a786fd","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.11.tgz","fileCount":7,"integrity":"sha512-fYoLwrk1S+dASec4B9Ius8HR5OmaioS/+opkxJ5tWi+sWXFL9dBPfBBo440goi2HfmHSZ+Ine2dAesNmT0CQWA==","signatures":[{"sig":"MEUCIQDtuZBxktLCEzzxeqv4Yq8xk7yrVNdPrZt2L9uIKdnZ/gIgRvrxbYEpjvBRkpFkRKkXwdncdGIbjS7WkAc2cKhRzRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2EqzCRA9TVsSAnZWagAAJykP/Ay324kkWHel3DEXCwwc\nCjuz1zGl6pWeJqUdHnc6RFZIhdF302OvHTGPyNFjpCMHWLE1YmD+jkegRJjl\n0rHIBV05/f5GIHjRmbzrxN9fEac9mrZR8HQh5NIF1sFD4oXxhwfyeLKry443\nK4cCIlQHWmGmCuKKxUseptxdbVBBYRrnWHbqIh8vC0yafOvSAMValNGRfPnG\n1eahrNl2Dnpn1NEnEzY4Hru35QGK+0gdZvrcJHpTPOR2HoyIAtwW1Xnioo+N\nhe1akohMsfrzXY9LYp5p0h4795mqiITOc6njTTsPhdyYXY0iLQbK/OifY55r\n3gS+1x0QtE2xQLU8r4FplrIZVmF+EotdxTwBuCslzByYliMrBpmY6Dt4m6/1\n4F8rhG+inkFOuUt3XQqKd+okPt198uyms5rM6gPHlvFxX2IUIr0+HvlOg1AR\naSi82b6PUeG1PntYVRG6JsIa8zM33imsawA8fNIoeZV8YBuicKeARHZqRXbQ\ny3P1d02V1bFB+5LJa+T4HMIqBS0iQ9RfkcLewRxQ9OImiB4zAgdCJb0qaKKa\n69YsfJNYBFPwATdoXl5Cr2dabFgzVoJCFqtvQUpXMjC9toV01d5TsUGzQoFW\nIbHEgulyvFP+in8gyoLbE5paKUn7Jc5Gxm1kWarLs2bE9PfAESED9ETvBWjv\nWzfn\r\n=/vbp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.11.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.11_1540901554781_0.5981214803462735","host":"s3://npm-registry-packages"}},"3.0.12":{"name":"axway-flow-graph","version":"3.0.12","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.12","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"992bbd56fa67e8b55bf4f28e1eac2c69637fc8ea","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.12.tgz","fileCount":7,"integrity":"sha512-l+YsojiW6OBipzXcP9MC/l2v+b/gupYJUmX3iT0EoxG8g4tLn8nD6foSfKVlE/23zH+m6MaY03BPcT0eQsog2A==","signatures":[{"sig":"MEQCIAlNA9giyKXx2z7kXSAMBL4AdJSfTREAJ21jnqlEp6hkAiAb32U0VnqjUxfwSsSXt077S44dwqeupTfnUeGV8P7XMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2FHuCRA9TVsSAnZWagAAp4UP/190pqS0MpBzWFocFPxt\n6DhziVvHh9l3tpP8yPGgGNkivN6JXh0XmYnQdq+9ya8E2BqkX5g8WB3bdipm\nd5/qk7757R/w8AmwPylfgZXYO9QAezytf11eg+pL1z3qz6Mx6YuLkVTDzXo0\nwI+MKnFKSy9mxfs27cSu4p7LjNcrzkOezzLJL28a+d31EvmBwGC/yzT6ox96\nKrgBruyOGnn6We/ZYLdlAkd3/myfIzkpkL0aHn3XVtiMH9iVozek6MtSVGNg\nDfcswCX8JEeMdqdtHmgPQTdJlGHFdna827oejrm8OeT93PS+u+5sWPU2QP8I\n+Bq8670k0WFmg7FLTPS7ZW3pup6zjDs9go9VI9YSxHsHubLPKFQF7vj3ScIO\nqcgDV5GqyGaNik8q8sQEf7vR4qYG1BvS5NfKqsf4Z8yqcGRva9z44206FSWc\nGJazz5CldSKWMXEwfgcrMqSdXPpUtD+7mjzxH+oE9Lt73ag8RFhR8dvWy8fv\nQCVCF/ijHbyy23eFz1aK+Gt+ifzXYTILVCvfXE8LYtPtqXdk3UQcby82phns\n9LZ9aCmJM+uIyXB73+ts1lcFJngCIUxiHR+RRKYpHDL8yTG7ZH5kTu9bi547\nTRjlUSmUKAwTNFeH60bTEEu9Bjp54UuScCopUpZduzyKFijERCqFJSJDgzhO\nqka2\r\n=2FR1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.12.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.12_1540903406243_0.6544824993741765","host":"s3://npm-registry-packages"}},"3.0.13":{"name":"axway-flow-graph","version":"3.0.13","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.13","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"62ff117ddd50c9814c8ef15759382f1c90870a3b","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.13.tgz","fileCount":7,"integrity":"sha512-zz2GGIteeuLFzAyNfHJAVmAFt8YsfQjk+6vXUNpmyzOsUmqGvA25+dq9FpLuGVKgbJ9AzE8tO5g1xGJXUQ7npg==","signatures":[{"sig":"MEUCIBCtGEHGkCJ32eN3xZHj5xR54qZsLBPCTVP8/Exf0H1QAiEAiyIlkRd/T7Y4z4mzpLQK6HD2zi8qC2zEfH+LqHhcBpQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2XWQCRA9TVsSAnZWagAAKEgP/A57nolIDlG6z2Nj5Kqk\npNdjkb2SK96KPQVw2n/3dw+mgoc73S34mc/GtMr985fqsy2RL4UdrkIChzFt\niSQKTo47IazUZ2xJdA53B8Ezq2Kg5vKDms4fJabPIb701aRRqeOgiRLTX/gv\n5ojiZTIVqlERzLnB73w1rVj+Td2s1lGplU3iUIBDyRkjtiztYyAg9FZzMUF+\ngr83ilnw1YO1+CCyD1gfiy8KwuSXb6NbuQb2bo2WrSGNVZbY5sjw801NtnnP\nTOHcZWnMqmtFgIdqTzOW3Lq0zKmaastUPE6k2oFPXOb+ac+DwsfkTZNOt/Id\nKtvECCQ96i0CRGfmWZawCl8br0a9vblD2gLjUeACQeCsEzHrgCeTW/ZemV3W\nIKlOSZG8SvoLWVhgiXxoCYC7615DKaWNLNUNnr96ZlpzNTusTFv0NAnp/QPU\nuFz31hegf2ytdZG9rYUBKsp+zbvrI2Rfiwi9mi+IiboQKs4TVI6e+biYGAxx\neCRxmXxHWoDPONbUskCnpO22e4yjnTvM1JM8SobNI1kQrkFgLh0wdVlq1pib\nzSlKUYyhwXDJbODJ/92kFbU7BOZ80Lqk5BjNKe8xZTX0sef8Ino3+MzKeVVu\ngUp5dN53rDKJO/rzRx9cQivF0AOobzClW0v+gfxnEW7XG+3coNKu5kAaipdM\nKUAJ\r\n=zJE1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.13.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.13_1540978063752_0.9705515564779574","host":"s3://npm-registry-packages"}},"1.2.5-rdpp-5320.c71483.0":{"name":"axway-flow-graph","version":"1.2.5-rdpp-5320.c71483.0","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.5-rdpp-5320.c71483.0","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"6bd92a2e2a38e634ef03ec79a4779a63e9c33482","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.5-rdpp-5320.c71483.0.tgz","fileCount":7,"integrity":"sha512-OYJw7s1b34fNKT3hHtlvmAETlz3ciYbLUaMBE5Ulp+EJdTWzAMmigqAxeDMKCu9qv6LBitszH7WHccFVo+/P5w==","signatures":[{"sig":"MEQCIEFJ5iAjs6VqzmqFfUyHWJfdE7klui5xjD8wNxb6X8IVAiBomsBD73gyR3/YexGxHKEQ+4eO0+VTesSzgSDJ9PdIVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2YgcCRA9TVsSAnZWagAAXzgP/1zZR8gN7DJRrYT95DC1\nfOfhUeQnidGnVEezWUg3U+Y2B7rdWsQ9EEOw8FMpH3jjBAuncIbRB1kL2FWb\nMmq+FeNEOWvBU7W4QmcYCx2xGriWacEjZBGMVCJSSGU6habanx9ZuFi2Y6+k\noUBtXgmm0YlMyaRGRm1QaALUwFFukR21g4CZ8eat1rgXgtk2mUaJGhbizMO9\nQlUXjA0teaQSLHN5iLvfKZodMFMfcGB0nh9HGjM6huW3zs2wl7jWN6vqKuMq\nZ2C1+ZhqL94fjt6sJB8avHuOypzxc98lqWFGaZC4mIFzDgSE67iiAw9FlyVX\n6aEMcBv5xP7QkGKVnfTJgwAnezSvoIcA4h4Phb/nM2EhTd6XsFEK3ZUwCllF\nGANEJRmFSFgOB1Z/cyFOEOrNRtCluxABfiLDCX6yehqjlTTKtqgp/ZKpHVa3\n6zLNmMP3XIa4B+O7KFfSnEP1jOCy95HVNPA9f7R2rGHQUs/CyeppQFur0DvT\nhD2kueMLqdmZGkUx07ByGwLPqfkkdma/p1OEG0iy20YU3DDhBV9ub9BSPrLd\nW1Ucx6aiSXFLy6qH2QUsfzkslXewfR5MIf0laFmm+yClT+3ruJ0w7+sG1/HG\nWSjeMlF6QawG7hn4EtjuoDb9DM8uZLAtMe1ZCKFeG3DMjXfjJhxTJHACyLwa\nwwbM\r\n=tUst\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.5-rdpp-5320.c71483.0.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.5-rdpp-5320.c71483.0_1540982812331_0.05098886865008412","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"axway-flow-graph","version":"1.2.5","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.5","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"b90f5500cdbc8989a5f20400b5ee5333ffb8e274","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.5.tgz","fileCount":7,"integrity":"sha512-b1kOkh2DgMaIje8lgQXrmk4IEuv6racKEqxXfY/xF4zk8pQ9wzzp9D5BQtuv+hq0AFuFw7RBMO6x37eor4M4yA==","signatures":[{"sig":"MEUCIQDISOOAuqzpaOWBYYxP6Aks5WabgpJ6DqqyBP8GleROIQIgbQwZ5k4gXtmHP0Fivd8FTiNrZ3pgNCsTOiEghHnT0Zg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2YtACRA9TVsSAnZWagAA8YgP/1mCQi5LhOLdx35dxK6Y\nC9LnsuIi50ca+4XSam9I90J3SMm1V7VSKQQk2u2dXbBTFgJx8lL8YWf/feC3\nrwOU6tSOGg5EM8f3KiOQ5QGsbK/Fr0pBYElzVd8lz1F3zPg8ZImyb+zxc9b4\nMzzKQaIO7gEa/ZXWj1mA9qNS3uPl19heqclVtXqiXeWQ49yAl6dR9OlBWgkh\n98RxVsJ2frRDmHwpcx2T9prQa46YOw8LSED0wX4EBm5jPQaynWrxdZ81kEj5\nxeTmTm/frsD7T34jNgmv+FxsuDJASdV76PYvn89yyYZ4F5U9kAvydKx+oT81\nCT+tXpWm0wPqlOklfRw3VsGgKZVD1eoYHUynhL7NSKLNAnaXJHI99xNvpp9u\n6uPYKM72sLw3L2TyKDQaIO813fNxCzS9/Ef+lW6aYfAuEWvOcOQDJYNs9FlA\nq7/eo4NkOnpT9nj6RUkSzdpeu/OOQAfkUruZetE4g9aW2vJhjXtoM+7tTav5\nuKJbfoRW0tjrRIGj7jZUS3kkYMLCtVlLmJUZYE3v8XevyLDw0bsM/TiJWg6T\nAA7PuA4b8pZOAt33qq0iXa88Inrkf1IoRgvl+bUjF33r8CQJ9YGmbz/iCxOu\nWiRGpPhfRkLaJ12a74jhqmec596tLTwWf8rCCiYsKx2Z//LyazbmEe4w829E\nnxcS\r\n=iSi+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.5.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.5_1540983616407_0.22051590448127922","host":"s3://npm-registry-packages"}},"3.0.14":{"name":"axway-flow-graph","version":"3.0.14","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.14","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"53e71cbda04643e6c33aac6ca7dcfb46bfa9c803","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.14.tgz","fileCount":7,"integrity":"sha512-I3CfMyWxM3TSX/LYW/khTpU36mOHA4q9PWblK5xJxZEG+bYr4zmtNYkWP5kBr91CuR1OARdPU115WG0bYu1Kqw==","signatures":[{"sig":"MEQCIA2lhQgtkPYzJBdFD5AxproIvo0ZNlDGjfx/geqtSRQQAiACxNcIKFjM7DTZdIc0I39cPYZp/qlJPuCJC/rFb8s5oQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb2Y7tCRA9TVsSAnZWagAAHvUP+QHkn0OamNLk63S7E2RZ\nAMcMRAfpjtCSvqfH2W4Rifgqm0E38B27WeAV1RE4SKeqtf8LY4AGTOT0w4qC\nnHUCgZBmwIb1F58IayiQKmA8sOGjXAVoUits0MosC/eezwMdcO9I1PlAQWYa\nbwsm3ioBSe5l8cLJBOpm57mdqth1BKZzFkUzZF9QPzpSeO+x6Zfjk1RK6inZ\n7vruPnAPoDAk4O/2BRA/7UrUE3YEWvP2uBh2AnwONY6KSFIdYua1DBQ/rhNF\neRIrOmCQts0sDxzrp8ITN7LLKu3cowVpZNR+kBONbW4EJpZQXVR2I+50bs2k\nKslQB4NQhDQse6X2FSYWgm0aod8U3Alce+8+63dB54AoV8WW/kl28QP46gBj\nV9iFKayULXaCeVkqfMChNFh/oZEx8HL43gqSXuop4sT0obEtBRga29BMzMR4\nu+U7m+fpOTuDiIyRPllGUTRe5gcmKqmGtahCiIgUSxuj7vl4OK0h2PHJMdjM\nFRt7Omu8UYr4X78wS1OfQkUickzpy2EoVLY+1x6gxAjsrWVTyQRjLA0CRF/Z\nzbsMpZLh6I33J6fsT1S+xK92MkRuTTaFJF5fnOVCjwKj0PawQ+qZFIUvx/pE\niJ4kXn+aNAmL7yxYEpKeTyBkD1j01vsQnf039P3uZgzFhjFkUW6ZC8/KV+S8\nQPQ6\r\n=akMe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.14.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.14_1540984556902_0.40567876784809864","host":"s3://npm-registry-packages"}},"3.0.15":{"name":"axway-flow-graph","version":"3.0.15","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.15","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"c3947d518672a3ff502c230ce6c06f957220a5d9","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.15.tgz","fileCount":7,"integrity":"sha512-UhsYHR73Y+/WzK8aSCQyUW1Zn7FVWdtstZkDibvMWNXdS+cd3L9ESWwF0QJ5kyR58DCKGFxYh6/KO1wYLNrNwA==","signatures":[{"sig":"MEQCIBwvR2AXBLoHmkGRMByPAwJinMoQIiYcHS9u2Eqga/PJAiA3Q460esv2Gvn/OYu6nuJ4wI/itLjkuTWBcwkUPUvOEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3BV3CRA9TVsSAnZWagAApQgP/0VLtyv3Jcc74K7nYF+y\nwDyDpB+zfs2DudYYQF6hcbE4h1s4WbJ/zeerrUe3XXjx711+76Rwm3vPQSaV\neQgOcXY8dumLVXqinzYe1vu8xBVny94PpCoDj3jhENExVsj0/NYKwPuvYcTN\nkTnTseUc1Mzn4eS2Prs0xrz2gde78ksZUO8HXmKaKQui7HatLJpdwMycSV5G\nBXUehHyaKzPp6X7FOqTBAS2gXv/Fa96hjRouw36xkHTLmQki+aXnhPtjOkvy\nBvbIplRwCvavKu7Y07A5Gcwi/JAFITHcfoWmMTl+42zKcRNd9FGuDpWgFlaN\n3MSwFSfnMq5xF+3EvmRaMbKro6YnrkWWfbC+Q9gHZErDt1YITt4c2hZGZTDn\n1wTOeXPk7RRhbvaf1LNxTpwqUYM5sBhSox5h0DaFhx8TJitt4vRfHmgc5AJx\nvDlMlXqCiYxdkO4o1MSo5OXHQjnwtPFZDtwavbu2qEDzYRCaP8TaxzzIrpYO\nIwZH3W+q0uazPvyDC7jz/nFc1Ht4ykEFW9SGKcE8RaEdd9Tyx6WKqfOcv1Vw\nGZAbWdFvXXzIu9ROyGo6uY/aLNnv/TfUrVXNdJYmOuVmp9mru1LTGU+jSomE\nrociqmPkwn+UtB++9YBnO2Ipr4y7V9EfA3kalLgod8YSrTVrq13SmwAY7Ije\nnxbN\r\n=JxmK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.15.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.15_1541150070860_0.238314466545696","host":"s3://npm-registry-packages"}},"3.0.16":{"name":"axway-flow-graph","version":"3.0.16","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.16","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"96b03901d72c127182e6f1bf36d9072aaecdf818","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.16.tgz","fileCount":7,"integrity":"sha512-spTzqH75QuDzXmC9fmAsf3pc+3dfqm5n+Z5gr4t8gFRz60EBO0bVo1a9/CVgWO8gCJT0X0naXJYBcPcx1rkCSA==","signatures":[{"sig":"MEUCIFR7r9foFyYVSkZYG1ksgTiyvz64VS37qxDBUhyftPaHAiEAtIjxdAmAP3D8Lg8xP+EPVgmCLkDHFLpslBnfMgCb5Eo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3C01CRA9TVsSAnZWagAAO1YP/2RUI5lAzONdkxUU4/yG\nqUsMc9acAx4KbNC2f4/mx4EOwTVwH4nl9oSq0M31Wjm+t4mW323XWM/eEpKt\n3vMjbVQPCi99kFnLnGrKySC6ocrEf3rdBvOgm4bppeKkbhB6Ero2lhp9ypXL\n9L4KpODBrbLh82Zc/Ro7iN3pmbthcCIjkxYRaEiN3A5X06GPmlbbAgrilE+2\nDMQwT+l92NfxirF3Ry2Aks6LqgbXXRzeft/QA08JQEEBATstayCACYvhn3j9\nPeQMN5t2Ex9OhsYnS/+W510BqVHw4nHrkUYasrlCrEsmAIfasKoc+cK3gFSo\nhpT82gZ0aj7L/ot2X/3j5kr/De2vrtPfIU1D/AkBkuEQtleoL3jXJANJwAmT\nZm6WjaaKphMOAgLdHpP5+gW6fIlrBJl86yPVy/vxYg0OnGlSyo2miKHGSgKt\npJ6QDjX7oO8eT97CyrhNb9KjvggawreOm0tAlLfyNU9aC0wzDMIzglO0+YG6\nQwvNPptdf0opow3mVvQjBa3syflZu8kXeaot2aAVSuSh5Bo+C1z97K/voA8c\n0JF/XEmWpPshKe+RLu50rHXf8LBamLhKgfwYH9NuSUSFCT5K1ruG/SMMS8Xq\n/3sN7ifOtal08eQoG58fxeG5MJNvcya6s0SnfuHnzgPqgVJOoYsnp4v0YNr3\nIWdg\r\n=Yg02\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.16.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.16_1541156149249_0.45341212613072246","host":"s3://npm-registry-packages"}},"3.0.17":{"name":"axway-flow-graph","version":"3.0.17","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.17","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"c9308e097d41c86a00ddb5083811618aeadb3c33","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.17.tgz","fileCount":7,"integrity":"sha512-gQRixmGDbNF1eivlh9qrLP7e02KmvHb5Aut1ddGdMxSc/+oQTh2K7k161e2CZ4faeR0xHiYJXCTj4adgebSgzQ==","signatures":[{"sig":"MEUCIQDnpTIGyCFMlTF+qy9qcNYlXLpyfarF8ZJDaliu+oNchgIgEHJjvjZuMFy726etf0rOdqTLxoJIm2v/4fSP+UlZhFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3FTpCRA9TVsSAnZWagAAxz8P/34mhw007PT1wKGQ/MO5\ngSfMYvVvPRNiP21fhK5E9TM6nI7Hp2thOqSu7+Fmp/O3M5JxChR9TnplyFIL\nrO9KKZCV0iliGGIqXTDzUJDXqBGFOQrDi4S7g8nVsgVBnL6nurlLbH6zRAK7\nrm3KZ5uUyr3S75217GqhTJKgJW2D9IKczgK7z/pOYNFZNXBb/MklLpM8do/v\njb4Jpo6j/raoRvO8kHe4Q9AZ5CdhwkzGhIFaMU3On6ltl7QneA59nRcYCgje\nb3EDTznGeBNLVg8s6s+SLYr0PqrC5ISVtRR9cACGamyZ+Uk2/sDMoT6Ov6Vg\n68ibhLh+BJQy/6IjpLtkQJ8Wd8M3fsQOL6hTv44WqVz+xT9S39wm388bYghf\nz5031LrKunwvYNeRQ2SRbm2JCK8sCznHhkNFxZ/tTmMMenP/HCPkqqRIXKbZ\nwo5eaOyut2G/jBu4c44fw2tdCLqKOD/KJIub9Wvbbbkunhm35LwWdhvO5SK2\n5iH+I21gquC/zVpYiHlCtywefJYAHD9H6Rra+U45h+KTk9P7bZ+Zy5s4U8Mz\nMds5h7NjuoI6TuEkf6ueFogDUj/yuapu+9Kddx86sbvfNJjoUzLXJOfeJEja\nrexd8Hszc186CVweGCHlGmo5C3UwVVTh1u3+6Rp3sMAZVrOKDl+PZWAaskvS\nRgtk\r\n=c60V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.17.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.17_1541166313179_0.20990255298738836","host":"s3://npm-registry-packages"}},"3.0.18":{"name":"axway-flow-graph","version":"3.0.18","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.18","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"88b5c81afb8298002f74b3f35e429bb1a4a47b0d","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.18.tgz","fileCount":7,"integrity":"sha512-rZ+h77gDYJXbvQ/aQUOAuktOIldGjP0qa+0job4EwtIFKDO5HEFFVezRy6n4h0MM3KbR9xSnCthk46iAgZSnoQ==","signatures":[{"sig":"MEUCICtAD5HOJRcRaCWZ1PMAzV1bZdMCQiGqrC5UtZTWkOS3AiEAqlKUV6YHgotDXumNfhXnmFwYKo6U3RMT/JnVLyBtroc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3FswCRA9TVsSAnZWagAAAx4P/0fL+m29LzOeYZmDJmlF\ndNfWkKL1Hshv8ICe4FZn0EX/Q14rJ26NxZ5YDW1ujmOSSSP8m+/XEORAd7fP\nl/Gpabsd7OQACCA83XA9y5EKQRCnllvsHXT3MQlLPQZ28X341qfb3RToQYl2\nBBv34YENpoYqUDpQu78RhjKaKm9S2CG9PoLCATJkr5U9iukr+Vjf4zKKmvY1\naN5ekr9NZO2N1Gf8fbsrp7EdXHa2wh4mPjhg0VvUPsntGtbcua9ZN6iDLfO6\nP6Up5a9OFEbjmVbu0cw4lEr3k0B71sZoppz878Zi/kjI8Xn4mWPLUYs1nIDj\nosTUytEKvBym7xysb2MJhZEcRScFEIZCRFrwmhxWhWEZlRPtq3ha0GdyLGyc\n2D7sxAxCTYxS1XAtGCuKtDYdMaPctHkW4s/VGCCBuCvEM/RXI0i55loNjUoo\n8g8Vyd+tbqDQduafd343oNnPLK0F7MgnWn1Tl/+zYoalu8ThfH9HK/D8EqmL\nz7Trchvw8j7Sphq41nCVhd/c5oyBub4aK2OCrRWaU1N/AAF/qwPd2BMByGze\nnxm+2/ev3MSkJ7vC2nIpdSma76pvk6GSYPqVCMJmXgSfZto35CGLgDx8QSu0\nYeFJUjArRaIVqkEgLuNp6+t/bCZUMvEKWvFDq6i4CoOmqjxnsqYMVem9Jjmi\nhqge\r\n=z9pl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.18.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.18_1541167919550_0.36212547727141575","host":"s3://npm-registry-packages"}},"3.0.19":{"name":"axway-flow-graph","version":"3.0.19","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.19","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"c809e8f430d2f7fcf1d0dc02573adeaf654264f1","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.19.tgz","fileCount":7,"integrity":"sha512-SXOpL9MgsuS/56inxMvBIEDV13CNlEAf9mwSuA0/1+qo62vbPoNIQCcxYWOcmX+bwbLqyAeFcq6TqeQzTUhwfQ==","signatures":[{"sig":"MEQCIB8NmdbLVaFVnytGu6PZCDo/cSMi2DTIc5BGLeb8e5ZZAiANL+9EwhK+gSD4yWruVSOGo7fakrg30q+x002PGOlLeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3GotCRA9TVsSAnZWagAAfk8P/2+DNBjrKtYNYJIV6nYe\nzZG72GEMutAay69jYSMLv4TyIIN8YHzZsszl1FRJQQJikyHdPCUc2D69Y6Rl\n8SX5HwJn5PkZZr/UijhmhC1e6XZIH36sGtqA57xo/HY4Iz2PgtaU7aoXA8uh\n9b0L1LDjXOlMrQ9fAvelopZRhyFoCIlCHjNRJX3PDwByv3iG83hf59QSHrle\nW9n23sDRwnQOfimtuNSlzbaW51cjNDcl7oVIYaot1j+rtXOYOISHeCxZJZCt\nhGu5ZKZRRRa2TnBFdjfY2uT03gE6HHDHFNKyUpYSCUMb9jOh1ARjSvKwgzJc\n5Fhjmohkfyml/NeTCvK/HUWqMhEZGIyjMwfa0mapBt9JspjL5lyVcm0XHHRx\nFc6694oeogWKCPoPlaU8w0gnd2hgF9/nVUR+zUyO0xG8HnUjHP6qNG0tkk4B\nJS+r/lGdq6Mst9e9et0Q65Y1C9fekL82tAA4s6BDuaVI5OefJxsJkQHYGY3H\nbYu7lAWvJJFnxJ+sfE7rrnwW8mUvrMK38fRTszlNthWY76u2GznGAZorsE2N\nU43ZdyXYZP6WZCmLi6YUmlhiXg8vDsokipH2rwThrhqukaNVBKyx8Kgztnh4\njca/yZz57QOXRobyLCB2VoUkgOyuva0L7zc2ZpI5zYvsU/5LLv9NW+oB73BK\nPoJN\r\n=GqLN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.19.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.19_1541171757221_0.42925227525861454","host":"s3://npm-registry-packages"}},"3.0.20":{"name":"axway-flow-graph","version":"3.0.20","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.20","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"578e3433534d062d7e43c1414292dc22ea2cf3b1","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.20.tgz","fileCount":7,"integrity":"sha512-jPOgWGekoDArql2J6n0F2Zp6BUcytQrcvsBp4xnM+ArNKIUgd1bqxAEJbZSNzc3xQFnuvE5w+L2WnBNhYZFDrw==","signatures":[{"sig":"MEUCIALe0/yOZTBWwHoX4xRSkKU4qe2CGHxXfMEKklgqs6jpAiEA1v6aONwWBTkeRcPoGUBwYz/4V/JFcKuMMPH+DhxaW3c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3KLSCRA9TVsSAnZWagAA8+kQAInhVDNsLRc2GWgWggPX\nYguMImTfS5ZyLkw/QkzZGw/ZCWJ0eaIt0sI0hUAXNHOOtspsr7gV7mAp29M/\n80OWN8L2J56KhdmMyJtNNtEyCZlCeW7f3fbvQ9pUC/GgUX1O+NOA1t33Vi9S\nS9OMbN6+NGpzqt1Bs84NE7ox4EAxYl/NGy0G6h7buwlaW4NqsvPqhHOfD9yf\n6toGbzHMhIKZ6wzWZVfwE1cs1Cq4ynwxP4i7+Tm6aiBYG9Ul2DYCeYbWa9zM\nN8uWccLue7DupLdpwcSrYP5MKEZsQeQE/r4+7pF7Xf6l3wwf+PhLODt+8M5f\nyG+v82ixo3Kg2CLVRAvWFjpIjyZvJfP8Ap53EHtzSYEk1DIP6pw4IXhcXD9O\n7MwBofCXJEIXjie8dNXJz63JgwFkNr3OBG93fcwYFzeGJrkkB8RB9RgBhUbt\nIRLykmfhHv3ufO9w9UjTFBXLz2jL7VUcL3bl0oTWdGEiBrwBbzQSI3i1aObQ\nmvNjvY4rcZUtIjJjJN4udJBwipL5Cm/BfKtiMwNtuqxEBUUVIvnZ6wa9eCAS\nVTMP4DfGbnSEhITAStcHdwU4UgaWb3IXlUqJvIPASsu0nCI1G8V3agopxzyW\nW3//lG8qBEUls6eCzpIRlisYE3lYPewgDdFiq72ohkjE94Hzq0KaWTruAko5\nXWta\r\n=BvuU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.20.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.20_1541186257514_0.32179813147282665","host":"s3://npm-registry-packages"}},"3.0.21":{"name":"axway-flow-graph","version":"3.0.21","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.21","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"0edc794ae79f2e6d48675e08cfff830488ec0518","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.21.tgz","fileCount":7,"integrity":"sha512-kXaJaRxGtLRIXNV2rJ5tGgS3hbYRHgulGIR4kdhbpONwKQ0CXBdWmcz5JcdDkhbGa4Xo1NmEMkBARdps6ql7jA==","signatures":[{"sig":"MEUCIBZ/e1VhAnh8LWNui+AdJfZp+k2gMhspc4JGZCCw8GtoAiEAgli4XQXWUvfkfgcBq1j6KBu9Vg6rYtENkdW2BmcXQbg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6rzkCRA9TVsSAnZWagAAYmQP/3Tj6+9P/VqNU/6U1WpI\nL8Ati6daTPl9FkR/7Axw5IsguaVcLhdGrXQ3R7LZ6F5FALSv98PH1cXFwHdN\nquDmo0/b/2y9NkyGwn57Weno9kwDnHHLDsXwFUW1KSaDgEvONAUsG0AdH2ya\nM/SAak5f/TV7+vDRg7kga0dHTc8a0aBbebjxoPOpZAUNF9jnTotezSvcg7T6\ncwxcmzpTeUn4rN4oMHX/JRvWgV4oKPR2srXFfGiDYnE/Y6SARenTo3WHXu3e\nlINj8y3mWQGBFNBoT6JHctT44tqhoAo/Jk9VUMwQWyYhLVfGW7tM7ji/YOb/\nZYdeXmcB2lEdvXVCKZKZrkhDf7EQWMdwZshurZ/tBktQ6dsFNfudFcc4vVKo\n/GWNTj8FNYZ02HfzK3FM5JMTanzOZuppbxNPdJjrQrcxZB2z2nwXCX8XnibE\nxYcyfGbecgmzM8Ch9i7NK6Fks020SSrljCHfcSO/fTwnltfG0t4DhwjkLUZg\nKKtfNnxgLMdEa5DejlS8hhsDtbrwrXnA+T7qweFXRkcHiih1W1kSth48s6vr\no1jiwOt11aoHjIbH+YO0IUCvnFwyJdm6qelqBIRHs5xUTM/pYDRS5hfRLUDZ\n+mK41EzaDVGFQMFSUjlWvl+xaop3h3WjxvbbMvKoVlqVbWUcmIcHbrycUnZ9\nKUSR\r\n=W6OP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.21.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.21_1542110436129_0.6208979259416154","host":"s3://npm-registry-packages"}},"1.2.7":{"name":"axway-flow-graph","version":"1.2.7","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.7","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"e2626262429e99edafffe5c4b2062372af06c9b8","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.7.tgz","fileCount":7,"integrity":"sha512-j06Bsm4U2VQk9PgBX46BgjDx33eJj3uKFQk5AvQBJif1ajhlf6/ptd3Kmsg0iZlltLonkRKleXi4PZxgIbGpzQ==","signatures":[{"sig":"MEUCIQCo0jhniUlZdFEFIlvJ/IyfsPUeoZ8rZ7y2zugbl/ZKLQIgXrKGd8AHAYnrnn1LoR2GKSCUTnsc6wqwSeO13sgEPbo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6vNxCRA9TVsSAnZWagAAk54P/Rs4XweRaajFArxceXSA\nt9Gl9gJlo+T9jUfl1hqA5FiWLT57YNvpieKfbIeLBWztkEHyXRaDjEfsGZWs\nwUmN2BuSzZlfc5lM8c7i2wk8nKkbSvPuA1aJyauJQYTHhpVOeEvUN002XaVg\njpSORVjLqD0VstZmxbXM+ETFW5FW8/InlO8MZZQXmZonbfVRZeorYq0dqcwD\nCOMULJZBtbDXvrtlUSCyzo0ClcEGDNFJHJky0wfXhzvfm6mviFfMENyfB/YT\nW0ye7uJthjZsmqt+/h/0ur9MQGkRIxQZ2ZtHLYv00dRFkB6DQFrFq7wEEsq3\n6GX+L0d+c4xYRMb1MoPWxHrXw8amkNv32E7hM4pA2oZzjGWty8amU6xPLT9m\nF06lDgDK4lFkp7pmGyuLmTzltz3hCNcn7K1tVU87lSE2O8h6zVQBp6GYdI8W\nE1n/B2DwDqpdoVYS310rVIGCRPyL1b523NyXRvBDr9FKYgP8OOvUG7n0EmTQ\nnhVp5Zh0NO1kg00ShoSvTcAzEI7IIT3ZF4obd7ituf2dyrfeLucIwcP3eNs0\npL++I6J6Hygl9T6jJ9zEbAeMEX0eFspCKZv+w+VkoHFGfoqeyJm7zEay/+tk\nNG4XFAk5KAlYMMeL3oGrJUogM8IYk0J7bK9ibFYeoN4YCTdh9nidhFdCbAXX\nCp50\r\n=RzGJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.7.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.7_1542124401110_0.36268229102791216","host":"s3://npm-registry-packages"}},"3.0.23":{"name":"axway-flow-graph","version":"3.0.23","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.23","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"9b4db9166083b0515c5cd42e06c003bc5a0c1491","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.23.tgz","fileCount":7,"integrity":"sha512-2S3rUY8q1f/Lq9i4WgWgDeqz3RC/HUT8VlMLhdg6sZXTjarurd6YrFfWcrUdrDfgVnnCgEGwDJu/ZGJu7D1+2w==","signatures":[{"sig":"MEUCICSur4wf06+0HarpQ8YQ5+VS8VRV0ynWh+ps0HWCUqbeAiEAxE1RwxCr6N0RO+0Xd/pm3pfek9PUt1+D+NVAdIGUZwg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7g1VCRA9TVsSAnZWagAAx/AQAJAbj316HprEbNcJDxIq\n1BHK9pjZxaMrhTjNkp8hbB9iREtn70dPPWVlL21kF7Xa5MjgZYK4n8YiuEk6\nMP4o+t2ijimYqXwNL3kZDKG4RuTcLZxAHwULW0y18DRShgDddcrrVaKLJMVF\nhJxkxLoMbD4haNMzbdrHt/2UNAo9ZE/h5VJ7/pEXC1cT5jloYDR6bMfJISVJ\nEMddu/zg3+fWjfG+2nxpbukF13jRJ2wHNUeCD85W4ZDyzdfGFO8IkWn18SW9\ndVvIqBkFc0+YKGPdhXB8iVwN7QHurdpx1j9jtO6+ZSqmDvXL904WG2NJfyLp\nmSXsFBVA5dHrqUkL7gXWtDiLI11gN3u3+Pwb7RrAnIpRTlM97rGYoc5yQBl/\nVsprF54FJUjnXC3AnK6pPFAryNFfgQb6ASGFV/doYGqKb4G3XGezEPo2Xha/\ndGCyN1DZlsDcl36/jm+2XgSvA0KQiwr7JuAJ0Ops1vX7uWKzKybeNlI80PfO\nfoJhTDJHuRkRxNNW8xmkJk35ItIWvlaR/FnVISZGe3FCJW8BjK1pqtftHuhm\nlHv2ApAvFgDHllbIaChjM9aIaK+f7+bmO8Lwm6IBFyYG+I8e2CvLVkUFwEf1\nrlJd/Uk2cMSupoNpg//nMEt2Nqu2QdNmK92FBU7pyrnixNSRMP/BsqAL7QNF\n06LQ\r\n=47Nf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.23.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^3.10.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.23_1542327635626_0.8726286195556883","host":"s3://npm-registry-packages"}},"3.0.24":{"name":"axway-flow-graph","version":"3.0.24","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.24","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"6ec8f691f55ef5898e42bf56392d4cb0335a5e79","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.24.tgz","fileCount":7,"integrity":"sha512-ffNdu0Vjzy9p1b/z814268M/jQ6kJE6w3MAYfkPA3ewl9fSpucRuZgdaC3Czg4Z4rPLTOskKBqz8jYeKM3cGMA==","signatures":[{"sig":"MEUCIQCnje64kFbcVysq+rJNcmUWrxuoFyOv3pKnQznDCS6AbQIgP9jU5uyF10rJHGX48O7I8JoJYltouUwV0SM5ASBYvPM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPLpECRA9TVsSAnZWagAAoEkP/0oajBltK2/y3i6QCXlz\npp2GTE49GvsacYn/cVDSlJhx/MoNUcD/1xVcgoJKPGMt5bgIP2xpMuPlOpad\nidrgqa3TNd633iJ/8wOmf4eIMUWzr/E6RcfO/lru33L8xpfUDjGPt9pY1Y0F\nuPYDy5q8lt/+N8uu+OM9SuXDxA2zsuYJEnqXrRbFARs8d+zXJp9RzkL7gz6g\ndvG51D9Fu4MeHuzTrhtRk/GxrGcdeJdx1kOjllhGjcPt1jpRhKVqcUVBX538\nC+1BbDM2qMc28Mue9KmuofTwhjFc02oSVoeD1166ilyvJN7EVK5zr8a7ihp7\nC/aaPFcU17SDwRB4vIlDtH1bPxeaVsHc5ZZzyTt34C8Eknun3U38MNpW6EBm\nnGwrxuqF8xzr0ZN6t9owaiDg1w1uPDW8DV8EkH2kB9PECqFU6/U/A6HunzLh\nytP2njlvabRI0RyrmORvAtPdYcQjcy3g9k4iueM564YNlNGhTFof1gwssCCr\nhCWEyAhY6HnAtYmD+2eLf4mYiyMOyWP5KPMaqjU8GyQ1jz6aOSv2Tpoqioyw\nn48NMM2wyGUjCX/WNGQqioLCr1SG3OzQXYx2rkPBDriBlzpdZ2Y4pz/7tEOR\nHFoaHtUeEIhiHDCd5/ErtFKGNg09cGEVVxHnpstns5baBbK/F/ISmmYNBAoD\nVJdR\r\n=W/qJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.24.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.24_1547483714900_0.46307520285592774","host":"s3://npm-registry-packages"}},"3.0.25":{"name":"axway-flow-graph","version":"3.0.25","keywords":["amplify","api-builder","axway","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.25","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"68731d0638d0a02869538b92a6723397657b19fd","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.25.tgz","fileCount":7,"integrity":"sha512-2G88OilfjcMM20hF3lQUhuOtRve1UiHHZVPByunE+0s2ZkkYcRr2N4r014OPpLkkA7tNj813B622yHwLM1viwQ==","signatures":[{"sig":"MEUCIQDb6XvzYaMlxKv487LJ5KGyrNPaO3TPrH7B0dniRXNE7gIgMxwCC2TH6qqgNzxd6J0IKvpAWIDohXpfblVPTCPMUJw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUX9gCRA9TVsSAnZWagAAZDMP/16EHkNpKaCjSU2jj0Tv\nNtGvD17djWK8uKc0CUvkxz8OMt68F0TX03l+goBYXM8YBPSURe6f7ZmIRJ4f\n9Fk/bwqNpA0F/LypCViKhBWGbWvj+78LiWjiTALfIyJeJvUM92i7vPkQ5yAt\nzFt3wQ8vjnLtCZac0K/5X7t/3Zx+c6JYBlTl6jk3EKxL6Av/D2RYQCa5I/mG\nlPG0Ez1jSMfV+KuCXp7mK1/8gUldmkUUBqoTMqSNghFwj8OhlKffHzJI5ffT\nn9Gstt4AW4FEM/4+RLO7IZUFHrl0X7XxF8NKT+4fFMoLtwwKcFdTt44B6nYh\nEwtwv1Oqjjcia7uNPEbFnIZJbHIJ6iH2dUh0XP3TIAQ1U5JtEFdNV4dstGhQ\n7zHJKQvU0FcS70Bv8Z4kR2VCzr4Fnk3BxYFIZmudGWgx+OLCxLs/QOF+CP30\nykTjoQl+/BWmT0aSK+jIltpmgr0ypVODayNDe4szyvSBodAGsupi23QlRipi\nL/MCbiIM1tRmbya0lrsBHpx5T/US87gPK8xIEDGi+L4o0zI+66AyXEaSGGie\nWrkVzujy32BlzskjYSMKkgDpE480mmVwlKZAp+cFPdmOERO1+n3oWCvTZQ7j\nfRanhKjxRMwk/3g8NRg8LkgIQhS8IrBRtUiExIDxM+nWbfrGqESGzXFLmj8K\nfNLS\r\n=NFjc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.25.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"9438796503a087e721ffdf13741c780ae93d4905","scripts":{"test":"shx rm -rf coverage .nyc_output && env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.25_1548844895715_0.4527578451704022","host":"s3://npm-registry-packages"}},"1.2.9":{"name":"axway-flow-graph","version":"1.2.9","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.9","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"5ea680619d62595890da3f3f1693d8dc56c4259d","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.9.tgz","fileCount":7,"integrity":"sha512-V05rRhp3KX0cOANFhnajeEaDxUYbcGIu6epuKBNwtC3JdmrQrYLPHnukDPKmOpfUqTGWr+iEj8Z+L3ULpkJ5sQ==","signatures":[{"sig":"MEQCIFEkSR0G87Ez+TSnUtduMWuy+CqMbVKeq1epUO1JksNYAiBYVKBHg6OhQ+y/IDkDexQSWlUXZ5AiM2oboCY3zbsdXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVCZDCRA9TVsSAnZWagAA+BoP/2nnvchu8psCzUP0Me6j\nS5qLd0TQE8s2Sc/l6eYGjTX+24fHKyKLtVBRYgpe47H960nypQYs9dGLpoqq\norQRSvFRqxFtqWVs0KX+1kWeP2YrfvT0Z2NxlwY4iV+iusTZ+lowuGTdF77P\ndcXG/H3EIKg56VtMmN4tOISGfR8UMM6WNgiAKQ4Uma4U25TpKhsUqyREnS2e\nL0X90dgWXmetkj7b80IP383CzGH20fzalwbUOaUp98DwcGz2upemc3zPOuOx\nAmncxN6DKnDBuyBkj9h9gyqPo5Kyoh7j5VGxpZlaswKwiQ5Y6tUK5wvnaFe4\npdE4Cy7LP7KL7rykeWRSQgflEEIkWMHVSTVhBgpst9c7kS9JyTvSvLbUhMGP\nh0IF7FV+Q2X7m0fg7MYqH9vFO9I4xyBNfm89bYbtv5EtZpTaLj+sXh5mXfea\nr4atAUl25XUop03pVJJzgGzHNlCCcEBALt8Z3339DbR60WdFbfT8tibyfyxj\n6Qf7TXEQHcewH7PCD3KW7wz5/QcFgZFapeupg+ZgBUpnlqRhQ5LV0o5YuV6u\nZhBSa79nqZOZG4ft9+pA0IbHw2fRPuANe63WbjbMR/9re0FCGRnnaYBrOQlk\nfMwBPQ/l857L1riZuI8IMmFDB67e0IzR7CgtF71+osiVBhXpdxBNmpIb/yDV\n/76F\r\n=YduD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.9.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.9_1549018690602_0.6093488947865902","host":"s3://npm-registry-packages"}},"1.2.10":{"name":"axway-flow-graph","version":"1.2.10","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.10","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"bd3c1a10b2b9008901c8a0d18936aa25b677e1fb","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.10.tgz","fileCount":7,"integrity":"sha512-d8a1cHQ9EeMwwuJx519EY8LbF1KnUU6FLQvdPzC5yXwGbGZI+dXgylNsqwN/CyZea/EIiu0Lzkm5dIIuZjyYig==","signatures":[{"sig":"MEYCIQDJhvbMGz20Jgyno5zIXTDG2IXA00WRknDEGP6bUKJwHgIhAJJfXswf6k65G6huzwL4rMWNZnngfsrczn8wjHZ4Vlbu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYZbeCRA9TVsSAnZWagAAhwYQAIMM5lmSjmvDGKoKXqtO\n/JHTaz08uwwV6XLlmsWyT/5/k6hp6v8oSdMFl4AYhj3RyGXGItOXdNiyymLS\nTtAGxip5MustAeNZar+qDggIg6nWkA8FLU/9xXvC7Nud2CbetyUM0up4ENFA\nsGF4EkEZ5DOHuuKrbiPcpzeHut+7nv869NkayNb1lDI9Sqxts0AR9NODehum\nLYqli+FU+BsTRya/+xgNAZINfhJI+AJzu+ql2bOCIXZC67SWkEqvENI3t4ul\nVoVRRA/Jdjn0MauRSldCVAWYgbG2WjlbUzd8Sv67n380UmnFu0Nwb3p1538N\nhIqnbijzUy5S1hnfuFyoIp6LimZqOJ0m421I1kLuSflIYLy2uBEjohuQx8dO\nENzpyi66C6KsJDzmtWM5L0LTWYuWNBDi+g7TwnKsjjvq7Ifw6xgtu2GrRax0\nISchyqJTWcHwMredR6XhKQuI3AMzfCoSXb54HXsCdhpw1Z25JyKgm9ld1JaX\nEgXSIrIPgPGsQuCAmQk7lstZ04u77u6GULqevrhI5iOn5d8kEHqXDgweMUJY\n5p0RGOMMw3fRPHWn7Augp1eF95WJscaqmn6O62eyCQCIrha4LY7b21kwj1Ew\nTwPnrOKBKt1OswmKU94V/Y5WDRQNUKSQk7mcN9tYH55dgJ3h9oMwbgUZqKde\nv5S3\r\n=m+LY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.10.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run check:used && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json --no-dev -i jsonpath --entry src/index.js","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.10_1549899485555_0.24819874279734755","host":"s3://npm-registry-packages"}},"1.2.11":{"name":"axway-flow-graph","version":"1.2.11","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.11","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"393bc0fc4fe7b9bd19d80ba98a7a6a757b7bc713","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.11.tgz","fileCount":7,"integrity":"sha512-PY4zdX9I7rRbx7yx4hZUf6vRGgSO9VMwGqnq0wp/usjOt2QgqF3HlMgi8dwYdk2kgeI2yNZG4AdmrUv0uoe7wQ==","signatures":[{"sig":"MEYCIQD9gbiY9pLxPcKBMhStLgNuKlXQRNJjQ1bSW6GcmwVIuwIhAMTz0qGnmKQyOVuZyQjcA+3e01Xz93nUdiyHuWKhA9m9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcZwYwCRA9TVsSAnZWagAAZi0P/3tz3PLv4J/TReAs+Hq3\nJseJO2LwrYW72clX1v7+XSg6jUrmyV/2V127m5syLzs2FONeztqpT3Bk6ULo\n/w9j/Wr7BUui0TCkqz18kN/jeavQ+e05AyoNClnpUTwfWiQes898djHCWVNp\nqz3bNXCBKohtgClPPFcgWcIIt7E+ileFoWykxn6yLggyjfK7y46YoDqZ21ex\niksSPw2Z1u2VQ+v+8i0rTruYpcZBP4eU7D8dpyz9ZT9VvQIHM1mbtFjfKAQc\nE9iXw0hPNnuP7lITImfGFiJYn6FmkCGDukWaS0pPlu2YMVVRjZ58xvbkRm56\nZ5MuZBF6E/sNXgrHSou92r+6wObQlQEspgzVICeDsuuxARS51seiLne5CC2f\nzspJqvTuOovVPB2vW/LEPNv8HbGXUnEatDXK2YIlY7WHKa/OhDZIEXVn71i4\nKRKE2fE0H218Vh4lTrSYWrpBUctpBisitrzns/kiTd5pAi02iKiBdHxbKOyV\nSJdsmQYa0HSEdXLr/hh5n7+R6I9Hqy0Bte3Zv/eDxy4qIk8j5NY3/icrHl+3\nModeES1zSRTrFTPr0GgC/632P6I9jOnORuZEWw7/lc5+KSnbBb7tDheEPXs4\nbeYoN0Z4BwIA1XIxxkphG2K8CQMnPWaGLH66PNMxfhA/6ohNWxNlnjuhLEy7\nlvow\r\n=WbNU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.11.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run check:used && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json --no-dev -i jsonpath --entry src/index.js","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.11_1550255663525_0.890286983872588","host":"s3://npm-registry-packages"}},"3.0.26":{"name":"axway-flow-graph","version":"3.0.26","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.26","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"6e5810eab7d259fb2e0eed17c379559980834c22","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.26.tgz","fileCount":7,"integrity":"sha512-Ubi9EoxvLHSIMmHvht6TIaV/n7e2jkucfNOqSZZLZNUQR/F22sxQ81QcRps2I1FPTi7YIdAGLS0wKcEsDXKRbA==","signatures":[{"sig":"MEYCIQCLR4IUIN2JpEy82hHPHTGjA97ie8LkIzt7VtmIPves3gIhAMSx8Hpw/Lnq3fTC4/OvA/KLu8Aju9cZ0l0/fuEtH+5Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbs6qCRA9TVsSAnZWagAA2IIP/i0ESK5ZxB3voEoZA8xA\nALHkW0CYTqcQ68U9TTe+wZHNkQ9/mlJTh6gtF3jMHiR+LjnZhOTaEu7sDOsu\nz0AuUTwAc+7PkAshiFfQQWnA7GJXG1w4EXRRsg0CV6DafC8ecWl46y8mp7ye\nXULjDlLx0giz8UavmarONHFeElFuG1XZNsFCZLd29Hca+d0vmxyGpIDxgztl\nem1B8u36hrcQMNIrjDX8/1RASXoTKoLq5YVXaOPIk4/+gkFB/nKE9SWiA+6v\n64kcK7Yn7dhGiDb/74dEDf4inie8Dvgt/j6AOK60Y2Z1HRmuh4BoYACZhOQx\nbisTXbZM4moMhOnJuDYvNIvUCm+LDnCpaurDpgTYm232IMH/0kbFFGooPWy9\n//HJ41EE6saq1pb40+9J6ot2rBQxArmkRtZtz1rwli7ANTmfHHO+XHcq/n1y\nF7EfWfLtQgwim7BUTTDqTqW10glFrg6/N/m4aH4YbfUA0pU0QRAJgyajDyfo\nu4EodVP/mIhAzDHmt32ZeuAne1vgW7wUUl3TNFSxaAZkTGvUWRYA2OeCm0NX\nTtN+hqWUfVXthGal+WI8TperFrXlYXX++CzKm/9UqwV5SjVWhpFVBsG2Ps/M\niixGIh1ev/izzklqboU2TGBjS9e5sZ5dkosXGG69GqNQnAc+RAs1qzQN1Zlk\n35+6\r\n=yWoe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.26.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"ca8289653d4bffaa7f6432ecb1c9a7938f70df46","scripts":{"test":"shx rm -rf coverage .nyc_output && env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.26_1550765738252_0.3626140303630221","host":"s3://npm-registry-packages"}},"1.2.12":{"name":"axway-flow-graph","version":"1.2.12","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.12","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"70834b0fbe555adcb37e12a6559902963c2cf928","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.12.tgz","fileCount":7,"integrity":"sha512-NVJKtRlHqG609UX7D2jdIsch8spmYdOXS8m+/8fLlhSuSUIjyl++zQT+NicxkJKDPQ+AbpZHRhAoJUnmMWIWpQ==","signatures":[{"sig":"MEQCIGYoid3pdUjbTrIacdeGyMwUQw2RkquoIc2k2xE0gpdTAiAW5yP+uW/9FDXd8PDnXTGr/QgusXmd+89nHgSA8UDs1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdHI0CRA9TVsSAnZWagAA+a8P/2Q/2rlGJ22r+EAZzEwU\ntBq7F6Iua9Ceu9Rv/w7Juii42K7IU691/zFOy9M//+mUau7DTcAOtLgDOwE1\n0uYtvskGvkI+bHrsWFlCLPMw7+JZOYnmg1hfj7OovySK0BDrDGEW4g4p8kVb\nrPolw0a1rhzDTSX3BtYfR1YBMC+ZrfmmXBtW/LisTE9JqkOdQ7bWYztMw9Tj\nAGEtZtm3/2ggNik4REQuuwW8VDplXThc02Qj0qEY0KGKLtIq4XVEryBpF9dY\nVOydv3gFG+Mu/tmL77FGo5TNXNYX8WouHF9MX16TiOZprCeT0YtPO3Ft4L5C\nCxtRnPN+1G6SUCUt6ipmTEY6YJwj+GaqOzitaiPN6QEimo9AuQY5FhSQhrc8\nIQuwRdoH3gMr8WLBfnmnCPMOxCrrHj+rTlkT81SNjBAVmKy10HvSH5caXV+I\n2cVinnRXw5x7/y2P4eGwYQ+mmtpqJ6KKvDd2PToOxT+X5Fny4cWOuANftdEe\nPRpmnQ/iBOEn0P8DU4nK7+S9KdfJqzXufTGLgmCNzaXApRBi/7HLrHxrPySS\nYonUBchsd7qxpQbQVNxxRXPQDnGPCd/15LDaHU4G63Z4oz4Au6mNJdUx58ka\nxI9GVDHZQ/UF0n8nc3yqQspQty3P9XDFP3KolRyzo6nhwTxSt/uwFwbvyADB\nYxd7\r\n=7R/1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.12.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run check:used && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json --no-dev -i jsonpath --entry src/index.js","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.12_1551135283934_0.5945966087632126","host":"s3://npm-registry-packages"}},"3.0.27":{"name":"axway-flow-graph","version":"3.0.27","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.27","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"0b18ac5d36ed56f000f5c2fd04707ff6f6d1bebd","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.27.tgz","fileCount":7,"integrity":"sha512-IpcNE74Hvw0L1BWqHHJMjCA+fbTPNkMcn/zf8QGmH0g0IWOGwkh+HIZP6OKmLfwTUPZbnzgEgi2fzMiDDLzEvA==","signatures":[{"sig":"MEUCIQC2vw0XDfVqR5aRz7j5AREGdVhBWLlasMS9hzO8499PfQIgIjOR980jcDJ9nN/w1lLILd8DNyU8RFjjk6QONcd+YTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrHv6CRA9TVsSAnZWagAAbJIQAI2Tf2MZ37xq58VOOmak\nBHz6bhDXMRmgwW9As8Yfwuh6HvKblK1V8YURuvcbiWIAUbbV3uDZZpIjiMBb\nQ78esslERvD5xCJ1lX4lupSfaKxYkRkOh8kyKMNsfpeJ6E88Mq7QRWUDJjeh\nWY8xHqIaqAC7VoFaXx0aH9CGC/X1sH7D7FD0R2vafYnbSUJEQartIfyrzyC1\nu4O1UXyQoP2XXsdlxgqXriO2VQaCqzDaSaAZaM32c42g00uSGunSdYmiiLQ0\n5VQjMZZfbgUf3gqAvub6lyyP00AwfV+YbybJQwpKX9DFbLNMkn2z23fLVyft\nOFwIRoQyewJ24BwjxLT5ydamySw+8phKBi2W81uTeVBBgKE4sgt4ihTmXpS+\ndHE2fm+8Fla0biuSh10r5JvbT5wLYE+ryrL5Hp34zGq/LYeqK6UfXWdkOGG8\nBZUswPJG6hn6v7JYcMfzygqjB6Joy3cEj1AeU8nppliWOCapo6f6aCi0o6JA\nOnvM4qC5LDtc6O3a7P1iGktpDLhlBo6rk00LUQ3C4rXNRg8CWg4NzxMLrUmU\n1TuzjIhm3ZnpgEDcdV3+985L+xBkri5ASeFaCBasJ7y1VQs4juRx5nnApjuy\nVduLDy9kg3GBYizMqgAqVGYDHl/LTqw8bGQ3xY8ydtJFuiJjqhO76brb0DZu\n7j6x\r\n=JvVZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.27.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"2f166a575c38859a19cbd46d12c3fd86099f20e0","scripts":{"test":"shx rm -rf coverage .nyc_output && env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --statements 97 --branches 90 --functions 97 --lines 97 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.27_1554807801655_0.7821776531599482","host":"s3://npm-registry-packages"}},"3.0.28":{"name":"axway-flow-graph","version":"3.0.28","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.28","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"3936cbd7f6945a966487e1ceb4ffdb9a118da45f","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.28.tgz","fileCount":7,"integrity":"sha512-syacCa8Sg5W8LUakRTC8vt+hmJya37TlBFPMgYZBo+ozTy6UbMm8KZ/fsOC6C08htU32tOWeOLRHE4MhLkhepg==","signatures":[{"sig":"MEQCIB9aK3BL/e44K1VRtm5A0DbU9RQm/f9vJsm6EO5OstpNAiBEu3QW1AflHU0isEzU4akerZyDY9EAwxZqJTHFsWKYBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct3Z+CRA9TVsSAnZWagAAiJIQAIjqL/2UlWNd+x9WVN+K\no/C35ZdHk4xRBye5yCAITBjRWDmbppX+idJRzkLWp0PebVwez52yM9Pbnd3D\nG7Zq4c8tc+rzPCEuiVbRBBvi4tBnHQumghwqhXYFy2ZULDFUgPcIv4zCorrX\nZvVPzEAbHrXVSRtWldbdi1ejR63+evgFqmNYofItJSaMDPZ5YO0zeMhcnhej\nbSXcbdrbiZ6UiZzGkytSGU3DVrbvAsh9+ERkcxYOOhiulaNQolLQwitUFyF9\njHnZUTyMGLjttF1byR7+3YcHDgBHOlCF1i9vnZab22hja6I14RKXszMtCKZH\nLcJJdW841zaYm4Iwfg/3isAWvLk3QRu+JbYaj5fqWIXgRQScJW3QlmFGmrum\nRUeqC6rOeiyHgBI3TvacwjSBEuV3rb1eM9ovlpcTfTIH0DG9ISdaQLOUzk6r\nwpjWpygS20vkjxNc/x+nn8CT10qsNUFqnY9Ed4deFyMCdXUXmp+U3PPjUkR4\njtV1QkZCAGHBIImuLMYKwgPOh3Us0x7SJgDSOQJ9C1QG2wxxIM+cBXusODgN\nh9j2nht+rLoV9TQQ2mNTImS3NLDVPOOqNLZ+rcA8xRZ5nZmsD85SoV8mQAqL\nYMyIHXcMayYbo0aR56fchGsmMftiT/hjcajJLe8xPHIIZbzjVQrusRUWyzwe\nesbp\r\n=93Zq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.28.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"b488e3bbf3a17ed44aaa516f2b9141878d21e904","scripts":{"test":"shx rm -rf coverage .nyc_output && nyc --reporter=lcov --reporter=text-summary mocha  --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --statements 97 --branches 90 --functions 97 --lines 97 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.28_1555527293375_0.7207929659980594","host":"s3://npm-registry-packages"}},"3.0.29":{"name":"axway-flow-graph","version":"3.0.29","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.29","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"8e0733618f839c7068b762e1ddfcd07ab0f67158","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.29.tgz","fileCount":7,"integrity":"sha512-KvA8TuvrdSiBtUwzktB845QaHRbCUC+RiBboOGvdP6fV2C0KIOOvvJ0dtbZRvFHcMoC+Qhy4ldCTcNIeMNzu9Q==","signatures":[{"sig":"MEUCIQC9Upm5sxum9PrkPugF2BWphP+Jr57ADlYvGuNsZA4BeAIgL4QX8pWT6BNC0Uxd0k29iGhH7ksP5vnSGm4i3UFpEtY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1cjGCRA9TVsSAnZWagAAKQsP/0j539yVvBgqAYUAOta0\nD9h/upOeYN6lpvlbzR/Qx7BfhbSNpkSmkLq9cdiPlkKhUZU0JtIzPcreshoU\nAqtU7u9dJfrlimSLAuAltSKVG4UIhDDb+kZQUjQVyv3/kP+4h8sdvHey9Vba\njS65HMgr12H/au8Yw3L50KMA3klg7l7DcPBd3exRvIeskFrwRnuy02ABFRKu\nUlls/D22dnT3iMkdqc7srffuxMlddPDGCnhxlcELzQbWQ7hBZIrFwd4rdle4\n7bBmylEixV3KTJ/116mEgb8YD3AxGvPJWsqjRe694hDGZervESbACpPbTukJ\nYryXDUqYaXvXPbw7OOQ1hKVkWtbfGOb7rmMTQ7sNcm0S7OWdokZYnax8rBnT\nbcfvmK4Z+1bATwSgxyL411qhTmGImMFAVdATs1SmvGgEBIfY1Wkb3HibMNJx\nieqQXHgb7zkSEpyezmL6jfPP6e2WLwn3ms4xSXlBaIAGa08duCsGddiK6qtJ\nFf0ODrZRCMXRT4xd60M+e8K80Crr+/9LMNLikYsJZqqE1ABKvkQnanpY2A+K\nr0NI4TCAQkRVuMjYpP6UZZ6+2pKHeacAuTNL2LOvTvqcxD8YL374and66mzj\nl/DAZ5HlTZdSPMvY+RiJt8O7/q0a/9l3FpvPI/7pUehScwWeZnScGXzc2xjW\nkwg3\r\n=fNuE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.29.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"8f571b4c3265e86e91afcca4e7e32755fead9ab4","scripts":{"test":"nyc mocha --colors --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.29_1557514437411_0.019149395252805235","host":"s3://npm-registry-packages"}},"3.0.30":{"name":"axway-flow-graph","version":"3.0.30","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.30","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"2a43a8a3a005204ccf1a7dfc20e046cdea2229c4","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.30.tgz","fileCount":7,"integrity":"sha512-iP9ytvTbP1Se7Bxd6mjnuLOQEknmI8lXXxkY87zRH9xHsyw8qhHh/3Mp43ysDLy8tsnsGddRQTBJwsXBWzzn8A==","signatures":[{"sig":"MEUCIQDeRUzXdDbn9Sv9xurhkyYTAYwXSSbredOihBs2P14DyAIgBjc+WacBh1HcMmLwKMcUlE+mEdT0Ixvwqny4F6mwFKM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3A6rCRA9TVsSAnZWagAAu28P/26OfvgSj9eVNx4qirkl\n5JWKzsOMcwSoPWMghImO/2AJ+XVethRsOtep1CLy9sA3ldiAj4462OxUCEga\nukjjv2ymaVCXScRvT/fLJJpeQ1EMmz/S8+2kAR2C9s/MuVM9RD6+9SXXm1Ex\npEFoGW3NgKnkzEkegUWrG3/l2bbhg2z+WtwJiWVr/MoHuIIwVr7RGzmkV8z6\nwyYin0Gr2MP6a3iGo0Hkot84vXmlvM8MezshqW05ADQOTyTvgMt9dxsoa5+b\nuX6X8CZt6sei594jZfyUoYHnf4DVqeTWfAFWBI7FCljp7cpBdCrJM9iIHxKM\ndCaaNPP4mE/JSiB0wo3FNoAodR3xJbRBm74TfkRog0+OI7LpVHoxt+j8XJL3\n7GF+Qv4PQRauxQf1Yb1FOpAJnWpkNXrIZ91n/G81MrOxJB+8LsryQJE2v01x\nHcFPlu5X9fgtdoX+bN2Al5b/KlllwugJgZy4rtCSaz/dXEPX6ElnjJfEIo/D\nxWC/eF5oGtBYjWMjoMZyjdy2TtFOv/eKmSo6iEBUe3yzm9SceBmQaDf4ZtD9\n05LJ/ojOWPF/0+Xi/MPjCIwZTz/RXWys7WTX8+mucrbmFu+FBsTs3K2bv/eB\n/W9YsCu8c5A55hiabs+H1uuapvvqjrr4z70baHermxHi5fhzdErcKXwPr2eH\nO+eX\r\n=ZCbE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.30.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"2d0f51d190a2bf7e7b149d94d46d253ff6af9522","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.30_1557925546691_0.46032048192249975","host":"s3://npm-registry-packages"}},"1.2.13":{"name":"axway-flow-graph","version":"1.2.13","keywords":["amplify","api-builder","axway-flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@1.2.13","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"dist":{"shasum":"69b8f52a14b5ad1956db29a4f6e47afbc841864a","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-1.2.13.tgz","fileCount":7,"integrity":"sha512-iwq54G3QgSk5Viu2NWWYrgDaXGMYJWpwqUCx9w7OM07VUBE6VAkq/IiNq8113vVqvPpzHqKWfDwfk63Ij8iThg==","signatures":[{"sig":"MEYCIQC7of3epZ2BBqt54cjp60qq2GHu49Mtc7PwZ4gCyDvh9gIhANh0I4KkyT91otEwYDvaEe+Z3Z9VDXtQ25EPpHdr+4w/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc56THCRA9TVsSAnZWagAAqyAP/AipUgqMmpiulu2SfPly\nl6IUb5WGdRCZZPiTfK3/vPBLaNHEaoP+IlhMxGUQfuW9RBdQOQ8ZI2+j4u37\nEBy4ayr7nPrmHR8Y8knmMnHLCLa/If6u5j3cU0K5KNY59f1C0iKfCb7G0zam\nXgW6zDlgH98Jnv/mbqY4jYf/wIBySRtFRgl299btCbTehsTQg63NCKABht8B\nBuBSMhOXtJTyuZaqWrRT4Ucmbt7qnLMFh+EKnMzd05AaboLlQNMDFIrwLyjj\njcr/wi3NybnfTP3icZm/3gWh7RWyzEwuChi3LFHmj4xpMVByF1+4mQjQfLIZ\nQp20E1hznOxRFa7qS75aQg37KQWnhLcPKWeovH0jy5itFaC/H2xq5fgd6Dwa\nvOfsig4s5SlPzz+L3/RtlV5MB/25kjj2Lh8CfzoBUQcdE8+nZzV6oqnJ3o0S\nIu+EIh4sG//HKDPeMPJxUgoljGWkFNvtyqOxscSGTJCiJfva8pPtX/Pf0zEr\nksze2v4z+uzlyqhx6zUQoUfEFXKO4dd961IMJBJ/yUfddAxp4SLumjH9JgjQ\n5I9jf/IL0yNv0wC0oNtSlAM7UzUJBFUdZ2rjhy4/Qk2Wlsmhjy3whG2tOl7j\n7n1X9SIZWQAXuFW1/9hRUsH//Hv+dKlcayIVpVIuSnRx8bWxQczB9O11kKIF\nXSAB\r\n=GBXg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/node/index.js","_from":"file:published/axway-flow-graph@1.2.13.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.checkReturns(validationData)](#module_axway-flow-graph..FlowValidator+checkReturns) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkReturns\"></a>\n\n#### flowValidator.checkReturns(validationData) ⇒ <code>boolean</code>\nCheck that `returns` has valid JSONPath selectors.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.flowErrors.invalidReturns.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid nodes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [._removeParameter(nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelectors\"></a>\n\n### axway-flow-graph~validateJsonPathSelectors(val, pos) ⇒ <code>array</code>\nValidate all selectors contained in the value.\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>array</code> - any errors which were found when validating the selectors  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| val | <code>string</code> \\| <code>object</code> | a JSONPath selector - or -                              an object containing JSONPath selectors as values |\n| pos | <code>array</code> | array containing a breakdown of the path followed in validation                       to help locate invalid selectors. |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is closed source and Confidential and Proprietary to Axway, Inc. All Rights Reserved. This code MUST not be modified, copied or otherwise redistributed without express written permission of Axway. This file is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement. Your right to use this software terminates when you terminate your Axway subscription.\n","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"scripts":{"test":"shx rm -rf coverage .nyc_output && cross-env NODE_ENV=test nyc --reporter=lcov --reporter=text-summary mocha --require babel-register ./test --recursive -R spec","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","posttest":"nyc check-coverage --lines 80 --branches 80 --functions 80 && shx rm -rf .nyc_output","build:dev":"npm run build:lint && npm run check:used && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:dist:node && npm run build:dist:web","build:lint":"eslint .","check:used":"dependency-check ./package.json --no-dev -i jsonpath --entry src/index.js","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","build:dist:web":"webpack","build:dist:node":"babel -d ./dist/node ./src","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^3.10.0","jsonpath":"^1.0.0","json-loader":"^0.5.7","babel-loader":"^7.1.2","uglifyjs-webpack-plugin":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_1.2.13_1558684870690_0.19974818697903296","host":"s3://npm-registry-packages"}},"3.0.31":{"name":"axway-flow-graph","version":"3.0.31","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.31","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"970eb95920d9d4f9b2ac41bc87251bd486b023bb","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.31.tgz","fileCount":7,"integrity":"sha512-q8IfKH3RO6W1gUMXMI/0jxxIvhDR0w4LXqtooKBJDoMCXfdIEHbiizwWW8oeasFFrYTYFJemL+mOiRZkpExdYA==","signatures":[{"sig":"MEQCIC5r4xiikKtqYmW7UC+v4ZDg0HiXAuwfThw9lkzWeZ01AiAw9AX8Wn3dTi64sAcI19c+oNKZuGe5knci0PoIXVZRsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMbcjCRA9TVsSAnZWagAA1LsP/00+ZNvX0QNjx2WbQlfU\nX4dxOoocAZqUSpVvzKE0buytENPPmEaVMfM82PVLS6SXIxsS6akLYOdHbBn+\nWRhvlne9c7F1Oy8TMMXJTk2Bh7hj8sb4R24kiSNj67X4R+1q5jvAfqwcBGaI\n3PQAo/P3/1xlSIFig19dIA+0jmog67hHyj0EYPnDSPudIj1TO41zGEcoIONp\nvm2lU9pb3fuZEphh+CT3Deaq587+9L+MnQX4wkdugtrPoes2WAqOuLQJiOt/\nxZW1oF/OBpQ9dLyUGULLfKicwNYcCFC06V55P1iTdnNgHayPU7woVdiaBylF\nD8IxW96dBFX9dKpDp3DqYzCFXWoSPYVxHPQqL/hpXZTLj7CAYa+EaafxZQT0\nNRRX/j+Cc1PIMCdkO/kK2xSccqrBjQFxCk1Vct5j6X7vYue/usJOJmV/jwJP\nWTJLMvhtYWMVa1YCvUcqHB/SiIOOwYrOp2iY69nS7XoKnM28Yty693u3r4DI\nMexlsh6S3qkrAvaTXCvT1xpnq/MbxT2ZJL3ArI1mMDCWh3ly3l35Z3T5pP4a\nPgBN1M80Loar4n4asVx5cC/3z9uALz31XuFjP+L4Uazu45h5mpE97QNjJEZc\nWpkboy2wr4UmFqkhX9N+CdDbhQSKv1Q6UHZy0Grn7sGveuCXxH81nPtszCsm\nJb1P\r\n=KSZe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.31.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"9799c9937c9de156b10977412afc00c624481962","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.31_1563539234824_0.12122274787398579","host":"s3://npm-registry-packages"}},"3.0.32":{"name":"axway-flow-graph","version":"3.0.32","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.32","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"5c22b0268f5aec77939c1ca79370d90a4364d72a","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.32.tgz","fileCount":7,"integrity":"sha512-Cpq+BEj1NmMBkcf8lnJX7PhNHKtwPDaiqPMO+lunCW43nbDFqTDgL1fVuR5OsF395CvWG3BDd21uYkKzVINaEg==","signatures":[{"sig":"MEUCIQDz+nLCvgnp5yqonUTpe+kwmYa04bMjOS5YeSZ4kf8dLwIgVB3v00dcTLsFN183CeoXbP6IZ6n3+Nu8MhMNlC3lHC8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjfVsCRA9TVsSAnZWagAAo4AP+gJE9qw4SnyLG6KJ9N4I\ndwt2AHem5sqVxQklzhhDt6XIeoC5sa/4WdI8YgUD77HHjO8tQDUUGbadg/Gt\nuIvDQN4KZkKV8cbI8A3CMkBWI7T2ME91ic0321ienvvLKgUEZ+zY2L4hqoQS\n7+HGU4Br1mOM8uayAHwEOVJIjdMCA6EKfbUXnvB+r565DS1t3waTz+Y+WFWA\n6ig5YOiqVfmzAn1wkVi41ajlzyZVPG9TehWs5RZ2YgAGbgVZhX6b4sTcQ6Nf\nnMU+I/Pb/p+/79awvJjd7r7f/p/u/Y62zI1HeabaRwVryAB8RndJC2Tx/sdR\n8Cij0Cdfp9/WDoudSWEpLCHOzWBxf3xt0dpIMB0suHOBjjmi3gERvfZjmeel\n4r3YIVlQRbI1nLbwvyGBSBKTb0c0peIXz+GNHDkP90If/g9g2VooIHz7TIGC\nYyxCASxG+GMc+xSl2swYE9v2NH5IW059ddZstDJc5F57KhUZmT5FiyItfqil\nJ0EZZY/1RulX7Hsm49cihJRwsugxqK5jhgnfbW2FuR4dJpasjGzEIKDwVNwK\niTwhqlMFPb+Stt9CVW4avUvaRXRdjrf+X/0cz0h0We2wPKUXLb9MvTzWzDST\nY3YXDkKb3fSEqFESngQqZW8CB4tgm9zkgszQ5i50Wg2rNzshlxvXkY+xYR5K\nHGqs\r\n=C3Ug\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.32.tgz","browser":"dist/web/index.js","engines":{"node":">= 8.9"},"gitHead":"55279f992a49bf2d1a9213e0ac339ac40c85fb6c","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.32_1569584491167_0.48591945899592637","host":"s3://npm-registry-packages"}},"3.0.33":{"name":"axway-flow-graph","version":"3.0.33","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.33","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"ivivanov-axway","email":"ivivanov@axway.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"3ef7dcf07dfddf95fdd74fe605e7085fbb865a41","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.33.tgz","fileCount":7,"integrity":"sha512-/2BsLLN9DP38GsW7i0GaknYD9uHfPSO7lin/BSief2n0u2oKhV/DxTJt2sIXPVy4YENOnvfUqQc5pmngt5xGEA==","signatures":[{"sig":"MEUCIGB5XxLSjmFRELtW5/+PxRQblLW2izfmHFKVo/T+wraSAiEAoWDGwEUBrobeIlo1vQSMZ4C7F4oh65y2qXZ/YLv/uHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlzsXCRA9TVsSAnZWagAA+qsP/RG9YnumOWkoM5GRGlSF\nU3amTpmUHT4BwM5yq4Ia8ZGlPAm3SbbevgQIiNk6ia7kCjiHxv6LtlrhdsJO\n+eVY5btjIC7ZQzdEeXYCJe6EdIlZqjXwtRuM2FjSNoONIqlAlSS4RMI8Yfbc\n3bWhaHTR+l3T5dzrGN+ItrCPny14wmMi+HmwjvpPI0jgWvFJsKxeDv9Ro54a\n2Kt6PRSQMoAZ4eHh/IAFfzMxBz4aSAiRyjkB1tlMUNDyn0+XLdwVYON6nyhp\nCw7J39P3rqwUrvOfcRKIvatCyaePHI+wrW/BHCvzwUYuxepTMKtS2g5jVBhz\nyC1nK+06v/SqGC88Cc/PmvqtwC57wELzOfXPpvgpEqcuABZgIKDlmkK8BkbE\nYOfN4sjI9UYAioF/OpPQK/nJSqAJ2dHyIWnHC+nCBJSFcohvtxWldmJ05fKL\nXD8vnitOmtacUj5GCC2j7+DS8nQDF9QFpKBbfEmDI+KgWe2v/xZLRDzqNpvT\nqiamK61bF/IuLSdJqt1OZwyQygR6PJ+faZD5TS3LipTjaIKA2Ynu5XBwfLuc\nnN4Yf0VK5Fh3eJ4ZkC7K3qhZg9p5hgRufqhcvExTAKtY9JUkYedD+S3R3A/h\nSbbKeKUmTx/4ltZP3Sb+8VlzKBYT+OI6qfZkA4NZGwvnx4EDDOfBxy54Ms3s\nsgjJ\r\n=aMRW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.33.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">=8.9 <11"},"gitHead":"61f3e2f94a4ecc9b4eededf359d51c4efbe824fe","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.33_1570192150393_0.003193386180066593","host":"s3://npm-registry-packages"}},"3.0.34":{"name":"axway-flow-graph","version":"3.0.34","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.0.34","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"23977915a194e8e7b374a63c86fc3f38af4b4752","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.0.34.tgz","fileCount":7,"integrity":"sha512-ZAcCL96ALZZkyVkc4Y5+pB5fZGy9nSQnEtiX2NsEL+U4sZlPYHVlQC16CNzQgs/BncOGok7NO30NOusRts9Naw==","signatures":[{"sig":"MEUCIQCXeVgtmny746+7kZtyqRFx1SL1gLz/otJb2KvaOUG1YwIgGR2Rfdj11VdZqAQEYmonxb71+x2eGb+0gWXQ2i9yfKc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdoHd2CRA9TVsSAnZWagAA8S4P/2Kq0i8e5JAAnk3Fv2vV\ni2+ggGctOBw8xLKCMKetWCqOUGA6yhqUcBILedVzAAwW5B8/UMPDDWC7Y+1Z\nDqPEJTPD8yHAXmLLH+2GHXNpirMb1TQxPUpVNweDSlVmg9xGJWXgsbIvhacD\nG5pMsnZRIANdElL2Xf3RjIgikBoFFF5Sewk0UneUSDtCeRQKjeGDLyY3ItcJ\njnoVgrKyvBocYc7HkP3Nfa8Xpow4kDGrO8nSWLSWuRr797m8zskd2uueAAeb\n4JBiq/XZoEdZolEeqF4ylpl1eY/j0+/Pa2fZTveRExjanfuqfh4YSz5F6kU5\nXJSFZhLNGF4KHCydd7Dz4ARR4weNRBXg1MDYd3QcYp8Lv7UDHMwW+8KkVJFI\nTLi3NO6Djo3uPX5GlouWGDqe3v1u5MjrVZG/3M1I8Xi40b6el6Yr7llIYWyX\nfBIQMGPWczHTmcA/gdHlEfSh5XKeq50KP894lx58isN1l8ZqGx9NUOdi/TwM\nhYUmqsocOALI7pKxlmYyabM2gAJIlUGAvEYglvU3FiIAiuw7Ugc/bKOO3Gwm\nGecewFVuhRTbivaonJnLbKRi9h8xba/bcrDl1X2WNGJeZVAX8Ac35GM91D+F\ni/5EiJ84RuQeuTN89d649xyjFjJV9IxfqhR84OtIhDzhpU24nHlt77cv8rA8\nS6KB\r\n=2YBK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.0.34.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9 <11"},"gitHead":"c50ee05cf1027ac1b3abe501d0a8515410eb3508","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.0.34_1570797430296_0.516349142782613","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"axway-flow-graph","version":"3.1.0","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.1.0","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"4d020b5f0450b0eebdecfd90e6d3a717c6c02b3d","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.1.0.tgz","fileCount":7,"integrity":"sha512-isiXAfbYkUfYBkh0u0U4FjdGiVvu7Iv4ooU1f3lHld0gm73AlvKm9oDPH58NTgnDg7KlIAsZRdQ8trzA4SKJuw==","signatures":[{"sig":"MEUCIQCjJxzttclf7BjdhsaURhaKgEzw91iRw3QtPwvTR8DSSAIgAe9vIbqjP+M11C087UAtWbSI3ok504nemVY/dmu9zR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd18idCRA9TVsSAnZWagAAOAwP/j3iLTATMlhDWmrKQlMZ\nBKKVc8cslfvrB/3qD4n6hOH6q/6pnaGYEfBTCpIQmElXkWgBFDpvdSOKTZTz\nBmvekdZTUMABX94PZhEMvHF+RNt1GhK4oOWjHMTAzcWs912fMrNF2Q21FPHo\n6ai9Mz4NeEyR7fvXjwspA4oYxlr7SINzlrnybrkcry09rzi6AJ+y/cQnc4qy\n6gSYh7BZEj8/Qa56BITLqyE7MxQObnlV5HE09z8RCe9P2emkd677+cW5GgpL\nn6NA1wbx9k5ByOaT7U27f1eeVNBpKAncl8RpdNkvmO3rLDZkQFAwh6pZJ56H\nHC/Ne7siQQixnPe19cW0eE1viHx/iu7R2qvfgSe7+KzOaX7hSFI1d/FbtdkC\nQLOF1Luw0H1g/7IL6a3tpquPTO0VCK4P6qk0MTWzxnAj/3N1zkBTkBw3OvIK\ncQlRPgOjAYz9m0iE1M5F+VDw3rpvDB+8qz2PecaOIV385i06XXIEz5Vlus2l\nYfD4e7BoWrXtIyrXOwNAMwd5ePxUt8v/J3ZO5BUKmBll4u10Nl1E2TdZ+++W\nrCSgePFpMPwXOdRTsz79owZI7wgjTjUxJXdJDFx71pjSBeKLkYtzliP9l9Ib\nHu7RVl2DbSJbNnHXukbKSNeSsUjzkL2jDzjQZTlLXkH1fbjtZkR2S1Dm32YS\nzOtz\r\n=oAzc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:axway-flow-graph-3.1.0.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not exist,\nthey will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"4d32d9665f9fa9fd4d3bf0852214af622af0930f","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.4.1","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"10.15.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.1.0_1574422684492_0.12164702407564443","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"axway-flow-graph","version":"3.1.1","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.1.1","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"56328807997d8bd23a06a17161a471cc48d07515","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.1.1.tgz","fileCount":7,"integrity":"sha512-GTp1E5d1Y5cYAwG1U27U5CJr7TqKNaI5XDrjEp73E1Jy781W0Vl++fpZ4zXncM26hZridBz++skIQrRROGHKcw==","signatures":[{"sig":"MEUCIBGnS4E2Ia8Wdx3UTSwnqrNjqiTRk4RwU6AcjW/g0YWiAiEAuROJimVwgPd4zI68pDnPRYyXsqQ6h1cFylc0i+r27jg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3nMVCRA9TVsSAnZWagAAh5oQAIiWpEG6lA+d4YdQk7Qw\nKKpopddA/IjcxnbCb6rf5i8HkHoG3MeVQmQkf6WK5SXMf4du0IF6GCQ7H7GW\ndc4WzUmKCG/aG9rJFdkzuBY2uxGHYoqqTHi33vkrwUOnMVqAoMdRqKvaffa7\n5ryC+PX0yCgnR0GKOaDr5eBiB1NkrWyocJEjN10xw0gmHSg5gyDJA7rFtcSP\nHLx5UudMALeJ9nkQkuC8oxUi1TWdRZtlIGB4FFbqHWx+HZTYSbVSNlvg9oYd\nKXqVbMVNRxUngp8IKGnjuji9qbwxAwunlla9VG1aqPXzif+N34srbskwXQnn\nS7J+Y7iYtnnOihcX2UlxL8io6sfpobW6zK16QbiYEax0iyBdwddNWhIheBdE\nNqxldJ4evJneh5BHeGiabc13B5SzswmvTaO1QO21L3h78taNWG+cJjGDlUyl\nGmPQD+84n6Tv/TxtxHfb9T4asR3XKXvJt91LPvCWsCULu1YQXOYnI9OnVRV/\n8bZrOYjH5omH0Mr8QI0GG+KmZmoVTrtzxam5mWY6WLR/VV2WCv5R3XVVBsvw\nn3q0wbT9AYlL0VpHjfUYAxNLnwBctyLqTSjJD04m+v13VWSEUKqpU4k8yzqi\niFL/t5ovSJttHgIDY1Rh3x/wR9xlpVe0I3NTjiUHG1FsCOPkMgYLWKBEj/s3\nVmcK\r\n=UM4X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.1.1.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * _instance_\n        * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n        * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n        * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n        * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n        * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n        * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n        * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n        * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n        * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n        * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n        * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n        * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n        * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n        * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n        * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n        * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n        * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n        * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n        * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n        * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n        * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n        * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n        * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n        * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n        * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n        * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n        * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>object</code>\n        * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n        * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n        * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n        * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n        * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n        * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n        * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n        * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n        * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n        * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n        * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n        * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n        * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n        * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n        * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n        * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n        * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n        * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n        * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n        * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n    * _static_\n        * [.FlowGraph](#module_axway-flow-graph..FlowGraph.FlowGraph)\n            * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph.FlowGraph_new)\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not\nexist, they will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow name  \n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph.FlowGraph\"></a>\n\n#### FlowGraph.FlowGraph\n**Kind**: static class of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"new_module_axway-flow-graph..FlowGraph.FlowGraph_new\"></a>\n\n##### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"67df9e6c89f10bd41e4043d10ab7f55a2b54ebad","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.1.1_1574859541316_0.1730038640516809","host":"s3://npm-registry-packages"}},"3.1.2":{"name":"axway-flow-graph","version":"3.1.2","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.1.2","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"413eef1c7fa0f498cd822c72baed001e314eb527","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.1.2.tgz","fileCount":7,"integrity":"sha512-xJGjTvCoWFm0mDq6ISWYg32oGjWBtpG7UswcuaqcY/4FQ51B98RZQ4kg7b/0Mb8FE8YbEyma+XFNi50JpgknBg==","signatures":[{"sig":"MEUCIQD9gDMpdh9eEhNCo+w4hyWh1N/u+7TNRH5nvJPwww55uwIgXszjz1SX9QG8kDTyOgrfDyowEOz+uC/iM2Pi3CEcIv0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd4QEBCRA9TVsSAnZWagAA3eQQAIUkT7n/HYt1rHPM3/3a\nzqbHwpXbiyCtX+tXevZFRbsWZVJnf5T8E1UU1QjQ933k9G76KqxIHJnhmr+O\nkquvrlnG5fXh5sJu1nx7LN7vH1zFv1twGvdaJ+QB6BW7+MJ7BtI4mARukM0G\nj2ewh7ehJNGH0irVrYCMf0stP2QX6mNdZPGCHzw5gIrol/mwNq2UcsVGFK9U\n9wUPwTLWl5ynNwcCX6sd3dq2PbdCtxhJoYpM+zvTwF1iBR4rwAQumX5Bkk5H\n3TMHqSAaRw0ssuMcs4qvloTh61J07UOLVQnwpH64hMms7IJyHXxHG3U2sTAc\n0LbPZixeu4rtSRnxeFyelHY2BbzeRQAFmK5Oxso1HVSQ4Yf+zShLX02V3qk7\nVgorc+m/hIrW/4uIUnC+Wr8BqKHA06LJP1wqOiTWEGvb6ylOkLl7+Nj9R0C4\nsDKoUciTokEftXctZxZizhyH3HOOxPRt/o5JxKJmee5LPeACtu+fg4Im7V6j\nRG4OGWy9w3QBcjiw1/8PTBJN5cTSlpciiioHcvy3kZIB2jWW7TCcO6WePQqt\njMZsobqKge7rFakoTMM8aIN7uYCAGybcXNRqyjAfYstTwsOZIIEgQax5LeF/\nC6W4A5DXs1AHKJProGW2na0SFhWh3gKPNADyVww2xCOm9qDvDpLMDj44lpbe\nQ3/s\r\n=VJsi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.1.2.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"20d4a2eebef55000a4db7141af7cbd01061642af","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.1.2_1575026945151_0.057641562051132356","host":"s3://npm-registry-packages"}},"3.1.3":{"name":"axway-flow-graph","version":"3.1.3","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.1.3","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"0a48b36544f4d5e61f464f2d06d0ab9e29ae0606","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.1.3.tgz","fileCount":7,"integrity":"sha512-hzFTrYdSqrNCAm/yK1ASYN0GcGywZffq4BH4ocAtdgWHSdfLS6E42inhAG/QZvbC8s3CO0Kfngi6fKE+2iqfIg==","signatures":[{"sig":"MEQCIGPvZwv556odydaINaf3jvKKdde8TBCPBCVI3JQJlwbhAiBVX0heQxD2s+KPa05x+UXwh7/hjajxlB5DH7x4kjEMJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexQz+CRA9TVsSAnZWagAAQUMP/iNiH4T/kKxNY5MpjyZB\nj2GlBj2iV1AUymyIvX6ljk3m0pUJzgLbOs1aj+F4tkgBrzIEa0mFF3nXmQXC\nhjKLo1DsmCZPB+4oOn+dKeOVKH5UJt8fC0z24KCm/6IH30MHf3J/D2u+S4/s\nDBZIuzWjt9uBBJJxG94HQxO5NdjHYgjZ/VbFo96tGq4/659d1Ya5Kej442tb\nyFbaiCnpdqRKOx/0oTyfv/uq4sjbGD99Pzk/mCyS0i7uy7rh98A8r22snSuI\nENWdRIwIW8kZEVWhwadY7SeXWi3fDtVYYWf4csbmdstQuk404l10UscHkrc2\nvsLHAnqLas4YP4A8mnuaL8d9te/e62TFI19woCafbB56XiaRCds9hFtS2rXt\nkkVT7tFZ8eHNXanJcUWwsCORLkA0+pWIFtFxCRkCOZmUz8NAbs/GQJVYjRds\nyHSb7GaQQ2o55RbzLU0dI6y3/weA6HWWY7IkMMB9NP4VUYHRfS2v7qAnrX0a\nIzCuUWCxXu74ANxvovGMfs2vi3iTpAaiyYh9okYRsEGC//X3oQtQJv5vuYBI\nMxmVzN8TrLWhqPEGT/opeBQNCK6lkKSjRzJytlPwfAAWH/0A4naicIfXstX9\niOkVqRQQI5SGZU9J8Kjutx/RYKSG7O+pRNMnLim8q+u6WUpgpPSHWCmXZUjB\naI5N\r\n=JZwM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.1.3.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"8750b4da6dac80466151ebf18a4205c6f7dc7ff9","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.1.3_1589972221801_0.9732671171275631","host":"s3://npm-registry-packages"}},"3.1.4":{"name":"axway-flow-graph","version":"3.1.4","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.1.4","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"b6c8e85270fa3d721cc035ffd2c57b79a29b54f3","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.1.4.tgz","fileCount":7,"integrity":"sha512-Llzehrb4ND3OQdD0iMI/uRL3h6hhNjdJwEWcLNHq6ZqsN0MWCmbhtzgIb0d8+xQpd80M3QYso7wbZWep161EFQ==","signatures":[{"sig":"MEUCIH0kL8FEEiBwRBvdi2O/4QvcR3VFJQoLpSYnsUqfcAYrAiEA1oeKOPkTKwbdWMMCgbOd/x5JXiomJVLlwde3NHMeGAA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJezpjxCRA9TVsSAnZWagAAShoP/jjE/uiky3mwHPqLwExT\ntz69lf6k5CRRkr9h0oJJvlTJXvSzzgtnux5TZyRhEyK3pxTOQ1BNeibE1FsY\noIkVestPj7DqpqF7yM53ND3SxId3kPHf+PGofYDDaeWWwD7y1YGdVrW7Qt9D\n7Lyc48GrhDGVwm7DQIX5feflJwc7rOu4qQU46N55pu4YzymY3DM6zsG1kZ7Q\nASxR/v+e7T5Mpmdtu3x5289vG1zUL7dHhAHwvFumY4g00bd6hexXJVWWOrf3\nGghvFcuPJ6aMzZvfTka67nI9qs2MIJgD3wsRw/vy8sIp/Fj/KBV/Is8lVZSC\ngi2gAyrMx4oPV9al+Fn/aqBTXrx39pc8NNDxKHG96A5GN8j0A9XEPCtZhD3h\nTlel4xNHmdNntZZkc4Jp1t/Y8my4ccyb9SEmO/QFYUBmMYiqUWD5jn8myLM0\nNpNh3BO016UywI+TyWNrFikfjqz87OKc7qZPoGY4r/Oh9+mhLRkAI+9Dg9yf\nbWj/ChcWmLtsfrwydWJC/1wMfo+8IoPk0xZZjirruDmG6Nolc3Mm8B4Nzbnf\nv3Eg9x554yUuLUJHvWZcz2EnDZmqkZlkm/GsgM6ceKelccN01EBEGmj2/Mfc\nwnAbLQFxB7dI3HwAb7Sjce3VKXcNAhDs4+0CgcvFwM7Z7fqeet77oKOiPQkB\nbCpO\r\n=o9He\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.1.4.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"3c7b951fa53886c4070bc2e42f1b16e76194183c","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.1.4_1590597872490_0.5467721029220742","host":"s3://npm-registry-packages"}},"3.2.0":{"name":"axway-flow-graph","version":"3.2.0","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.2.0","maintainers":[{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"vchauhan","email":"vchauhan@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"9da9d21dc14d28dc24b4be4bf3f84a41d3d02a2e","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.2.0.tgz","fileCount":7,"integrity":"sha512-Ry5B0rpoOk2zH0yuJPjKaUuyd9WluOigpH8z0Kulfz/dlpqHrLGskPbvsGGZj2U+EBoDCzwksiUE2Y+eG453nA==","signatures":[{"sig":"MEUCIAq748hRvzPrZVUWfXW5q0trp0ecCVS4R6hHHbVBgOXlAiEAvElJytxntasJNcoRP3uwmbjn/TXJHQDH+KTG1/l/EjU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNqL+CRA9TVsSAnZWagAA1N8P/jGkxurFcmAYj8GuAn7W\nlZ/uiqerO5UcGXr6xxMfP82ttDr49KxJcyTfXFoQnflrciXFBK4dYY+8ZTuF\nsx+NOAu8BNV3j+ooE8Ml2Mp3omiQvvscnSFlhTR9O9irtZBhuYIaxczpJH2n\ncECWP086RP2/n5zaK8EnoMYOwrguRwZuXUQxRjaZKbG2gyHlLwy+t1DvWXI8\n244JuR9PfXNEvXNyi9eiVJipBPbIv5OyZaRe97pH8pqBUca/BPy0xD0u9KbL\n9jNP3pV3E4ALkeLr/79vz1Cs4I7ROYnu1Z7QizqWADAaecx7A5l/Bjh7GjAa\n9lvML6Obb78V10+S1A4+KlH8eXiZn9f2DU64OFHt+jNzCoBLu6yBl1SqCQvq\nDojE0kBXrx8/amSIEqna972v/ZZQClyCG9WzMqJz7UFQukgk/owucj0zh3rO\nLQUhmnOPg4RmBYYe8czTdibjvdpes/0cAOZbKN5j9oISvzVchqtT8k8a4hP1\ntxd7un/uqD/wFNknZk+PcvbFgmgK2hIF/d+3YPAZD0FNdieBS7oUZPFma0O0\nOayaFrr6NsKXQlCX+WyOC9xfOf2ZJ60hKIVmQAKmvTadRyxPqlieSrNx6XWJ\nzHXZk8l2+L+J9b/x8FWFe0At3D/i5WEEpQfiMKImG1U+bZ7nyBfayn2ojC8s\ntJYY\r\n=fd51\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:axway-flow-graph@3.2.0.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"a8da11e76c79cd95c155f533c46f412d85c4c829","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"axway_alasdair","email":"ahurst@axway.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.12.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"12.13.0","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.2.0_1597416189628_0.15314885333629435","host":"s3://npm-registry-packages"}},"3.3.0":{"name":"axway-flow-graph","version":"3.3.0","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.0","maintainers":[{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"51aa99268e90d55d1278f906ca57659a0ab0ba97","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.0.tgz","fileCount":7,"integrity":"sha512-7YI8gD7B4bMQTMxJRmN/9AMAZrigEYuew18bkNJWw5JYxtpF1xDNpfdTseYxVuhM3M4Tk2cRmbUWO6P//+2fug==","signatures":[{"sig":"MEUCIQCoa6avBiVJ6ToZCDez4F79745MhLkejz+wj90uMVIUgQIgJAMTbh38KTnu3TVHpTsCdGC3XDtMGnWeomCYUqvQkOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf27zMCRA9TVsSAnZWagAA96IP/1UazfgSj1XAcpOYuOJe\nLpVRU4A5NQPsbNu0MZQvCeggu2vzYqmCIIRc8szDlHKqOOW5lXA8/vwUEVB1\nsYRJOaHRDzNL+DycMTC8emh5tZMgsKzTTwpm38CWttAa41GnHHGXL7220jHP\neY6DDLey5OKsxCc17BZCX8unb7NIsdtUe+r+c5BP1qVxNaqBP3/kH7LG83JQ\naWb6e9zcba+8NYt6Sru3SewmBwgc5FdugMivmkVhKHVGAGGA7ueiYNc73AWU\npisU8b1AWGJ2OeUuwRcRBiiDfgfWkq4QsOS91hH82lZGGfH+RsVw002R0851\nqIr3W19DUH+0zAKLvWeK4Hi2jP4zqkXJ5GNuy/GdptkoCAMwNvjb4OFmrqiJ\n9+oJU3fMYMJdmpGlheUw7F40i4JiRcqB3Z1R0hOP2sRtLSGEmkKQsaVXz5TQ\ni/ZZ4Zwev/HhiVyqLPwIf8G/aoqOJ5m6lsga+GCuJTRIuCIT/hhRVswnGRDk\nrdiqUrzzTlFC6jwWgI0acCEBlQ7ZMi6dwfnj+1IuoMJ/eFXkHI0Rfq+ETLQc\npaog2ue243m6FuGuE3EtFr+wx27WFOkORWGnwkjFe58fYpWLdqLKpcadnqAe\n2N4FYyhlIbP1LssYXiGiMmMeMn2wmwbdacADV15/Q1sJELCAhaXkfrUKQScP\nBTnI\r\n=smoq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.0.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"6e06efe1bf47651662e288f110046354032047c2","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@livereach/jsonpath":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.0_1608236235977_0.23077078002253582","host":"s3://npm-registry-packages"}},"3.3.1":{"name":"axway-flow-graph","version":"3.3.1","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.1","maintainers":[{"name":"cdobrica","email":"cdobrica@axway.com"},{"name":"axway-vertex","email":"agrakhov@axway.com"},{"name":"mbonchev-axway","email":"mbonchev@axway.com"},{"name":"pbozhkovaxway","email":"pbozhkov@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"c770832fe6a9fd37f34d40d01b15cbfc71f91218","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.1.tgz","fileCount":7,"integrity":"sha512-oy/j+9V+uP4Tff2aA3idqQuUcPnHF3eMfWKSe+Zz8Xht+grO6j6h7XJR+XfCvDdmfEMV5Yk/YZ/oQviguvjhtw==","signatures":[{"sig":"MEYCIQDP2HXAhILtc3oFJmhDye1+bgV4LDC+3+YNcdLqGc4ApgIhAKYRy7N5WHEGRE29FP3Yd68hxb28h9bXzrGHEItQtLnc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjAD4CRA9TVsSAnZWagAAvjwP+wWfq51HiNS9spUPRPLd\ngjTk/fbr+3bzYcvp5gDpexSsQkdSFBEcqxG5k3QW1bXrKys/r3Y/ejGRR/3O\nDf1XMG+r8ehFqkS7ZKWbXrMZ6LvvBRz3OMs6zv/mFCqSNfLN6J4JInfMfoX9\n1HXu9EHstYtI6KHjUihRFRz68M73rlrsbqEeScYs1Fp+/AdhjuMTQD/ZHTS2\n5qiKocJGyP9ky878gdSJFYfbKjDCyr5Mw1sM5OWiY2tOUwukAAQJq3W4Bq7G\ntA00MfktPVZDICt5pEcIYHHtCJ5iDzm2GQec1PdEMebdPbSYCTuajmuDJrDE\niCCbOW3jkFMrCThWRrX5U+sN8BskuijFOZegB4Hiop+GAcH8SgvdMByLGJsM\nRHdW9I81ClV50nCmgCIXNXa1MW3WmAqYuy9omYdMvBcn0U6HuMrjZ6o9xfqj\n6ancLFifeqAAl6rk1cJBQYpltGrQzROuhwBailWXLfCyJI4ZAgMs7VVin7Z7\nBhYkZJljpO+e1e77ZNEJW8NwP3t94VhGrIWH4VtX18EH4Tk3KYwetR7+dbCE\nNRVLus5xfM0dxmxNTJYhj0ZHkJRWBhZ5TVRaQJIr9vjvd/Bj86yHBBOakQEm\nhA+bm7hzvYAMRgELKxWH+VcpX3Xe5cz5uZANgfFCdCcFd3aB5NGeKO6Gibxv\ngE/A\r\n=3GwH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.1.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"a9a78a8e9d2818d7126bdaf08e6a26a0f18d1882","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","jsonpath":"^1.1.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.1_1619788023498_0.8189785128442975","host":"s3://npm-registry-packages"}},"3.3.2":{"name":"axway-flow-graph","version":"3.3.2","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.2","maintainers":[{"name":"cdobrica","email":"cdobrica@axway.com"},{"name":"axway-vertex","email":"agrakhov@axway.com"},{"name":"mbonchev-axway","email":"mbonchev@axway.com"},{"name":"pbozhkovaxway","email":"pbozhkov@axway.com"},{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"pboev-axway","email":"pboev@axway.com"},{"name":"jvos-axway","email":"jvos@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"4de5eace337b49707196b56fe0d750aab13e6a81","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.2.tgz","fileCount":7,"integrity":"sha512-tULok/VG6bp4vgmDAkwOGvB8xLM0GEUCFqA6Tw6T1nbluWSVmUXPbnu3t6eEzJUNjZLKoGdjfCB/uvHb0HSc5w==","signatures":[{"sig":"MEUCIFaynwAkErsFLPKjJCpF2xxyAgKb1tF5SWUN+wVfzpdMAiEAkYvB3FDpE7jdvO0BqW1ebSoXyCrmsaMYPSb1wIx7y8Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnRopCRA9TVsSAnZWagAA8b0QAKOEVUrsXrJ3kySkfVRf\n8fKvXP89w1XV+xAvEBgsCeWGS33dLqH0uSNOHi3xUfQY0v1L+xRezMZwLNz8\n7Y0EY9/bxKySV+LPqYCSrCjm6kX7NNHgka49+iEdvTlae3M3AgqxTcrkQtNO\nHI1KoCnEAhxO5TbgHIk3amvbagcCGowZ/32OHaCuhxQ7fB+yrWQT/3mUCKUW\nqcz/FLxj+4wtWLtDNUWywttUyF5JBnZvGVOXS1j93n7QcNqE7YyJ+WmYSiDW\nqLZFFSIsNl1x5t1rObNi0JnblaJqrTJ5Z7sFrDtYLWciEHkzkgutfANOvNS1\nDMMWR3PrzV104MU3SaFhXr7xFUTsu2wqeyx7p/l1mxZqQUCYyRKAdgj6kPWJ\n04bNier96DEsBUqj/Etrp8UKNOpSDHaFxqfhLNi8RNK8bHF4hj9aQMH1myY8\n5LgoiouAkSHnRppri91nXwOf5Rq2R9E1cdKnMRNd6dzmAV1fh1aGwNvy0IvL\n99pEm+DT/sXahbz2jA1H1cpgHAjO70n/4djMEY0VISSSQMliuoxTMrGbH2LZ\nYRpcyNvKNiIB1IJDu3WpXl5dL2iDWjDcnF6je6QJCXVL3fwYEgR6a1w+TsFo\nlqM2cUZgB7l5UEP3EvlkrUFu9rBcTRYgDSU+kiypaq1+1f9dgN7yqL+6RxnX\nUsTa\r\n=4qeA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.2.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"0f3061ca4de24d45ee42c0062ea1a86f2ebea411","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.1.0","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"8.11.3","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@axway/jsonpath":"^1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.2_1620908584165_0.3397494512709247","host":"s3://npm-registry-packages"}},"3.3.3":{"name":"axway-flow-graph","version":"3.3.3","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.3","maintainers":[{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"axway_darnaudov","email":"darnaudov@axway.com"},{"name":"ddimonov-axway","email":"ddimonov@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"},{"name":"pbozhkovaxway","email":"pbozhkov@axway.com"},{"name":"mbonchev-axway","email":"mbonchev@axway.com"},{"name":"axway-vertex","email":"agrakhov@axway.com"},{"name":"cdobrica","email":"cdobrica@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"c94c5e04d3c13ded2fb7740747aff7669c335345","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.3.tgz","fileCount":7,"integrity":"sha512-XeNtnA1oz/h9gW5236X1h1vnsCKEWVWx1EXRk4Ot3bq6f6JVYPhIZdqVxEv2rwfovuQTDcoULRcQBdlrkfUWMA==","signatures":[{"sig":"MEQCIGXDMie+oMy+EvCrRmgHhM/dx8bNzqiI4eGgzdXwklfiAiBrLPxSm+RAWDXTLijzDcBvqZrr730rr0e4ZgL2qj+L1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3XLfCRA9TVsSAnZWagAA0v0P/jMtd13zR0/1zxo+qhhK\n/SQL8/ncKIRrCqV2wzh4Dx1/jJHjgbKpf10UtA9a9f+86RLFMpf4sLjdHw5R\nfczWFylFUv9UtBkXLZhtfOJnm06IPOh5KSZxYHhBqiJG5/VqYrUXiwindBOz\nhs1mxe04CJNz58sp9+xFJTxRD3jLUgReqR5yDRWpnOInVUihW3a91VYuBhsI\n/BV4qwlqZMcEzqjbLE3znvpceOnsc7ksIrFZdJXQKDbFqbqc6E9RDY6PpcfO\nOfuU8HLeOWJL4kOW2DHkF1kCTdvtBoLo7cy5qMdG+zwu/EqbyV8cqRWN/a6P\nkfpWD79VjdKbYQqknqSJkZY6gELDqO9MCMvXjI9+3Ls6O9f4K44Y7E3GVYYE\n6dCxiEYPAhNVeNFpnMaTMAa7PdMHrQ3+PIgR8TdQcZcaptXoBKyV8BcvtXWE\ngwKUw3DIHOHTC87Fvf/ctnKsmt5yGOyeW00CiTOESXCX1LnW84UDQeJDTKj7\nIQBWgEFzkPA5HzJwYCVO7ERzKMox9WSzPeo8cbjMm1m55jHGLtKfqTNPh69l\nn0t9llcTORC4ySiYaqSYPlEhVBhb4G9mNiKPf/b9iC1yf0R8gHIPDqQLdXFV\ntSSjz2IxtPgTORIKQphwTVaWWa2beTwfYdDh8OecOkP5TdPeqYvEPpEGcVu3\nRZcK\r\n=1vq8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.3.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"bea449db0c25c6708e1d1f4e499b6025422bfbb3","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.14.13","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@axway/jsonpath":"^1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.3_1641902815392_0.6469263466474757","host":"s3://npm-registry-packages"}},"3.3.4":{"name":"axway-flow-graph","version":"3.3.4","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.4","maintainers":[{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"axway_darnaudov","email":"darnaudov@axway.com"},{"name":"ddimonov-axway","email":"ddimonov@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"},{"name":"pbozhkovaxway","email":"pbozhkov@axway.com"},{"name":"mbonchev-axway","email":"mbonchev@axway.com"},{"name":"axway-vertex","email":"agrakhov@axway.com"},{"name":"cdobrica","email":"cdobrica@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"a947b0b8aac65492f9d3501cbc56e7a2d8878f0a","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.4.tgz","fileCount":7,"integrity":"sha512-830MwKUdJCRuHYO8NpvBIwsgGV5gNeOGOLc8I7YbtpZbw+8D/3RvMA5Mp3QeO9cDJb4zlwEK3BeYCBxibITmzQ==","signatures":[{"sig":"MEUCIQCeY2/tt3hLvXtCUF0SeKOITR30JTDf67QH1pFd8QvBBAIgTUuGRl7hkL3suP3OPyBFn4nV4ARJasrMc1NOH89y/lU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJih31OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4HQ/8CGD1NtIuTEI53A3uEIZyBqhpzx8nkTKqzuWCZD89Z0v9Ie+I\r\njCgD/3pQosq+0Os3jEo347gF7hMw12aAiSRDoK90i32P57Bd6Uns0KVlp0eI\r\nOBQAjqYa/bGVOICXIF8lurKJJVybcV8NYFWBbO/0M2cfpy9ICNSl7dH0qoq3\r\nkoZOrcicEIB+wnSM45ff+m1PMs1Ginkul7AOC81U8j+XTihKn6ImMoGSg9zo\r\nciYGEoVlXvQtbR3I9gZ5XDZdqoezL4EfNCR1S2YKz6AFRkXV0s1med8SPx1s\r\nXtXHlke1EfEsY/cYKWgbDeJ0aHlLh4j6tZ1AnOhjulpEU0On7bjNZGpB9ibK\r\n0CdLAWZtTzxlftCM8MMnnc6lJa3nqveVGVNyMnIOt/KYzV3gcqaM7SIkKvY5\r\nAwvdg6mW8EuYkeAUjceuUW6eFyUy8lZd9zRJyFJDtqqpz/NKDNvte7fshODn\r\ndu6Bd9uQAeF0a9d3iom0eHME+j7uurEqxeaA2Ee3SvD9kcn0ezNnx8Kyh4Tz\r\nVgAHf0eNH8sb7oDFqsBdkAcS7AUlkyuCug7kF/o5dfzs38BPTkNoqTQld2MV\r\n991gQDwtBx3FqU3Jyc3wI3xfqilu/EVE89jKROpTPv/RUvhHw4167qprVKjQ\r\nKqORL3XZImw6Y7hKg4IhsY7TWDMY6OeKx7M=\r\n=J+OD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.4.tgz","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"5613eb3868fe0fe1c861f0530dc0f6a1af95e85a","scripts":{"test":"nyc mocha --require babel-register ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.14.13","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"devDependencies":{"webpack":"^4.28.1","json-loader":"^0.5.7","webpack-cli":"^3.2.1","babel-loader":"^7.1.2","@axway/jsonpath":"^1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.4_1653046605934_0.7624974855074365","host":"s3://npm-registry-packages"}},"3.3.5":{"name":"axway-flow-graph","version":"3.3.5","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","_id":"axway-flow-graph@3.3.5","maintainers":[{"name":"nkeranova","email":"nkeranova@axway.com"},{"name":"axway-npm","email":"builder11@axway.com"},{"name":"cb1kenobi","email":"chris@cb1inc.com"},{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},{"name":"awam","email":"ewanharris93@gmail.com"},{"name":"bladedancer","email":"bladedancer.gavin@gmail.com"},{"name":"axway_darnaudov","email":"darnaudov@axway.com"},{"name":"ddimonov-axway","email":"ddimonov@axway.com"},{"name":"neon-axway","email":"cshantakumar@axway.com"},{"name":"vchauhan","email":"vchauhan@axway.com"},{"name":"mdimitrova","email":"mdimitrova@axway.com"},{"name":"pdzhorev","email":"pdzhorev@axway.com"},{"name":"axway_alasdair","email":"ahurst@axway.com"},{"name":"pltod2","email":"pl.todorov@gmail.com"},{"name":"npetrovski-axway","email":"npetrovski@axway.com"},{"name":"pbozhkovaxway","email":"pbozhkov@axway.com"},{"name":"mbonchev-axway","email":"mbonchev@axway.com"},{"name":"axway-vertex","email":"agrakhov@axway.com"},{"name":"cdobrica","email":"cdobrica@axway.com"}],"homepage":"https://platform.axway.com","bugs":{"url":"https://axway.com"},"nyc":{"lines":97,"branches":90,"per-file":false,"functions":97,"statements":97},"dist":{"shasum":"d4445d2ccae34e78ec2f22b41d940a707a323862","tarball":"https://registry.npmjs.org/axway-flow-graph/-/axway-flow-graph-3.3.5.tgz","fileCount":7,"integrity":"sha512-i005tCDNKNmFh8xm110S2VFVrzpXb2t8LixiZjGmqIWyAfFyL6wrAEn5Ix4B7ZUhqVFr9RB3lsL3ibPO4LQOeg==","signatures":[{"sig":"MEYCIQD3pqRfr0kaje8Y/DEe0KygGiJTIg2T0yvJUv+G2rXfpAIhAMJcXkmmqqPzOihEmwPHWxG7cKdoZTD5uhwEBPJAzArM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJip2H9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/HA/+OSqFvAdXKBcqoPL+J6VLB7aZhyTl4JEpOZ8m6eAuX3olqMH5\r\nGNY212q1490xK4thOx3ab61XZcslTIDPPIg3id1gQpci7kqiZOKsY4auHhyj\r\nGQZG3WIS/N/Up6qvZQST/Sfk95Uq2blmeXTIsZ/Claa4I7Hw2pD73t0cr51E\r\nkWCxnx2RkoQhz8QMkKcO+ipMI9/3vQQXgTPNEUKf8CwMoyrnC0sfetsl+2x3\r\n/kYDsj8mm28rH9DLkReqllcQQWarB3BJ1ifV7uTQX0nsSbVsFBk9iTIzYvIn\r\nfkcAa5fjGO9GDckcpn7G2y4HzJ72vQ2ug5YDG0iFUT/w1x4rI90+Yf7CdLrB\r\nQETSeHRkBU5PMBR+cgzypXPMF+KWZSnbrMJ0PQFBtWAuWtzUtSkd/eGjrxWx\r\nUt9tvaHmvDUmkBUwOw5aW+dQRQVRbqylAuB9sji6J4ai1uL4EtiCpS0rEpL2\r\nP/XL7TzjbPjPH5DDz8cL/h4U2w7XJ+mmh8/EqtxcBb8yBWei9QQxYat5ZS53\r\n85x+7x+Br1kSeQGZnKZTb6c9YrU+aBKVijgzJMMthf0PjqWUVDciYCwih9j/\r\ne+kKlqDFiLA+6fjSUSZW+xh/UCt3sQlp2oX+gMvKVZoLUJ1sMNiOyiKlMQgi\r\nja9GXT0IMx3Dj0ud5yCTOgjNbVi1FWzXxe8=\r\n=Taro\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","_from":"file:published/axway-flow-graph@3.3.5.tgz","readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph_new)\n    * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n    * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n    * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n    * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n    * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n    * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n    * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n    * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n    * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n    * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n    * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n    * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n    * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n    * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n    * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n    * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n    * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n    * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n    * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n    * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n    * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n    * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n    * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n    * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n    * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n    * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n    * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>number</code>\n    * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n    * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n    * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n    * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n    * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n    * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n    * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n    * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n    * [.setName(name)](#module_axway-flow-graph..FlowGraph+setName)\n    * [.getDescription()](#module_axway-flow-graph..FlowGraph+getDescription) ⇒ <code>string</code>\n    * [.setDescription(description)](#module_axway-flow-graph..FlowGraph+setDescription)\n    * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n    * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n    * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n    * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n    * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n    * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n    * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n    * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n    * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n    * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not\nexist, they will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>number</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>number</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow name.  \n<a name=\"module_axway-flow-graph..FlowGraph+setName\"></a>\n\n#### flowGraph.setName(name)\nSets the name of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| name | <code>string</code> | The flow name. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getDescription\"></a>\n\n#### flowGraph.getDescription() ⇒ <code>string</code>\nGets the description of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow description.  \n<a name=\"module_axway-flow-graph..FlowGraph+setDescription\"></a>\n\n#### flowGraph.setDescription(description)\nSets the description of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| description | <code>string</code> | The flow description. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph_new)\n    * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n    * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n    * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n    * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n    * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n    * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n    * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n    * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n    * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n    * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n    * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n    * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n    * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n    * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n    * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n    * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n    * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n    * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n    * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n    * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n    * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n    * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n    * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n    * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n    * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n    * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n    * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>number</code>\n    * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n    * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n    * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n    * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n    * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n    * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n    * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n    * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n    * [.setName(name)](#module_axway-flow-graph..FlowGraph+setName)\n    * [.getDescription()](#module_axway-flow-graph..FlowGraph+getDescription) ⇒ <code>string</code>\n    * [.setDescription(description)](#module_axway-flow-graph..FlowGraph+setDescription)\n    * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n    * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n    * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n    * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n    * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n    * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n    * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n    * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n    * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n    * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not\nexist, they will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>number</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>number</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow name.  \n<a name=\"module_axway-flow-graph..FlowGraph+setName\"></a>\n\n#### flowGraph.setName(name)\nSets the name of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| name | <code>string</code> | The flow name. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getDescription\"></a>\n\n#### flowGraph.getDescription() ⇒ <code>string</code>\nGets the description of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow description.  \n<a name=\"module_axway-flow-graph..FlowGraph+setDescription\"></a>\n\n#### flowGraph.setDescription(description)\nSets the description of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| description | <code>string</code> | The flow description. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..objectToArray\"></a>\n\n### axway-flow-graph~objectToArray(object, map) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>array</code>\nConverts an object into an array of keys or values\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>array</code> - an array of values based on the map.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| object | <code>object</code> | the object to convert into an array |\n| map | <code>function</code> \\| <code>bool</code> | if true, return all the keys of the object                              if false, return all the values of the object                              if function, map object keys to array values. |\n\n<a name=\"module_axway-flow-graph..validateJsonPathSelector\"></a>\n\n### axway-flow-graph~validateJsonPathSelector(path) ⇒ <code>object</code>\nValidates a JSONPath selector\n\n**Kind**: inner method of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Returns**: <code>object</code> - - Validation error only if the selector is not valid  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| path | <code>string</code> | JSONPath selector to validate |\n\n\n## Building\n\n```bash\nnpm run build\n```\n\n## Author\n\nAxway <support@axway.com> https://axway.com\n\n## License\n\nThis code is proprietary, closed source software licensed to you by Axway. All Rights Reserved. You may not modify Axway’s code without express written permission of Axway. You are licensed to use and distribute your services developed with the use of this software and dependencies, including distributing reasonable and appropriate portions of the Axway code and dependencies. Except as set forth above, this code MUST not be copied or otherwise redistributed without express written permission of Axway. This module is licensed as part of the Axway Platform and governed under the terms of the Axway license agreement (General Conditions) located here: [https://support.axway.com/en/auth/general-conditions](https://support.axway.com/en/auth/general-conditions); EXCEPT THAT IF YOU RECEIVED A FREE SUBSCRIPTION, LICENSE, OR SUPPORT SUBSCRIPTION FOR THIS CODE, NOTWITHSTANDING THE LANGUAGE OF THE GENERAL CONDITIONS, AXWAY HEREBY DISCLAIMS ALL SUPPORT AND MAINTENANCE OBLIGATIONS, AS WELL AS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED INFRINGEMENT WARRANTIES, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, AND YOU ACCEPT THE PRODUCT AS-IS AND WITH ALL FAULTS, SOLELY AT YOUR OWN RISK. Your right to use this software is strictly limited to the term (if any) of the license or subscription originally granted to you.\n","browser":"dist/web/index.js","engines":{"node":">=8.9"},"gitHead":"84996884656e6fdb23e9bac0194fd0a6983fbaa3","scripts":{"test":"nyc mocha ./test","build":"npm run clean && npm run build:dev","clean":"shx rm -rf dist coverage .nyc_output","build:dev":"npm run build:lint && npm run test && npm run build:dist","build:dist":"npm run build:readme && npm run build:webpack","build:lint":"eslint .","check:used":"dependency-check ./package.json","test:watch":"npm test -- --watch","build:readme":"node-readme && shx mv README.md README.hbs && jsdoc2md --template README.hbs src/*.js > README.md && shx rm -rf README.hbs","check:unused":"dependency-check ./package.json --unused --no-dev -i deep-equal","build:webpack":"webpack","check:dependencies":"npm run check:used && npm run check:unused"},"_npmUser":{"name":"jamie.peabody","email":"jamie.peabody@gmail.com"},"_resolved":"","_integrity":"","repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"_npmVersion":"6.14.13","description":"Graph structure for parsing and manipulating flows","directories":{},"_nodeVersion":"14.17.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@axway/jsonpath":"^1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/axway-flow-graph_3.3.5_1655136764842_0.047231691614646465","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-11-15T16:15:04.102Z","modified":"2025-07-25T08:30:44.873Z","1.0.1":"2017-11-15T16:15:04.102Z","1.0.2-101":"2018-02-05T16:47:21.845Z","1.0.2-102":"2018-02-13T14:12:57.388Z","1.0.2-103":"2018-02-21T15:11:54.897Z","1.0.2-104":"2018-02-21T21:28:52.838Z","1.1.0":"2018-02-22T18:25:50.910Z","1.1.1-0":"2018-03-20T13:52:08.486Z","1.1.1-1":"2018-04-11T14:50:53.001Z","2.0.0-1":"2018-04-12T11:19:49.589Z","2.0.0-2":"2018-05-10T08:56:23.306Z","2.0.0-3":"2018-05-25T16:08:00.214Z","1.1.1":"2018-06-18T14:44:36.963Z","2.0.0-4":"2018-06-21T11:12:41.650Z","2.0.0":"2018-06-27T10:11:31.385Z","3.0.0":"2018-08-22T16:42:03.339Z","3.0.1":"2018-08-23T09:42:14.662Z","3.0.2":"2018-08-30T14:32:11.290Z","3.0.3":"2018-09-06T13:36:41.540Z","3.0.4":"2018-09-17T18:08:09.570Z","3.0.5":"2018-10-19T07:56:50.870Z","3.0.6":"2018-10-19T13:59:47.452Z","3.0.7":"2018-10-23T18:07:07.070Z","3.0.8":"2018-10-23T21:00:52.889Z","1.2.4":"2018-10-25T16:06:26.606Z","3.0.9":"2018-10-27T09:42:21.727Z","3.0.10":"2018-10-29T13:48:35.952Z","3.0.11":"2018-10-30T12:12:34.949Z","3.0.12":"2018-10-30T12:43:26.432Z","3.0.13":"2018-10-31T09:27:43.916Z","1.2.5-rdpp-5320.c71483.0":"2018-10-31T10:46:52.442Z","1.2.5":"2018-10-31T11:00:16.547Z","3.0.14":"2018-10-31T11:15:57.006Z","3.0.15":"2018-11-02T09:14:31.018Z","3.0.16":"2018-11-02T10:55:49.404Z","3.0.17":"2018-11-02T13:45:13.365Z","3.0.18":"2018-11-02T14:11:59.682Z","3.0.19":"2018-11-02T15:15:57.326Z","3.0.20":"2018-11-02T19:17:37.662Z","3.0.21":"2018-11-13T12:00:36.274Z","1.2.7":"2018-11-13T15:53:21.242Z","3.0.23":"2018-11-16T00:20:36.010Z","3.0.24":"2019-01-14T16:35:15.067Z","3.0.25":"2019-01-30T10:41:35.861Z","1.2.9":"2019-02-01T10:58:10.676Z","1.2.10":"2019-02-11T15:38:05.688Z","1.2.11":"2019-02-15T18:34:23.741Z","3.0.26":"2019-02-21T16:15:38.447Z","1.2.12":"2019-02-25T22:54:44.057Z","3.0.27":"2019-04-09T11:03:21.837Z","3.0.28":"2019-04-17T18:54:53.495Z","3.0.29":"2019-05-10T18:53:57.605Z","3.0.30":"2019-05-15T13:05:47.074Z","1.2.13":"2019-05-24T08:01:10.819Z","3.0.31":"2019-07-19T12:27:14.966Z","3.0.32":"2019-09-27T11:41:31.382Z","3.0.33":"2019-10-04T12:29:10.524Z","3.0.34":"2019-10-11T12:37:10.479Z","3.1.0":"2019-11-22T11:38:04.712Z","3.1.1":"2019-11-27T12:59:01.448Z","3.1.2":"2019-11-29T11:29:05.328Z","3.1.3":"2020-05-20T10:57:01.949Z","3.1.4":"2020-05-27T16:44:32.634Z","3.2.0":"2020-08-14T14:43:09.811Z","3.3.0":"2020-12-17T20:17:16.141Z","3.3.1":"2021-04-30T13:07:03.643Z","3.3.2":"2021-05-13T12:23:04.381Z","3.3.3":"2022-01-11T12:06:55.617Z","3.3.4":"2022-05-20T11:36:46.076Z","3.3.5":"2022-06-13T16:12:45.132Z"},"bugs":{"url":"https://axway.com"},"author":{"url":"https://axway.com","name":"Axway","email":"support@axway.com"},"license":"SEE LICENCE IN LICENSE","homepage":"https://platform.axway.com","keywords":["amplify","api-builder","axway","@axway/flow","graph"],"repository":{"url":"https://git.ecd.axway.int/amplify/api-builder","type":"git"},"description":"Graph structure for parsing and manipulating flows","maintainers":[{"email":"nkeranova@axway.com","name":"nkeranova"},{"email":"builder11@axway.com","name":"axway-npm"},{"email":"bladedancer.gavin@gmail.com","name":"bladedancer"},{"email":"ddimonov@axway.com","name":"ddimonov-axway"},{"email":"ashtripathi@axway.com","name":"neon-axway"},{"email":"vchauhan@axway.com","name":"vchauhan"},{"email":"mdimitrova@axway.com","name":"mdimitrova"},{"email":"pdzhorev@axway.com","name":"pdzhorev"},{"email":"ahurst@axway.com","name":"axway_alasdair"},{"email":"pl.todorov@gmail.com","name":"pltod2"},{"email":"mbonchev@axway.com","name":"mbonchev-axway"},{"email":"bchristiansen@axway.com","name":"axway-vertex"},{"email":"npm.modules@axway.com","name":"buildernpmuser"}],"readme":"# axway-flow-graph\n\nGraph structure for parsing and manipulating flows\n\n# API Reference\n\n<a name=\"module_axway-flow-graph..FlowValidator\"></a>\n\n### axway-flow-graph~FlowValidator\nHelper for validating flows. The validation checks for:\n- no cyclical loops\n- no undefined nodes in the routing\n\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n**Access**: public  \n\n* [~FlowValidator](#module_axway-flow-graph..FlowValidator)\n    * [new FlowValidator(flowGraph, credentialManager)](#new_module_axway-flow-graph..FlowValidator_new)\n    * [._strongconnect(vertex, stack, stronglyConnectedGroups)](#module_axway-flow-graph..FlowValidator+_strongconnect)\n    * [._parseParamValue(param)](#module_axway-flow-graph..FlowValidator+_parseParamValue) ⇒ <code>object</code>\n    * [._addValidationError(validationData, error)](#module_axway-flow-graph..FlowValidator+_addValidationError)\n    * [._addValidationWarning(validationData, warning)](#module_axway-flow-graph..FlowValidator+_addValidationWarning)\n    * [.checkForLoops(validationData)](#module_axway-flow-graph..FlowValidator+checkForLoops) ⇒ <code>boolean</code>\n    * [.checkForMissingRoutes(validationData)](#module_axway-flow-graph..FlowValidator+checkForMissingRoutes) ⇒ <code>boolean</code>\n    * [.checkForInvalidStart(validationData)](#module_axway-flow-graph..FlowValidator+checkForInvalidStart) ⇒ <code>boolean</code>\n    * [.checkNodeOutputContext(validationData)](#module_axway-flow-graph..FlowValidator+checkNodeOutputContext) ⇒ <code>boolean</code>\n    * [.validate()](#module_axway-flow-graph..FlowValidator+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowValidator_new\"></a>\n\n#### new FlowValidator(flowGraph, credentialManager)\nCreate a flow validator.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowGraph | <code>object</code> | a FlowGraph instance |\n| credentialManager | <code>object</code> | a credentialManager |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_strongconnect\"></a>\n\n#### flowValidator.\\_strongconnect(vertex, stack, stronglyConnectedGroups)\nUsing 'Tarjan's strongly connected components algorithm' to group strongly\nconencted nodes (loops).\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertex | <code>object</code> | The node/vertex to process. |\n| stack | <code>array</code> | The stack for vertex processing. |\n| stronglyConnectedGroups | <code>array</code> | The resulting list of strongly connected groups. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_parseParamValue\"></a>\n\n#### flowValidator.\\_parseParamValue(param) ⇒ <code>object</code>\nParses a parameter to a given type.\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - containing error code in 'error' or parsed value in 'data'.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| param | <code>object</code> | flow node param object |\n| param.type | <code>string</code> | type of data to parse. Defaults to jsonpaht |\n| param.value | <code>string</code> | stringified data to be parsed |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationError\"></a>\n\n#### flowValidator.\\_addValidationError(validationData, error)\nAdds a validation error to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| error | <code>object</code> | Object containg an error |\n\n<a name=\"module_axway-flow-graph..FlowValidator+_addValidationWarning\"></a>\n\n#### flowValidator.\\_addValidationWarning(validationData, warning)\nAdds a validation warning to validationData\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | Object containing the validation warnings and errors |\n| warning | <code>object</code> | Object containg an warning |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForLoops\"></a>\n\n#### flowValidator.checkForLoops(validationData) ⇒ <code>boolean</code>\nCheck for any closed loops in the graph.\nIf there are loops loop chains are stored in validationData.errors.flowErrors.loops.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are loops detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForMissingRoutes\"></a>\n\n#### flowValidator.checkForMissingRoutes(validationData) ⇒ <code>boolean</code>\nCheck nodes that have connections to non-existent targets.\nIf there are undefined connections the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].missingRoutes.\n\nPossible errors and error codes:\n type: invalidNodeRoute\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are missing routes detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkForInvalidStart\"></a>\n\n#### flowValidator.checkForInvalidStart(validationData) ⇒ <code>boolean</code>\nCheck start to see if it is an invalid type or pointing to a non-existant node.\nIf start is invalid the details are are stored in\nvalidationData.errors.flowErrors.invalidStart.\n\nPossible errors and error codes:\n type: invalidStart\n code: INVALID_NODE\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if start is invalid.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+checkNodeOutputContext\"></a>\n\n#### flowValidator.checkNodeOutputContext(validationData) ⇒ <code>boolean</code>\nCheck that the flow node output contexts are valid JSONPath selectors.\nIf output contexts are invalid, the details are are stored in\nvalidationData.errors.nodeErrors[nodeId].invalidOuputContext.\n\nPossible errors and error codes:\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>boolean</code> - true if there are invalid ouput contexts detected.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validationData | <code>object</code> | The object to add the validation errors to. |\n\n<a name=\"module_axway-flow-graph..FlowValidator+validate\"></a>\n\n#### flowValidator.validate() ⇒ <code>object</code>\nRun checks on the flow and report validation errors as they are found.\n\nPossible errors and error codes:\n type: loop\n code: INVALID_NODE\n\n type: invalidNodeRoute\n code: INVALID_NODE\n\n type: invalidStart\n code: INVALID_NODE\n\n type: invalidNodeOutput\n code: INVALID_JSONPATH\n\n**Kind**: instance method of [<code>FlowValidator</code>](#module_axway-flow-graph..FlowValidator)  \n**Returns**: <code>object</code> - the validation report  \n**Access**: public  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph_new)\n    * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n    * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n    * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n    * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n    * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n    * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n    * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n    * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n    * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n    * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n    * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n    * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n    * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n    * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n    * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n    * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n    * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n    * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n    * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n    * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n    * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n    * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n    * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n    * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n    * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n    * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n    * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>number</code>\n    * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n    * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n    * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n    * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n    * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n    * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n    * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n    * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n    * [.setName(name)](#module_axway-flow-graph..FlowGraph+setName)\n    * [.getDescription()](#module_axway-flow-graph..FlowGraph+getDescription) ⇒ <code>string</code>\n    * [.setDescription(description)](#module_axway-flow-graph..FlowGraph+setDescription)\n    * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n    * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n    * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n    * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n    * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n    * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n    * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n    * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n    * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n    * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not\nexist, they will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>number</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>number</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameterByName\"></a>\n\n#### flowGraph.\\_removeParameterByName(location, nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>number</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_removeParameter\"></a>\n\n#### flowGraph.\\_removeParameter(location, nodeId, index) ⇒ <code>object</code>\nRemoves a parameter by index from a node in the flow.  Does not trigger change.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| index | <code>number</code> | the index of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateOutputContext\"></a>\n\n#### flowGraph.updateOutputContext(nodeId, name, value)\nModifies the JSONPath context of an output\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the output |\n| value | <code>string</code> | the new JSONPath context |\n\n<a name=\"module_axway-flow-graph..FlowGraph+connectNode\"></a>\n\n#### flowGraph.connectNode(sourceId, sourceOutput, targetId)\nConnects a node output to the specified target.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+disconnectNode\"></a>\n\n#### flowGraph.disconnectNode(sourceId, sourceOutput, targetId)\nDisconnects a target node from a parent node's source and output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| sourceId | <code>string</code> | The source node for the connection. |\n| sourceOutput | <code>string</code> | The output in the source node for the connection. |\n| targetId | <code>string</code> | The id of the target node to connect to. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+isEmpty\"></a>\n\n#### flowGraph.isEmpty() ⇒ <code>boolean</code>\nIndicates if the flow is empty, with no nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>boolean</code> - `true` if the flow is empty.  \n<a name=\"module_axway-flow-graph..FlowGraph+getName\"></a>\n\n#### flowGraph.getName() ⇒ <code>string</code>\nGets the name of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow name.  \n<a name=\"module_axway-flow-graph..FlowGraph+setName\"></a>\n\n#### flowGraph.setName(name)\nSets the name of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| name | <code>string</code> | The flow name. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getDescription\"></a>\n\n#### flowGraph.getDescription() ⇒ <code>string</code>\nGets the description of the flow from flow info meta-data.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - The flow description.  \n<a name=\"module_axway-flow-graph..FlowGraph+setDescription\"></a>\n\n#### flowGraph.setDescription(description)\nSets the description of the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| description | <code>string</code> | The flow description. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getSymbol\"></a>\n\n#### flowGraph.getSymbol() ⇒ <code>symbol</code>\nGet the unique symbol of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>symbol</code> - the flow symbol  \n<a name=\"module_axway-flow-graph..FlowGraph+getDefinition\"></a>\n\n#### flowGraph.getDefinition() ⇒ <code>object</code>\nGets the definition of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow definition  \n<a name=\"module_axway-flow-graph..FlowGraph+getGraph\"></a>\n\n#### flowGraph.getGraph() ⇒ <code>object</code>\nGets the graph representation of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the flow graph representation  \n<a name=\"module_axway-flow-graph..FlowGraph+getId\"></a>\n\n#### flowGraph.getId() ⇒ <code>string</code>\nGets the Id of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - the flow id  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdges\"></a>\n\n#### flowGraph.getEdges() ⇒ <code>Array.&lt;object&gt;</code>\nGets the edges of the flow graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;object&gt;</code> - the edges of the graph  \n<a name=\"module_axway-flow-graph..FlowGraph+getEdge\"></a>\n\n#### flowGraph.getEdge(output, fromId, toId) ⇒ <code>object</code> \\| <code>null</code>\nGet the edge between two nodes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - the edge between two nodes. Null if no edge exists.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the node output the edges belong to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertices\"></a>\n\n#### flowGraph.getVertices([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the vertices of the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the vertices of the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodes\"></a>\n\n#### flowGraph.getNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getChildren\"></a>\n\n#### flowGraph.getChildren(nodeId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get children for. |\n| output | <code>string</code> | the node output to get the children for.                          If omitted then all children are returned. |\n| [idsOnly] | <code>bool</code> | if the node idsOnly should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getParents\"></a>\n\n#### flowGraph.getParents(nodeId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the Id of the node to get parents for. |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getTerminalNodes\"></a>\n\n#### flowGraph.getTerminalNodes([idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the terminal nodes of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the terminal nodes of the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [idsOnly] | <code>bool</code> | if the node ids should be returned rather than the nodes |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getVertex\"></a>\n\n#### flowGraph.getVertex(vertexId) ⇒ <code>object</code>\nGet the vertex which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a vertex in the graph  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNode\"></a>\n\n#### flowGraph.getNode(nodeId) ⇒ <code>object</code> \\| <code>null</code>\nGet the node which matches the ID specified\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> \\| <code>null</code> - a node in the flow, or null  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getNodeUnsafe\"></a>\n\n#### flowGraph.getNodeUnsafe(nodeId) ⇒ <code>object</code>\nGet the node which matches the ID specified and will throw an error if node was not found.\nCall this if you expect the node to exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - a node in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of the node to return |\n\n<a name=\"module_axway-flow-graph..FlowGraph+getValidation\"></a>\n\n#### flowGraph.getValidation() ⇒ <code>object</code>\nGet the validation state of the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state of the flow  \n<a name=\"module_axway-flow-graph..FlowGraph+registerValidator\"></a>\n\n#### flowGraph.registerValidator(validator)\nRegisters a FlowValidator type class to the flow. When validation is run, this class will\nbe used to validate the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validator | <code>FlowValidator</code> | A class which is a FlowValidator |\n\n<a name=\"module_axway-flow-graph..FlowGraph+validate\"></a>\n\n#### flowGraph.validate() ⇒ <code>object</code>\nValidate the flow - check all the nodes, no cycles, syntax, etc.\nUpdate the definition to make validation report available to clients\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the validation state  \n<a name=\"module_axway-flow-graph..FlowGraph\"></a>\n\n### axway-flow-graph~FlowGraph\n**Kind**: inner class of [<code>axway-flow-graph</code>](#module_axway-flow-graph)  \n\n* [~FlowGraph](#module_axway-flow-graph..FlowGraph)\n    * [new FlowGraph()](#new_module_axway-flow-graph..FlowGraph_new)\n    * [new FlowGraph(flowId, flowdef)](#new_module_axway-flow-graph..FlowGraph_new)\n    * [._ensureVertex(vertexId, info)](#module_axway-flow-graph..FlowGraph+_ensureVertex) ⇒ <code>object</code>\n    * [._deleteVertex(vertexId)](#module_axway-flow-graph..FlowGraph+_deleteVertex)\n    * [._getVertexChildren(vertexId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._getVertexParents(vertexId, [idsOnly])](#module_axway-flow-graph..FlowGraph+_getVertexParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [._ensureEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+_ensureEdge) ⇒ <code>object</code>\n    * [._deleteEdge(fromId, output, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdge)\n    * [._deleteEdges(fromId, toId)](#module_axway-flow-graph..FlowGraph+_deleteEdges)\n    * [._setValidation(validation)](#module_axway-flow-graph..FlowGraph+_setValidation)\n    * [._getOutputRoutes(nodeId)](#module_axway-flow-graph..FlowGraph+_getOutputRoutes) ⇒ <code>object</code>\n    * [._onChange()](#module_axway-flow-graph..FlowGraph+_onChange)\n    * [._buildGraph()](#module_axway-flow-graph..FlowGraph+_buildGraph)\n    * [._buildVertex(nodeId)](#module_axway-flow-graph..FlowGraph+_buildVertex)\n    * [.changeNodeName(nodeId, name)](#module_axway-flow-graph..FlowGraph+changeNodeName)\n    * [.changeMethod(nodeId, method, nodehandler)](#module_axway-flow-graph..FlowGraph+changeMethod)\n    * [.insertNode(node, nodeId)](#module_axway-flow-graph..FlowGraph+insertNode) ⇒ <code>string</code>\n    * [.deleteNode(nodeId)](#module_axway-flow-graph..FlowGraph+deleteNode)\n    * [.deleteRoute(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoute)\n    * [.deleteRoutes(fromId, toId)](#module_axway-flow-graph..FlowGraph+deleteRoutes)\n    * [.setStart(nodeId)](#module_axway-flow-graph..FlowGraph+setStart)\n    * [.unsetStart()](#module_axway-flow-graph..FlowGraph+unsetStart)\n    * [.addParameter(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addParameter)\n    * [.updateParameter(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateParameter)\n    * [.removeParameter(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeParameter) ⇒ <code>object</code>\n    * [.addAuthorization(nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+addAuthorization)\n    * [.updateAuthorization(nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+updateAuthorization)\n    * [.removeAuthorization(nodeId, name)](#module_axway-flow-graph..FlowGraph+removeAuthorization) ⇒ <code>object</code>\n    * [._addParameter(location, nodeId, name, value, [type])](#module_axway-flow-graph..FlowGraph+_addParameter)\n    * [._getParameter(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameter) ⇒ <code>object</code>\n    * [._getParameterIndex(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_getParameterIndex) ⇒ <code>number</code>\n    * [._updateParameter(location, nodeId, name, prop, newValue)](#module_axway-flow-graph..FlowGraph+_updateParameter)\n    * [._removeParameterByName(location, nodeId, name)](#module_axway-flow-graph..FlowGraph+_removeParameterByName) ⇒ <code>object</code>\n    * [._removeParameter(location, nodeId, index)](#module_axway-flow-graph..FlowGraph+_removeParameter) ⇒ <code>object</code>\n    * [.updateOutputContext(nodeId, name, value)](#module_axway-flow-graph..FlowGraph+updateOutputContext)\n    * [.connectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+connectNode)\n    * [.disconnectNode(sourceId, sourceOutput, targetId)](#module_axway-flow-graph..FlowGraph+disconnectNode)\n    * [.isEmpty()](#module_axway-flow-graph..FlowGraph+isEmpty) ⇒ <code>boolean</code>\n    * [.getName()](#module_axway-flow-graph..FlowGraph+getName) ⇒ <code>string</code>\n    * [.setName(name)](#module_axway-flow-graph..FlowGraph+setName)\n    * [.getDescription()](#module_axway-flow-graph..FlowGraph+getDescription) ⇒ <code>string</code>\n    * [.setDescription(description)](#module_axway-flow-graph..FlowGraph+setDescription)\n    * [.getSymbol()](#module_axway-flow-graph..FlowGraph+getSymbol) ⇒ <code>symbol</code>\n    * [.getDefinition()](#module_axway-flow-graph..FlowGraph+getDefinition) ⇒ <code>object</code>\n    * [.getGraph()](#module_axway-flow-graph..FlowGraph+getGraph) ⇒ <code>object</code>\n    * [.getId()](#module_axway-flow-graph..FlowGraph+getId) ⇒ <code>string</code>\n    * [.getEdges()](#module_axway-flow-graph..FlowGraph+getEdges) ⇒ <code>Array.&lt;object&gt;</code>\n    * [.getEdge(output, fromId, toId)](#module_axway-flow-graph..FlowGraph+getEdge) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getVertices([idsOnly])](#module_axway-flow-graph..FlowGraph+getVertices) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getChildren(nodeId, output, [idsOnly])](#module_axway-flow-graph..FlowGraph+getChildren) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getParents(nodeId, [idsOnly])](#module_axway-flow-graph..FlowGraph+getParents) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getTerminalNodes([idsOnly])](#module_axway-flow-graph..FlowGraph+getTerminalNodes) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\n    * [.getVertex(vertexId)](#module_axway-flow-graph..FlowGraph+getVertex) ⇒ <code>object</code>\n    * [.getNode(nodeId)](#module_axway-flow-graph..FlowGraph+getNode) ⇒ <code>object</code> \\| <code>null</code>\n    * [.getNodeUnsafe(nodeId)](#module_axway-flow-graph..FlowGraph+getNodeUnsafe) ⇒ <code>object</code>\n    * [.getValidation()](#module_axway-flow-graph..FlowGraph+getValidation) ⇒ <code>object</code>\n    * [.registerValidator(validator)](#module_axway-flow-graph..FlowGraph+registerValidator)\n    * [.validate()](#module_axway-flow-graph..FlowGraph+validate) ⇒ <code>object</code>\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph()\nFlowGraph object\n\n<a name=\"new_module_axway-flow-graph..FlowGraph_new\"></a>\n\n#### new FlowGraph(flowId, flowdef)\nCreates an instance of FlowGraph.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| flowId | <code>string</code> | The id of this flow. |\n| flowdef | <code>object</code> | The flow definition. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureVertex\"></a>\n\n#### flowGraph.\\_ensureVertex(vertexId, info) ⇒ <code>object</code>\nEnsures that a vertex will exist\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the vertex which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the ID of the vertex |\n| info | <code>object</code> | info to be set on the vertex. If vertex already exists, the info will                      be merged with the existing info. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteVertex\"></a>\n\n#### flowGraph.\\_deleteVertex(vertexId)\nDeletes a vertex from the graph\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the id of the vertex to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexChildren\"></a>\n\n#### flowGraph.\\_getVertexChildren(vertexId, output, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the children of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the child vertices of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get children for. |\n| output | <code>string</code> | the vetex output to get the children for. |\n| [idsOnly] | <code>bool</code> | if the vertex idsOnly should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getVertexParents\"></a>\n\n#### flowGraph.\\_getVertexParents(vertexId, [idsOnly]) ⇒ <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code>\nGets the parents of a vertex in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>Array.&lt;string&gt;</code> \\| <code>Array.&lt;object&gt;</code> - the parent nodes of a vertex in the flow  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| vertexId | <code>string</code> | the Id of the vertex to get parents for. |\n| [idsOnly] | <code>bool</code> | if the vertex ids should be returned rather than the vertices |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_ensureEdge\"></a>\n\n#### flowGraph.\\_ensureEdge(output, fromId, toId) ⇒ <code>object</code>\nEnsures that an edge will exist between any two vertices. If any of the vertices do not\nexist, they will be created.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the edge which matched or was created.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| fromId | <code>string</code> | the ID of the vertex where the edge starts |\n| toId | <code>string</code> | this ID of the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdge\"></a>\n\n#### flowGraph.\\_deleteEdge(fromId, output, toId)\nDeletes an edge from one node to another.\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| output | <code>string</code> | the vertex output group the edge belongs to. |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_deleteEdges\"></a>\n\n#### flowGraph.\\_deleteEdges(fromId, toId)\nDeletes the edges from one node to another (across all outputs).\nRemoves the parent/child where necesarry from each vertex.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the vertex where the edge starts |\n| toId | <code>string</code> | the vertex where the edge ends |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_setValidation\"></a>\n\n#### flowGraph.\\_setValidation(validation)\nSets the validation state on the flow definition\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| validation | <code>object</code> | the validation state |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getOutputRoutes\"></a>\n\n#### flowGraph.\\_getOutputRoutes(nodeId) ⇒ <code>object</code>\nGets a list of all nodes which a node may route to grouped by output.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - A map of IDs for routes from the node specified grouped by output.  \n**Access**: protected  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the ID of a node to get routes for |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_onChange\"></a>\n\n#### flowGraph.\\_onChange()\nGenerates a unique symbol of the flow. Should be called whenever the flow changes.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildGraph\"></a>\n\n#### flowGraph.\\_buildGraph()\nBuild a graph from the flow definition.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Access**: protected  \n<a name=\"module_axway-flow-graph..FlowGraph+_buildVertex\"></a>\n\n#### flowGraph.\\_buildVertex(nodeId)\nBuilds a vertex for a nodeId\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The nodeId from which to build a vertex. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeNodeName\"></a>\n\n#### flowGraph.changeNodeName(nodeId, name)\nSets the name of a node\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | Node ID |\n| name | <code>string</code> | New node name |\n\n<a name=\"module_axway-flow-graph..FlowGraph+changeMethod\"></a>\n\n#### flowGraph.changeMethod(nodeId, method, nodehandler)\nModifies the method of a node to match a new spec\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The id of the node to update. |\n| method | <code>string</code> | the method to use |\n| nodehandler | <code>object</code> | the node handler in use |\n\n<a name=\"module_axway-flow-graph..FlowGraph+insertNode\"></a>\n\n#### flowGraph.insertNode(node, nodeId) ⇒ <code>string</code>\nInserts a node into the flow graph.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>string</code> - - the inserted nodeId  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| node | <code>object</code> | The node to insert. |\n| nodeId | <code>string</code> | The id of the node to insert.  If supplied, it must be unique.  If not supplied, the node id will be generated. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteNode\"></a>\n\n#### flowGraph.deleteNode(nodeId)\nDelete a specific node from the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the id of the node to delete |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoute\"></a>\n\n#### flowGraph.deleteRoute(output, fromId, toId)\nDelete the output route from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| output | <code>string</code> | the output to delete the route for. |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+deleteRoutes\"></a>\n\n#### flowGraph.deleteRoutes(fromId, toId)\nDelete all the output routes from one node to another.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| fromId | <code>string</code> | the node id the routes are being deleted from. |\n| toId | <code>string</code> | the node id being removed from the routes. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+setStart\"></a>\n\n#### flowGraph.setStart(nodeId)\nSets a node as the start node for the flow.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | The start node for the flow. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+unsetStart\"></a>\n\n#### flowGraph.unsetStart()\nClears the start node for the flow.  This action will make the flow invalid.\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n<a name=\"module_axway-flow-graph..FlowGraph+addParameter\"></a>\n\n#### flowGraph.addParameter(nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateParameter\"></a>\n\n#### flowGraph.updateParameter(nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeParameter\"></a>\n\n#### flowGraph.removeParameter(nodeId, name) ⇒ <code>object</code>\nRemoves a parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+addAuthorization\"></a>\n\n#### flowGraph.addAuthorization(nodeId, name, value, [type])\nAdds a authorization parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+updateAuthorization\"></a>\n\n#### flowGraph.updateAuthorization(nodeId, name, prop, newValue)\nUpdates a authorization parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field to update (name|type|value) if string,                               or the new value of the parameter |\n| newValue | <code>string</code> | the new value of the prop specified if it is a string |\n\n<a name=\"module_axway-flow-graph..FlowGraph+removeAuthorization\"></a>\n\n#### flowGraph.removeAuthorization(nodeId, name) ⇒ <code>object</code>\nRemoves a authorization parameter by name from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter that was removed  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_addParameter\"></a>\n\n#### flowGraph.\\_addParameter(location, nodeId, name, value, [type])\nAdds a parameter to a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| location | <code>string</code> |  | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> |  | the node id |\n| name | <code>string</code> |  | the name of the parameter |\n| value | <code>string</code> |  | the value of the parameter |\n| [type] | <code>string</code> | <code>&quot;jsonpath&quot;</code> | the type of the parameter. |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameter\"></a>\n\n#### flowGraph.\\_getParameter(location, nodeId, name) ⇒ <code>object</code>\nGets a parameter from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>object</code> - the parameter  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_getParameterIndex\"></a>\n\n#### flowGraph.\\_getParameterIndex(location, nodeId, name) ⇒ <code>number</code>\nGets a parameter index from the node by name\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n**Returns**: <code>number</code> - the parameter index  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the name of the parameter |\n\n<a name=\"module_axway-flow-graph..FlowGraph+_updateParameter\"></a>\n\n#### flowGraph.\\_updateParameter(location, nodeId, name, prop, newValue)\nUpdates a parameter from a node in the flow\n\n**Kind**: instance method of [<code>FlowGraph</code>](#module_axway-flow-graph..FlowGraph)  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| location | <code>string</code> | the parameter location, one of: parameters|authorizations |\n| nodeId | <code>string</code> | the node id |\n| name | <code>string</code> | the current name of the parameter |\n| prop | <code>string</code> \\| <code>object</code> | the field t","readmeFilename":"README.md"}