{"_id":"tree-surgeon","_rev":"66-281ef45b9293a44659a6f6a677b78c4e","name":"tree-surgeon","description":"Tools for editing tree structures using a relational model","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"tree-surgeon","version":"0.0.0","description":"Tools for editing tree structures using a relational model","main":"tree.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"LICENSE","bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","gitHead":"66c6110eccf145952ec84283357771cb82447d0e","_id":"tree-surgeon@0.0.0","_shasum":"42746b650f6bcb07a7ce54dc5a58c1af53e999b6","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"42746b650f6bcb07a7ce54dc5a58c1af53e999b6","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.0.tgz","integrity":"sha512-cvyPGTx3J2tKDgkxv8BO2raytS0j4y6X+V9bq61zt4zMUANDFFKDKhMU1M6/+I7Y0B6B7psU4Z17Tdv/L8eBNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA0kjBxLrCNuidVYLTA0EkMqMN3HjrkdI1NLOR4TQvRTAiBeRpB3sse4c0b93oep/MjHHwYdPZPTk2HG7LYDTYQLiw=="}]}},"0.0.1":{"name":"tree-surgeon","version":"0.0.1","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE","bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","mocha":"^1.21.4"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"978970fdd8bdeb12f0babfd4a3daeaf6b1584c18","_id":"tree-surgeon@0.0.1","_shasum":"1d0f4d5a09fea34baf61e56d5d4a1ef4d6d7e998","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"1d0f4d5a09fea34baf61e56d5d4a1ef4d6d7e998","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.1.tgz","integrity":"sha512-6Z4fAd52SpVsYPEFiqA7k6uM2EMHlL/uZDYPaXDxMoZlHlnjE2t4oETwXH1OieIP7emVytqNrt5DuJnOh+wJ3A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVkdoPG0glFlMzgMuxwEgzOMi3Ok33zC6tjqvXd/fIdQIgJACo1KKAo1BqJAReeqQJUu0uveIhtOp+5DpC8XfUGfs="}]}},"0.0.2":{"name":"tree-surgeon","version":"0.0.2","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE","bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","mocha":"^1.21.4"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"9c3323834a947be5454603a9482b4eaa5cfe644c","_id":"tree-surgeon@0.0.2","_shasum":"db68b05636bc1b9be7ca8d36b53dfa2a215764ad","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"db68b05636bc1b9be7ca8d36b53dfa2a215764ad","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.2.tgz","integrity":"sha512-7DuY+56AXmF9pw20Pu273j+8E+8tSk2cm5kFwSz1cblWjOkgiO24ZCvSPwCuDqLMOBlw0fIRunScV4YqOkoZkA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDU1shMt93s3vAQ4dY4CIdIc1B4qCq5fTdSMXNMs65FfAIhAK5tRYhaQJmyDoyETbwgCJqmyd6X4E/8WYXIZV2SX/MC"}]}},"0.0.3":{"name":"tree-surgeon","version":"0.0.3","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE","bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","mocha":"^1.21.4"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"918f86c883f55dbdb274492cb3ccd9002e47b361","_id":"tree-surgeon@0.0.3","_shasum":"001302be1828edf83f53509b883e2c3a54066a2f","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"001302be1828edf83f53509b883e2c3a54066a2f","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.3.tgz","integrity":"sha512-Fp00WRLE9ubb1wC315GsSzotMQGYqwz9nNMp29OZvvwCkvxuFPYEpl0VcG1NgBgy/6YSmitCOaracq1ULgUFEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC7HRxngzAqqJdny9ON/mzGIxa4FeZ0fw2JusdHxQu7gIgFG4dUvvHTx8biKfBW42CtQ/qN8Rgxuz2J5YkZq//iK8="}]}},"0.0.4":{"name":"tree-surgeon","version":"0.0.4","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"616da18728ac3013b1a14a4e255c47355ec06ecd","_id":"tree-surgeon@0.0.4","_shasum":"b1a0cceea8d74db3247c04540ac6a5d2571e253e","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"b1a0cceea8d74db3247c04540ac6a5d2571e253e","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.4.tgz","integrity":"sha512-AcrtTKd2MIhOCtRP4QskSpGGe9Zl5suO2bBbYE+Q6W51sHDo+KvJTuPLOHXnH16MQA4P6UiicKJh+SKVu1jMZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKBSiWLDHoSWtAvsyFeugCeByB5z3clgwTJtD8a6n78AiEA8FEtalHJLpeIRQJw4Nvi2x39alAcNbnvK/udHgDjI58="}]}},"0.0.5":{"name":"tree-surgeon","version":"0.0.5","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"d239d1bb4869a06032ab18a5184ac3dbb740a594","_id":"tree-surgeon@0.0.5","_shasum":"27badb1a3618ca35538d212cabdc67d506ec9fc0","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"27badb1a3618ca35538d212cabdc67d506ec9fc0","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.5.tgz","integrity":"sha512-O1SsVUSRy7xkm6zXITfk2Uw0Wv2o26wwiq9EFL0sk7Nt7gYKOQwE4N0ON/csJ3qlx2+Jla6VGbuT4f6v7/aRrQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVu78rvnimEX+oS7ZYHQCc97K4edPZoOjSTVyn9bLGXwIgOPWIK+dAUecaiWK8cpfMot2iL6WWWoxeDxEP+LSZIAg="}]}},"0.0.6":{"name":"tree-surgeon","version":"0.0.6","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"0f3702ec71be3d080a3b771424c617010e3a0250","_id":"tree-surgeon@0.0.6","_shasum":"dbd05eebe43c52007c83e0b1dfb7b7c6607068fb","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"dbd05eebe43c52007c83e0b1dfb7b7c6607068fb","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.6.tgz","integrity":"sha512-BSfT4SvPp69zhbLkpEJPs3JQWCDDvapfn4JO5oOnv1hbAEigZOSUXvBd1coaEubx3WxJ1Q9nbPWxCkic4jcdDw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhplcvTIAr6HJVMcJA8bhM3iJ70xhKtSQr49GaqvWeSwIgLao1Vgbnxzn1fX2iNX7GwZ2XWxgtZcUibCSJTojaY/o="}]}},"0.0.7":{"name":"tree-surgeon","version":"0.0.7","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"2fa3e91e5612800dee9198dc8107a1fafb71be29","_id":"tree-surgeon@0.0.7","_shasum":"220ccce01c673c08fd67aa16dd7e85462f78363f","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"220ccce01c673c08fd67aa16dd7e85462f78363f","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.7.tgz","integrity":"sha512-ZQcN2fIbXp+t1BRvoyHC+0n+5DxuKgJ7bKdj7ckulcmxjN8AqLm2vMSuQVS5CGQJg6t3VJ5WXfGFofniL3yWtQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDARbh90A3a+W66obyNCTWJVhM4+k2/3FOozCdIkQLzKQIgIb5WOIgDFdo8DDjkd6LmW+vKNeQ6OiZdsw0AD1hpn2s="}]}},"0.0.8":{"name":"tree-surgeon","version":"0.0.8","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"b41284b7eb74eb4cf2c30ba31e61607f339851aa","_id":"tree-surgeon@0.0.8","_shasum":"38ad19463f3c058b7621e02fa4ed2815b2473468","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"38ad19463f3c058b7621e02fa4ed2815b2473468","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.8.tgz","integrity":"sha512-Q6ntMdvLQKdl0tOh5LmPzWY9bRLaYShSE6i9eXxbRSXGgkgr+fNNtl/bTeML+ynhJp1/XOhLCaqPyxpx9Qe9RA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDC1KmaUt2blHEx3s9+0fjs+duUAtTzi7HsRFXGfzfeQQIgbIKpTKJD/4O7eAsoyJiItgy3y7VF3OrczqNhu2KFteQ="}]}},"0.0.9":{"name":"tree-surgeon","version":"0.0.9","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"2a43f955d834c325f1de533243ce874feb19fdaf","_id":"tree-surgeon@0.0.9","_shasum":"11fcb3c9212ef5ace5d31e6712670cc989230c46","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"11fcb3c9212ef5ace5d31e6712670cc989230c46","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.9.tgz","integrity":"sha512-YPv/3Kxv90S3+/KGelGqdiIS2Tso0s2Y9NyvJUxa2x2j0YxaaTxTvpInASOKRBlFHAfeRXD6+duMH9fWfME/Qw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0ueupEd0kRnZNiF2Gtnfu7dceaNvYVjlchJt7AnjwIQIgOlqua9vyLfaSWDW15mxsa+aaTfpSiDwEbeRqPQhzOjY="}]}},"0.0.10":{"name":"tree-surgeon","version":"0.0.10","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"07df0210477630e8ab500245724e118e6a7afcc8","_id":"tree-surgeon@0.0.10","_shasum":"3cf1f0b1ff764305bc0fb96c4f8ec2f9ba6caffd","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"3cf1f0b1ff764305bc0fb96c4f8ec2f9ba6caffd","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.10.tgz","integrity":"sha512-s9ICZ3yCh6YHRjO/MPDobTNwFfWKRulBdMw6FicvLrz2EOunURJApptRAEnMv8LG1qQIYH8ddnVYbbJixoWU9Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEDaxXLgSXYxLpom8jQsDtCpTzh4JD7s23NlxGx/TTFPAiAJoaCzIe4yHJaZDPc1v651gO8a10QmHGtdPfsah8tJFw=="}]}},"0.0.11":{"name":"tree-surgeon","version":"0.0.11","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"5bc1e01e9db83ecf769623180b62097a7debea50","_id":"tree-surgeon@0.0.11","_shasum":"4cc690e20250a58c05e722694d7553ef6a52c923","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"4cc690e20250a58c05e722694d7553ef6a52c923","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.11.tgz","integrity":"sha512-Ug2mprVvkugE+HZdt/95gRXUtViI7q1wglaRBo0/IfjiiXInCksU32qOQ8l6QjB8xhDz631g7Y77oxtEmatWPg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTjJ6aCzOtKkoHNFj8udteYBylKqPY3Zyqj8wk2BDZeAIgXWzXjf1eCPBodN2dRI+SY/iiVCo7Pp1Ba0CsM/gLPus="}]}},"0.0.12":{"name":"tree-surgeon","version":"0.0.12","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"80f6e00ba0478a7749d04764bc27eeabf022c316","_id":"tree-surgeon@0.0.12","_shasum":"72cab15be7640b7b3834bfc2166f82424e4ec3e8","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"72cab15be7640b7b3834bfc2166f82424e4ec3e8","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.12.tgz","integrity":"sha512-BIMoTPbrhX0KQXSnlvug25xC+gHK478ZIv4iqedccTZJ7xYoX9PbbDv0tDpXfxpuPAGPdnBNCQuIc5thWxj75A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh4fw2FMOiLEHWGZ8fs/O7vI/SUM2V1cBpypM/0swLaQIhAJ+WqqBhdDlM8Rn0Tj7Yrn1H4Pyvv7u1ZXsSY/tPpzTb"}]}},"0.0.13":{"name":"tree-surgeon","version":"0.0.13","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"c89eb0de9f6a5923ec8d843d76e94a9804693606","_id":"tree-surgeon@0.0.13","_shasum":"f465dca3c5c24b526ded6e0ca97916bd6d9e37e5","_from":".","_npmVersion":"2.1.4","_nodeVersion":"0.10.29","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"f465dca3c5c24b526ded6e0ca97916bd6d9e37e5","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.13.tgz","integrity":"sha512-aCRd6eZcUethy7Js/X8ZuWuxr5qnxJoq60JRsNFzanzMnvshyw2Tl5PpjzjAZpkngOvo1bEQPZJpaQgwZq+sTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOjy+BIQoxX/LMsgZwaSiUXuAIVl5/DpPNmFFR2Fw2CAiAMrMCG7txRT2L7JPA/38vQ48EnwyTfFNkoDQSzAo5doA=="}]}},"0.0.14":{"name":"tree-surgeon","version":"0.0.14","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"a6b2f266373be70bb5bfd3b49527d1b40d63f93e","_id":"tree-surgeon@0.0.14","_shasum":"53f0e6565506df426854d2fa4ff66e3d12ae22ed","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"53f0e6565506df426854d2fa4ff66e3d12ae22ed","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.14.tgz","integrity":"sha512-vl5DWCcHnMVRNiZOupBi/mvlTTHsRkCAhnqa0wy2aszDVbpsPnWv4QeXQrQZS5qQ6OtMqCz+Rv/BW395686orQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEBiIiYtMbj04DlGHVO3LYuuF9GAx5+O5akC+s/c7eoqAiEAq3JWGDxu+MkvO+dpPSvyV7ddDYhRFPlXqIMBHsqgKjo="}]}},"0.0.15":{"name":"tree-surgeon","version":"0.0.15","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"ba062fa374958b764dea1ebc64f53a2fff1c1f80","_id":"tree-surgeon@0.0.15","_shasum":"00770692b89ea24bc90f9b741d75a2f4012871bb","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"00770692b89ea24bc90f9b741d75a2f4012871bb","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.15.tgz","integrity":"sha512-aJSJV7dzvcCLW31MpWtqhEg6EMkxDWaykKGgQGKLCuTQPEQKq1RWVwrjqMf3VVnSiH/Mn+g54mXIzL+zAMN5bQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICjFWg7aVMvOWBLMD8nPo6PJ88HNsF933J8G82DgrYkPAiAKZM4bLy6jaOal9tfpEy36o8pB4F2m5lZUuX69tzFViw=="}]}},"0.0.16":{"name":"tree-surgeon","version":"0.0.16","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"8a6dfd2d0580fb70a7d2c545b1c592887ba75db2","_id":"tree-surgeon@0.0.16","_shasum":"051b73b89b0d5d0261c6a11f830d44051036683d","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"051b73b89b0d5d0261c6a11f830d44051036683d","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.16.tgz","integrity":"sha512-a5yqWhu+IXZ9yUZImwJPr3qcFDGWdPIaSBVDviM/csZb03K8GeODL8awVa/EXf3UeL0FGFAB7EEeKfuIPDdksQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcKnILZbrYlQYbT/8lporwRsBeAx2c12EExqIHpFfNnQIgfQG/iiVORAUeylPoXXdhZNRXNYpMsl2BYfDAe7GQitY="}]}},"0.0.17":{"name":"tree-surgeon","version":"0.0.17","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"c8d7087e19ce604d727dcc378ae868f323b066ce","_id":"tree-surgeon@0.0.17","_shasum":"050aa8639927a7c98f855f981ef56097b47fe322","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"}],"dist":{"shasum":"050aa8639927a7c98f855f981ef56097b47fe322","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.17.tgz","integrity":"sha512-73O3KErmBcaGJOIOeuZI6u8l541PWUL18IkiePu6H6+AFzkWXwUTgcBUeJqm17VcBon9GUyC+7RqcGE2OiYpMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRafmNblVSX2xUXEnFuZ8u4tCjSDuhZe3U/7EXBJcsHAIgVqO6tPujN1A15SrjoU8hVfvoIrQ1ZdB3DncJsBCDjjc="}]}},"0.0.18":{"name":"tree-surgeon","version":"0.0.18","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"25dce41077cd71a70db25f9c5e92e34f420678c8","_id":"tree-surgeon@0.0.18","_shasum":"4ec8c392e93395f5ae04862a706233f020bc7f4c","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"},"dist":{"shasum":"4ec8c392e93395f5ae04862a706233f020bc7f4c","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.18.tgz","integrity":"sha512-tKDu6ukVdcRhD3tmarc1hW4gNZTOq+03rvOMDvB5EeB+2ZVDEprStwUmTwNrjIS+MKoXDgtiK8DmNmTqrY+UZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0EszbyvTk+Qrk8LSxNMuXbcambKacCJatugYDuisrfAiEAwfuBxW+rgKEEPzq+2Is2rLjdATZo1dApcdQQoesw9ZE="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}]},"0.0.19":{"name":"tree-surgeon","version":"0.0.19","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"253c179613b3732133ccd3a242b80db921490da6","_id":"tree-surgeon@0.0.19","_shasum":"97d70c1afdd08a1c3b2cb6491a321bae05b3a953","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"97d70c1afdd08a1c3b2cb6491a321bae05b3a953","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.19.tgz","integrity":"sha512-cb/iFS6ZcpioLSSJX9bAr79u2m0Gz8ylnrgshwTypukzDgOmwlg4tnrMUhBh+TZH6LqVHdqlmPY/PZBz0yKZ1w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFDfNkyUoBD3orYgwLnTH0tuvVnzbjv2aUNZmOzqoqlvAiB/UDg3pUZJiT4JNWjSmwq2u2k73CA6uayhd9E7bmEiIw=="}]}},"0.0.21":{"name":"tree-surgeon","version":"0.0.21","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"cae839536299692cbb07f966ad8e834b7d33cc94","_id":"tree-surgeon@0.0.21","_shasum":"0d6a528abd0a4cc7966a0955e46241caf3bdfd99","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"0d6a528abd0a4cc7966a0955e46241caf3bdfd99","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.21.tgz","integrity":"sha512-bgdiwpE1CcGVrtstz2g0or2j9R4uV2YGBAKvrbF3CNQ+6/r7Dem+KVocNI8p7tKFO8mkYweU05IlCE1Nol8maw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqzEK9R/ohXc9WQnAJ6lV2sxv5Qhr50uxefi5kcTHEyAiEAsHoUFFIY7/RtZd17Jo1iRLI+1Ydi0ftjC5ptAkTL7r4="}]}},"0.0.22":{"name":"tree-surgeon","version":"0.0.22","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"c500579f9431ab72bd0197856453000cb8141a24","_id":"tree-surgeon@0.0.22","_shasum":"1f21bb1cbd91fe132b3828397abe6ddce08e4b26","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"1f21bb1cbd91fe132b3828397abe6ddce08e4b26","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.22.tgz","integrity":"sha512-8/ZwmGjP7nEHfcH9SHYyFBdvGblvFKkt+ADv5LBmNwel74s23DG1UQPEix8+nS4gqSinEIdLZ2hX8HnWfqq5Lg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6R1EjacN96BX6Dm0IUTCn9Vwn6zUBArOLumYvVKWiWgIhANRpJ6AYqV8ciUzDfJ5GXW3OuXnWx8MY9HqW6buEmnuh"}]}},"0.0.23":{"name":"tree-surgeon","version":"0.0.23","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"0bd2ec0a229d00acc2a456075463ce7b6ea48113","_id":"tree-surgeon@0.0.23","_shasum":"92b631763eb08af2a524d1f44322f7066ecc7d69","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"92b631763eb08af2a524d1f44322f7066ecc7d69","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.23.tgz","integrity":"sha512-CSBi6EqHGe5GRtkh5D7SHvWcfHtt39eFdCn0AgfmAys3Mt7ibOUY6wwocsAIbJOMbMZJZRaDRzH+D3aXOfEDMw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID+HPr+EVnssN6OQrQUbAY8Qy3m133Aw/u1n5SkKfCCiAiEAlyYTL9/cBhgT/knjuahy/ve127GIxtUMmILxMZmeZiE="}]}},"0.0.24":{"name":"tree-surgeon","version":"0.0.24","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"07ebc839e27bd7d7c453e36d992b0149d1c09f7c","_id":"tree-surgeon@0.0.24","_shasum":"237bd395fcad59b067df845e85f67181155bc57d","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"237bd395fcad59b067df845e85f67181155bc57d","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.24.tgz","integrity":"sha512-r6GhLG3etPcnvg/YnlpgEbswXrHfPYJ2EZCWRbRmwSgBda4WWHXdpx1WOTDtqu0oos6a76WiKq/IING7sVZZFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEM35K95EZvlZZn/+OKsAImi5qfKLZiJ4tQ6K9BHycaDAiBiEt9g7ki6vqj8zYY1ht39er50eWSSMrcu7eX0JwEj/w=="}]}},"0.0.25":{"name":"tree-surgeon","version":"0.0.25","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"084b196bc3fc11e25698a2f3f0f56cc5977009d5","_id":"tree-surgeon@0.0.25","_shasum":"5725875a5e6ed655ce7c432bad05bc2d7d109758","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"5725875a5e6ed655ce7c432bad05bc2d7d109758","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.25.tgz","integrity":"sha512-jks4KEIOJ7kuT/tmk/DwNaoEudb33iOX4/HwEbpOKNo6XUmdjLIcHWXXqb6C4VEeJZJ26i/4lTOElbzG5kZLig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGZik2vM5KDuk+WhRADvMNwPX4Gyx53qGiMRpwYnU6u8AiBAow9RqtZpnqmfwyarsgUFtlqSA4yDMS0tSWXkN7CyDA=="}]}},"0.0.26":{"name":"tree-surgeon","version":"0.0.26","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"d813651ad10394476f33facb9b2c97098b83df13","_id":"tree-surgeon@0.0.26","_shasum":"724e6f6dc377be6abe7ee22c68b33bc89f18d178","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"724e6f6dc377be6abe7ee22c68b33bc89f18d178","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.26.tgz","integrity":"sha512-BxBDBNuIymdiXfNY1AGZnYTqJJaqflnICrpvcTKOIjUZsFkGqDgZuBj4HqBusVdqruAPcQHn7XO8eJdBvtoNaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjOx7vAV0RJa3RUrgSHy7l1zf695sruyZcgAO+0J0cdAiEAv2ZSxqY9I960PNcnGF3Q9us6y8iPcjB2p4fHLlpNsGI="}]}},"0.0.27":{"name":"tree-surgeon","version":"0.0.27","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"4a61306d8f350a5d498425313928440bd4e0f878","_id":"tree-surgeon@0.0.27","_shasum":"042f5822ce76ae05f74a652c2547bac4acdb2e4a","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"042f5822ce76ae05f74a652c2547bac4acdb2e4a","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.27.tgz","integrity":"sha512-jCXjQiKPxgT6EpWuPRqQwDRlyRoY+/QRduDHxbMSatUhwCsU8UxX6K4pYPSEI/gZW4Ew1X4Nq+nSyt/RKo7LVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChSkPAd0u2Uey8S7N3v+YLRUy38+bO6xUI/T2BPIffdQIhAIM+JhXIvvwFBKYlHJwpAAx1G0GpqNySshq/H7WF+Tpp"}]}},"0.0.30":{"name":"tree-surgeon","version":"0.0.30","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"a43e98d16f965245e23659a134fadae574a7e5b1","_id":"tree-surgeon@0.0.30","_shasum":"9ae2f4f6b65defef2d00263421ef558e790a3e9c","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"9ae2f4f6b65defef2d00263421ef558e790a3e9c","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.30.tgz","integrity":"sha512-K7EaLwTOovdxD0uQwdgH8RUnKkAXOlW5upUUeqgJFiZ6Pqx+VmDq8Zaw9kR074PTsb7hRQuvLlR9Z+mZh964DA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGK1uTgv9w+eUsxmHzug99WUd5abdg2uriTN1NEdJT+WAiAX6Eon3EDy9wpjyPcH0xgd0fUdzpG92FCVdXl42L7WCw=="}]}},"0.0.31":{"name":"tree-surgeon","version":"0.0.31","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"71b0e11e9b7dbc13364271f42e9e654d4d72e9f2","_id":"tree-surgeon@0.0.31","_shasum":"8b2b5e44902ddcd98e2458bed81a696ab803e8be","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"8b2b5e44902ddcd98e2458bed81a696ab803e8be","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.31.tgz","integrity":"sha512-CC4j8RbrSdXC5ohDCQVk9X0kpCc3ezBEYTFC2J/1NaJ6KNgl/CFq6IL/YLCbnKKqGCVtLJsT3q9RAOyKB/3P6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdyAvjnxpCJqRKf559C7MQM8S89mdSIa+tV95s4/JYoQIhAMKo508t/7vPSny/iHiGeZ3pSaPp5Xs+0qTB9khQryJL"}]}},"0.0.32":{"name":"tree-surgeon","version":"0.0.32","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"9211c77faf3e068614b55bcf6300b41b1e2ca691","_id":"tree-surgeon@0.0.32","_shasum":"b96a8c889c3e3f1a55fe9e6a8f39f2cdae32f139","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"b96a8c889c3e3f1a55fe9e6a8f39f2cdae32f139","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.32.tgz","integrity":"sha512-86FUJO1z3usqWKUnOoJzSXx0hdS8i3AaTn1fn77EdCOErup7cmS2r2MOtyG5MpmhjS6TeTSEhP9qpc8LChshqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEOP57dBtnqUH2DvJv1CdkGWi+0fqFW/+2D1sE/LOoQWAiA9y6kriy2aDsf2cQfQGHDqnMaSazFAxoshyFZXKY1WnQ=="}]}},"0.0.33":{"name":"tree-surgeon","version":"0.0.33","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"9211c77faf3e068614b55bcf6300b41b1e2ca691","_id":"tree-surgeon@0.0.33","_shasum":"3848b71257477e20efafa6b05d467d4180b7e374","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"3848b71257477e20efafa6b05d467d4180b7e374","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.33.tgz","integrity":"sha512-+n2A1xol+/YmPeiocaq5R2J1dBhJl2PbPTRKBqXmKWxaTNWZ7JnHg+qQEGNzVBSVzBBEtK5uDxQzVjQywjs9Yw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDg9aF5WDSxhu5Q1/phDYeaXEdBpunY218VAmIQ6n/HMAiEAjKkhy4ZLZ6og7TqlBqqCaNzF1b6li25wKO/oSzTGnHw="}]}},"0.0.34":{"name":"tree-surgeon","version":"0.0.34","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"b8463cae0a169fad8764ba978db20d97e3ab1a29","_id":"tree-surgeon@0.0.34","_shasum":"69f916b029dff991668d80c243c16b4745ca0df8","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"69f916b029dff991668d80c243c16b4745ca0df8","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.34.tgz","integrity":"sha512-JkEuABGCdhNUUGkldUJ1ETSuTaaVx9hqGPF/CFwQtRc2CKQbjFjiwQavFqZdNONxkXJlydP32Gxo03IHm94skg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPf9p1hU3gQ93ecjy9/vJVlcFQb9wkZh4Mn3QLQvEDQgIhAK6djjj/2Usz9sScxWJv/4Nd0jwzTycwxd58LGdRrGrm"}]}},"0.0.35":{"name":"tree-surgeon","version":"0.0.35","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"ff3d5f1c8d6aba2a2057ced1d7ee0eaa466c9f01","_id":"tree-surgeon@0.0.35","_shasum":"ef9496eac680affc7b903d2bb1a37fe99d2d292b","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"ef9496eac680affc7b903d2bb1a37fe99d2d292b","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.35.tgz","integrity":"sha512-1k1mQLYoBSf33Bcj3itzg5mCnSSKsgTmeyQJAAGPfV+/HX6CF/ryr+Y0Q6ACQLF1aHAxmgviqyqhVWnEU4/miQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDx6XXwXOAfwZSINKikxE2VbahNMj4uObP+K52DGV7iAIhAKqGN87m8uTuxxLlIq7IKlHq3ChcxMqvzwswWzezGp+t"}]}},"0.0.36":{"name":"tree-surgeon","version":"0.0.36","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"2fa43c8f86f309c14d87cd622ebc387b8b151e2b","_id":"tree-surgeon@0.0.36","_shasum":"06e69dd52eacd00a3adb071c07eeec95d3ce5ca6","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"06e69dd52eacd00a3adb071c07eeec95d3ce5ca6","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.36.tgz","integrity":"sha512-FsNwzBEO83wfPh5pxiMAMtg/bJJfz29rNMws+5KWvWr+kBf7WB8ApgjNCsOGGUslXW529tdyKnl9H12cn/g/SA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBLps5qg7vYJqiyCXGYfCtd/Cfyu7SKIh5Yc22TbHjwLAiBF9iW5yHeSz79SjuXay6ZGq1w2R++x9iNJtorO37jzUA=="}]}},"0.0.37":{"name":"tree-surgeon","version":"0.0.37","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^1.9.1","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"2fa43c8f86f309c14d87cd622ebc387b8b151e2b","_id":"tree-surgeon@0.0.37","_shasum":"6f5596a507dd580dc04e0769ff5b9934c72a39bc","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"6f5596a507dd580dc04e0769ff5b9934c72a39bc","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.37.tgz","integrity":"sha512-c7OXX4UgR/Bu+oYkrkRozYc/Gof9510BmmOzbcBZYa/KljSmK56e6KYPVw6cPbyxvc+elUWuqgTaxeyhsPl9wg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGC9g2OYj6QeA4xsasrWm5PCANGQ3BRBNsDJWt2cpI9JAiAm7bbUnveX7h1r0biSDfTeraoZCVCM/szMEWzwFDqRdQ=="}]}},"0.0.38":{"name":"tree-surgeon","version":"0.0.38","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"c1ca0394f1b5432996b7dad395dc3ced0aed5e30","_id":"tree-surgeon@0.0.38","_shasum":"e2ad3ca9662bbf91b9f510a5a85a3eaf7bd9b4c6","_from":".","_npmVersion":"2.5.1","_nodeVersion":"0.12.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"e2ad3ca9662bbf91b9f510a5a85a3eaf7bd9b4c6","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.38.tgz","integrity":"sha512-HM4I444lamTCl8GgRDrHj4hajN9U+R1JiF9bG1BVekjfvzZ0PBLV0RX++I4c0jN7aBHsx9n8xAJmP36tubpFRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAstStbVr1bIpHdmhluyECGIGR1WqwwTCstMof+j6I/2AiEAxH/7UvEvbvzroTD9PSbrCPkq68fS5a7OU2KHyi2RsmQ="}]}},"0.0.40":{"name":"tree-surgeon","version":"0.0.40","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"36d5ed95c7a45eaeb6f487d15ff8bfa32e493fea","_id":"tree-surgeon@0.0.40","_shasum":"c9dc96dfed8b980f599d5ac7966d123c5957e8df","_from":".","_npmVersion":"2.1.4","_nodeVersion":"4.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"c9dc96dfed8b980f599d5ac7966d123c5957e8df","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.40.tgz","integrity":"sha512-fbHlOXP/0s9EEubNqfL9jFStCJVfG4Ntn1/EQq4C2NRnt9zmMxLjosPrNIu7sxN3JpNa4/31q/fr3avPa31fdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFEc+C0DcKgNgxXq+khnZKXYe3D50A/i2XDxyjxrEScgAiEA7g/cVkgC8Ao1dAyE1O2HlNETms+BR0H3TSQMKxDfJFI="}]}},"0.0.41":{"name":"tree-surgeon","version":"0.0.41","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"a3ac622ea73d15259eae94a1e33936f14b50040f","_id":"tree-surgeon@0.0.41","_shasum":"88ee9d3eff13d569fb9f81bc0cc4dab3a8a46415","_from":".","_npmVersion":"2.1.4","_nodeVersion":"4.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"88ee9d3eff13d569fb9f81bc0cc4dab3a8a46415","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.41.tgz","integrity":"sha512-uT0uwPNQyZI634Bj8X1EBUo7VoRFrDlpSoJkwZCVqmw3XLovnI3NCSWw7eHKSg8tdI6RnGvQSHXd6uTbOSFhjA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqrHvXCcUZi3AaP5coa+dJL8xsV1O9Fipo3bEpbt/c/AiBs3FBvqkGhUn2k/uCAqaY3HFsvsxPmk3cqOkl1Zz2Q9A=="}]}},"0.0.42":{"name":"tree-surgeon","version":"0.0.42","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"bbeb6a4ae40698d68b1209e7fe8e3f6ccb75f949","_id":"tree-surgeon@0.0.42","_shasum":"deb37a1af3936a390bbdf94569f0544bf3c1d77f","_from":".","_npmVersion":"2.1.4","_nodeVersion":"4.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"dist":{"shasum":"deb37a1af3936a390bbdf94569f0544bf3c1d77f","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.42.tgz","integrity":"sha512-uhJuXbKBm66aFyoyK2madDKWfT7azLoO6hc3yOVNMw+58zsL3pAKEnDOPY2pUFnGc/TNEfgFZu8zsDBkqoYRog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPTQTIzxwuCHfeWXxrLCmPmRwHET3RuhKoSP4lj9j81gIhAOnBQ2bzalUZNPCTl30bn+1zD8FO4gAg6TB7sb3gKdMe"}]}},"0.0.43":{"name":"tree-surgeon","version":"0.0.43","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"0835b4f2b48f46070200425f9716ad272d462b99","_id":"tree-surgeon@0.0.43","_shasum":"c5b3d2a8e046b3d70f324d11420098a6de235c18","_from":".","_npmVersion":"3.4.0","_nodeVersion":"5.1.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"c5b3d2a8e046b3d70f324d11420098a6de235c18","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.43.tgz","integrity":"sha512-VAsshA3CaGugxRb3nELmQ1zqVMXkn5mPOehavy7nRXGkRMjyUlxScpoQ3ADEkA6sJxDyRlLb/NzExCh8qrtrAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUg2H5HtoKnum6vJkUJz9Cm9b3eagzFOOgLFPF/6YGaAiEA2tLS+watbVVIvcL5t32/MIvum66XRCaaySfi4H+tczQ="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-13-west.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.0.43.tgz_1456923997981_0.7769841814879328"}},"0.0.44":{"name":"tree-surgeon","version":"0.0.44","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"5343902a6e0463a198efc338c1eefcb237d7f77e","_id":"tree-surgeon@0.0.44","_shasum":"f494bb883da2d6f308e994256b55d1422fd79e10","_from":".","_npmVersion":"3.4.0","_nodeVersion":"5.1.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"f494bb883da2d6f308e994256b55d1422fd79e10","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.44.tgz","integrity":"sha512-kzQFFK+Vns+PfHXGrRoW1nuIShhs6sTAzmk6zBQwqn1kyQ/HENzN1ITBISQowFbVo38AtYSWRqMe9AY8H712vQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICm8PagPM3iS8Tkt78+9dJl/8fV2ua5z5PLVsdgZRR2BAiAsJumuHTLXV41UVxAs8g4yMOKKjW6qV1rEzUdmkzxjOQ=="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.0.44.tgz_1459769855729_0.12451668316498399"}},"0.0.45":{"name":"tree-surgeon","version":"0.0.45","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"93677b4a65c907554a4c515b2d764722340e2e48","_id":"tree-surgeon@0.0.45","_shasum":"1ce5f75691cd272f1483e125600b4dccfb16d18f","_from":".","_npmVersion":"3.4.0","_nodeVersion":"5.1.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"1ce5f75691cd272f1483e125600b4dccfb16d18f","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.45.tgz","integrity":"sha512-UNB/qgDeoUU+lYhHPgJ5exdiYIzXzbQm4Kwm5b8Kj06E1uTUrxs21Cr2FSyMAKXeYgw/8ObDGE/Kx/+n5bxi9Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7RVa20+b+G8r+bhbTQ76/I7djuC+OTBPk9TrTFZZuNQIhAOxPAwwOr5JURqvE7+jyAbXB+cqH2+v1Sq5R7gZQtqEE"}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.0.45.tgz_1459773250268_0.28600288927555084"}},"0.0.50":{"name":"tree-surgeon","version":"0.0.50","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"11ac05447763e569c153d7843262c4df3d48bac7","_id":"tree-surgeon@0.0.50","_shasum":"e11e979fe5b8349ffa155eb6adea239a236a0e12","_from":".","_npmVersion":"3.4.0","_nodeVersion":"5.1.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"e11e979fe5b8349ffa155eb6adea239a236a0e12","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.50.tgz","integrity":"sha512-NQNW+3ujPVA4lrBxS1L8cWvwWOvySJGaRMwf5h5na4H6KTmwa6QdEmWGNv1euu2JI3/YdsHBhWuy4hA4azGzKQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+HughxGJZovbfqalql2kV/qkE63pRFgTAv1Wi8NvVTAiEAkotga3vXBgAawg2N9iwaFxYqkPQ9JWxXodDhTcPNBT4="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.0.50.tgz_1460551951922_0.2992359488271177"}},"0.1.0":{"name":"tree-surgeon","version":"0.1.0","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"BSD-3-Clause","licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"3.5.0","coveralls":"2.11.9","istanbul":"0.4.3","mocha":"2.4.5","mocha-lcov-reporter":"1.2.0"},"dependencies":{},"gitHead":"b0215210cc9d61901a0abac49a0ae400aaaea91c","_id":"tree-surgeon@0.1.0","_shasum":"1fe2f782ee4371d751cd2d770b665177f6ac475d","_from":".","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"1fe2f782ee4371d751cd2d770b665177f6ac475d","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.1.0.tgz","integrity":"sha512-sV8/7Z/7IP7qu1vym/B2DTBibqFrtfaIarcD6rTS248csXgL2/YLE3U1d7Exbu2aJ413I48fB8lr2WKzSDxEgA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDhjFTNx0+5KkGgyMndH5cvdNSynvhbQgR+fdnqx9eyoAiAEQXSPQ1kwjVDHGJuEaaBDnqq4nOqtr55BK198P9NPpw=="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.1.0.tgz_1461835901286_0.41922316630370915"}},"0.1.1":{"name":"tree-surgeon","version":"0.1.1","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"BSD-3-Clause","licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"3.5.0","coveralls":"2.11.9","istanbul":"0.4.3","mocha":"2.4.5","mocha-lcov-reporter":"1.2.0"},"dependencies":{},"gitHead":"965fea722583cd447be72150fbcfd6b275f91879","_id":"tree-surgeon@0.1.1","_shasum":"6e99c42c6501de582558e55d74f6c3b7ab4439ea","_from":".","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"6e99c42c6501de582558e55d74f6c3b7ab4439ea","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.1.1.tgz","integrity":"sha512-6jAJsA8P3Jk1IedDwBbYTZOcnKw90sJVJD6bGttCnt10alBpeA27AEhAZ5ga1hC+48rFRsW+7ReKcaSN5iSclw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF7+OhhUpZdXwmiNKAmZfwF/Tfppzt+v/yDSCyNjMbVMAiBnp0zN/L5v39Kw+Wh9lHb02MwVsF0N0yiuSy1inJPVHA=="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.1.1.tgz_1465978003276_0.018512818962335587"}},"0.0.51":{"name":"tree-surgeon","version":"0.0.51","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"^3.2.0","coveralls":"^2.11.2","istanbul":"^0.3.2","mocha":"^1.21.4","mocha-lcov-reporter":"0.0.1","metaret":"*"},"dependencies":{"lodash":"^2.4.1"},"gitHead":"11ac05447763e569c153d7843262c4df3d48bac7","_id":"tree-surgeon@0.0.51","_shasum":"54a1a28e52cff18a2c30aada10643b445b5dd392","_from":".","_npmVersion":"3.8.7","_nodeVersion":"6.0.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"54a1a28e52cff18a2c30aada10643b445b5dd392","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.0.51.tgz","integrity":"sha512-UC+lTyeief3X/cxa2ULll10R4Eok3cj/GudtMZhsNJBLkAog0dOeEQGcT8MwP0gg0kiH5DiwOjvHJ8hDA5qNyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEWF9gcXrN3kzpNUdsVADn3uuUYBgy0dOxZyVfsp+xJGAiEAw2TP4aJGffvHUeKqDh292jps1sSmLj77CsRuWJdeSvc="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.0.51.tgz_1466693071224_0.11426693247631192"}},"0.1.2":{"name":"tree-surgeon","version":"0.1.2","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"BSD-3-Clause","licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"3.5.0","coveralls":"2.11.9","istanbul":"0.4.3","mocha":"2.4.5","mocha-lcov-reporter":"1.2.0"},"dependencies":{},"gitHead":"78d8bd26a332a7dc1aaf174aa1c2694605a3878a","_id":"tree-surgeon@0.1.2","_shasum":"c4e65a67dbaa026712bed913a914c4b8bcada675","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.3.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"c4e65a67dbaa026712bed913a914c4b8bcada675","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.1.2.tgz","integrity":"sha512-Y8V0NJ3hbNqfhxXakX2nusQXpmB1/+ECI146PmDLzW8xnMUsGD1OWOh08FXRygpaRkBS1WyW99CczMvehScolA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQSNnxQF8Q3eiJ1iBvmzGFc9l+6zfxEfeSBrMgoP92TwIhANNPRdoDcwE/7Y0IZ9grzOhyvZG09hbMQ3UajuY9EhrZ"}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.1.2.tgz_1485175373408_0.14512999611906707"}},"0.2.0":{"name":"tree-surgeon","version":"0.2.0","description":"Tools for editing tree structures using a relational model","main":"tree-surgeon.js","scripts":{"test":"istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js || exit 0"},"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"keywords":["tree","relational","edit","transform","data"],"author":{"name":"ieb"},"license":"BSD-3-Clause","licenses":[{"type":"BSD","url":"https://github.com/i-e-b/node-tree-surgeon/blob/master/LICENSE"}],"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","devDependencies":{"chai":"3.5.0","coveralls":"2.11.9","istanbul":"0.4.3","mocha":"2.4.5","mocha-lcov-reporter":"1.2.0"},"dependencies":{},"gitHead":"5d1361c8a641edc2825d3ca4530c22085ed5a551","_id":"tree-surgeon@0.2.0","_shasum":"6b9657ac68c6a45ce2c0b4c30725af4112aedfba","_from":".","_npmVersion":"4.0.5","_nodeVersion":"7.3.0","_npmUser":{"name":"ieb","email":"iain.ballard@gmail.com"},"dist":{"shasum":"6b9657ac68c6a45ce2c0b4c30725af4112aedfba","tarball":"https://registry.npmjs.org/tree-surgeon/-/tree-surgeon-0.2.0.tgz","integrity":"sha512-3P7f6og6gimMrzemMOtJs6TfKYikQb8+T5PDPJ7TA2kZc/vJ9+SBXb/G7H0VvX+z6qoCLvEL29aDdSt9Ynf4qQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICMQlAG2MSUhM0ldtwx2kxI4a80+aF2wJIYrQpFDrguyAiAdtK33ecbpH8PHL3CZ5RlYToMbILGCg42/RlWbaEL0SA=="}]},"maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/tree-surgeon-0.2.0.tgz_1485878071881_0.05242567113600671"}}},"readme":"node-tree-surgeon\n=================\n[![Build Status](https://travis-ci.org/i-e-b/node-tree-surgeon.svg?branch=master)](https://travis-ci.org/i-e-b/node-tree-surgeon) [![Coverage Status](https://img.shields.io/coveralls/i-e-b/node-tree-surgeon.svg)](https://coveralls.io/r/i-e-b/node-tree-surgeon?branch=master)\n\nTools for editing tree structures using a relational model.\n\n### General purpose:\n\nTrees are represented internally with two sets: (relational structure)\n\n* Relations: `[{\"Parent\":id, \"Child\":id, \"Kind\":any, ...}, ...]`\n* Nodes: `[{... your data ... }, ...]`\n\nFunctions given to split a POJO into this structure, and merge the structure into a POJO.\n\nNames of object tree parts, as used below:\n```javascript\n{ // this object is the parent, it has one property \"I\" = \"am parent\"\n\n    \"I\" : \"am parent\", // properties (whose values are not objects) remain\n                       //   on the containing object.\n\n    \"Kind\" : // properties (whose values are objects) become relationships.\n             // The key becomes the kind of the relation.\n    {\n        // this object is the child\n        \"Property\" : \"Value\"\n    }\n}\n```\n\nProperties with array values are treated one of two ways:\n```javascript\n{\n    \"JustAProperty\" : [\"hello\", 1,2,3], // first element is NOT an object.\n                                        // Entire array is a single value,\n                                        //   one of the parent's properties\n    \"OneToMany\" : [\n        {\"child\":1}, // First element is an object. All elements are\n                     //   considered children of the parent. Kind is 'OneToMany'\n        {\"child\":2}  // There is no way to express many-to-one, and\n                     //   putting this in the relational structure is not supported.\n    ]\n}\n```\n\n### Operations on POJO structure:\n\nAssuming `var tree = require('tree-surgeon');`\n\n#### Input\n\n- [x] decompose -- turn a normal js object tree into the relational structure\n      \n      `tree.decompose(obj, excludedKinds, relationDecorator, useEmptyRelations);`\n      - `obj` The object to be decomposed for relational operations. This should be a simple object, as returned by `JSON.parse`\n      - `excludedKinds` An array of property names. These properties and their sub-trees will not be decomposed\n      - `relationDecorator` A function to read node as they are decomposed and inject data into the relations table. This data can be used in subsequent operations.\n      - `useEmptyRelations` Bool, default false. If `true`, empty arrays will be treated as object nodes with no children.\n      \n      Returns a relational structure.\n\n### Operations on the relational structure:\n\nAssuming\n```\n    var tree = require('tree-surgeon');\n    var relational = tree.decompose(my_object);\n```\n\n#### Output\n\n- [x] compose -- convert a relational structure back into a plain object. Any manipulations of the relational structure will take effect.\n      \n      `relational.compose()` or `tree.compose(relational)`\n      \n      This is the fastest output function.\n- [x] render -- pass each node through a function, and each kind name through a function and compose tree from the results. Manipulations of the relational structure will take effect, and both property names and object contents can be manipulated during output.\n      \n      `relational.render(renderNodeFunc, renderKindFunc)`\n      - `renderNodeFunc` function that takes (node, path, id) and returns the rendered object contents\n      - `renderKindFunc` function that takes (kind, path) and returns the output property name\n- [x] harvest -- return an object of composed sub-trees by kind, keyed by a parent node value\n      \n      `relational.harvest(kind, idSelector)`\n      - `kind` the target property names to extract\n      - `idSelector` a function that takes the object nodes and returns a unique new property name\n- [x] gather -- return an array of sub-trees\n    - [x] gatherByKind -- subtrees selected by property name\n          \n          `relational.gatherByKind(kind)`\n          - `kind` the target property names to extract\n    - [x] gatherByNode -- subtrees selected by a function\n          \n          `relational.gatherByNode(selector)`\n          - `selector` function that takes a node and returns `bool`. The subtrees of node that result in `true` will be returned.\n\n#### Navigation\n\n- [x] parentIdOf -- get parent ID from child ID, or `null` if not found\n      \n      `relational.parentIdOf(childId)`\n      - `childId` the ID of a node\n      returns the parent ID, or `null` if this was the root node\n- [x] getChildrenOf -- get an array of node IDs for the given parent ID\n      \n      `relational.getChildrenOf(parentId)`\n      - `parentId` the ID of a node\n      returns an array of all child nodes' IDs. Returns empty array if a leaf node was passed.\n- [x] getChildrenByKindOf - get an array of child node IDs for a given parent where the child is a specified type. Kind can be a string, or a `where` predicate on the relationship (an object with exact value matches)\n      \n      `relational.getChildrenByKindOf(parentId, kind)`\n      - `parentId` the ID of a node\n      - `kind` selector for the children to be included\n         - string: pick children with a matching property name\n         - object: pick children whose relation object matches properties on the selector object\n         - function: given the relation object, pick where the function returns `true`\n- [x] getNode -- return the node data for a given ID\n      \n      `relational.getNode(id)`\n      - `id` the ID of a node\n- [x] getPathOf -- give the `Kind` path for a given node ID\n      \n      `relational.getPathOf(nodeId)`\n      - `nodeId` the ID of a node\n- [x] forEachByKind -- given a `Kind` execute the supplied function for all nodes of that kind. Kind can be a string, or a `where` predicate\n      \n      `relational.forEachByKind(kind, actionFunc)`\n      - `kind` selector for the children to be included\n         - string: pick children with a matching property name\n         - object: pick children whose relation object matches properties on the selector object\n         - function: given the relation object, pick where the function returns `true`\n      - `actionFunc` function of `(node, id)` to execute for each matching node. Any return is ignored. Any changes made to the node data is retained.\n\n#### Manipulation\n\n- [x] Normalise -- removes any relationships or nodes that are not reachable from the root, but keeps node and relation indexes consistent.\n      \n      `relational.normalise()`\n- [x] prune -- remove subtrees by relationship kind. Kind can be a string, or a `where` predicate on the relationship (an object with exact value matches)\n      \n      `relational.prune(kind)`\n      - `kind` property name or relation match to remove.\n    - [x] pruneAfter -- remove subtrees by relationship kind, but keep the immediate children. Kind can be a string, or a `where` predicate\n          \n          `relational.pruneAfter(kind)`\n          - `kind` property name or relation match. The children of matches will be removed\n    - [x] pruneAllBut -- remove subtrees that **don't** match a set of kinds. Supports only array of string kinds.\n          \n          `relational.pruneAllBut(kind)`\n          - `kind` property name or relation match. All non-matching relations will be removed\n- [x] chop -- remove subtrees by data predicate\n      \n      `relational.chop(filterFunc)`\n      - `filterFunc` function of `(node, id)`. If this returns a truthy value, node will be removed, else node will be kept\n\n    - [x] chopAfter -- remove subtrees by data predicate, but keep the matched children\n          \n          `relational.chopAfter(filterFunc)`\n          - `filterFunc` function of `(node, id)`. If this returns a truthy value, all children of the matched node will be removed\n\n    - [x] chopByKind -- remove subtrees of a specified 'kind' by data predicate. Kind can be a string, or a `where` predicate\n          \n          `relational.chopByKind(kind, filterFunc)`\n          - `kind` property name or relation match. Matched nodes will be included in the filter\n          - `filterFunc` function of `(node, id)`. If this returns a truthy value, node will be removed, else node will be kept\n    - [x] chopChildless -- remove nodes which have no children (ie. leaves) by data predicate\n          \n          `relational.chopChildless(filterFunc)`\n          - `filterFunc` function of `(node, id)`. All leaf nodes will be passed to this function. If this returns a truthy value, node will be removed.\n    - [x] chopNodesByIds -- remove nodes and their subtrees by their IDs\n          \n          `relational.chopNodesByIds(ids)`\n          - `ids` an array of node ids. All these nodes and their subtrees will be removed.\n\n\n- MergeUp -- remove a relationship and one node by merging data from child to parent. Subtree remains\n    - [x] mergeUpByKind -- select merge targets by relationship kind. Kind can be a string or a `where` predicate\n          \n          `relational.mergeUpByKind(kind)`\n          - `kind` target property or relation match. Matching nodes will be merged into their parents\n    - [x] mergeUpByNode -- select merge targets by applying a predicate to nodes\n          \n          `relational.mergeUpByNode(predFunc)`\n          - `predFunc` function to select nodes. Matching nodes will be merged into their parents\n- MergeDown -- remove a relationship and one node by merging data from parent to child. Subtree remains\n    - [x] mergeDownByKind -- select merge targets by relationship kind. Kind can be a string or a `where` predicate\n          \n          `relational.mergeDownByKind(kind)`\n          - `kind` target property or relation match. Matching nodes' data will be copied into their parents, then the matching node removed.\n\n    - [x] mergeDownByNode -- select merge targets by applying a predicate to nodes\n          \n          `relational.mergeUpByNode(predFunc)`\n          - `predFunc` function to select nodes. Matching nodes' data will be copied into their parents, then the matching node removed.\n\n\n- Fuse -- remove a node by merging into it's parent and child (by supplied function). This is a generalisation of merge up/down.\n    - [x] fuseByNode -- remove a node picked by a predicate on that node\n          \n          `relational.fuseByNode(nodeFunc, pickForParentFunc, pickForChildFunc)`\n          - `nodeFunc` function to pick nodes to fuse\n          - `pickForParentFunc` function that is given node data, and returns the data to copy into the parent node\n          - `pickForChildFunc` function that is given node data, and returns the data to copy into the child node.\n    - [x] fuseByKind -- remove a node picked by kind. Kind can be a string or a `where` predicate\n          \n          `relational.fuseByKind(kind, pickForParentFunc, pickForChildFunc)`\n          - `kind` target property or relation match. Matching nodes will be removed, but sub-trees will remain\n          - `pickForParentFunc` function that is given node data, and returns the data to copy into the parent node\n          - `pickForChildFunc` function that is given node data, and returns the data to copy into the child node.\n\n- [x] flipRelationship -- given a parent kind, a child kind, and an equality function for children; swap parents⇔children, grouping children by equality. The new child kind can be a string or a `where` predicate, but the new parent kind can only be a string.\n      \n      `relational.flipRelationship(newChildKind, newParentKind, newParentHashFunc)`\n      - `newChildKind` property name that is currently the parent node, and should be flipped to being a parent\n      - `newParentKind` property name that is currently the child node, and should be flipped to being a child\n      - `newParentHashFunc` function that takes a node and returns a comparable value (preferable a number)\n\n- [x] reverseByRelation -- make children into parents and parents into children. This is a more complex and powerful version of `flipRelationship`. Have a look in the test cases for examples.\n- [x] reduce -- reduce objects to a single value from inside them, by kind or node predicate (` {a:[{x:1},{x:2}]} -> {a:[1,2]} `)\n- [x] editByKind -- given a `kind` name and an editor function, change all immediate children of that kind. Kind can be a string or a `where` predicate\n- [x] removeEmptyNodes -- recursively remove nodes which contain only `null` or `undefined`. This can remove entire subtrees that contain only empty children\n\n## Unimplemented\n- [ ] graft -- insert new subtrees\n- [ ] disconnect -- the opposite of Fuse, place a new node between a parent and child\n- [ ] fork -- move some of the values of a node into a new or existing sibling\n- [ ] move -- move some of the values of a node into an existing sibling, or do nothing\n- [ ] editPath -- given a path of kinds and a func node→node, replace data at those paths\n- [ ] fuseAway -- remove a node by connecting it's parents to it's children, losing the data in the selected nodes\n- [ ] fuseAwayByNode\n- [ ] fuseAwayByKind\n\nNote:\n* To run istanbul on Windows, use `istanbul cover C:\\Users\\[username]\\AppData\\Roaming\\npm\\node_modules\\mocha\\bin\\_mocha -- -R spec`\n\nTodo:\n* optimisations\n* a good way to find subtrees based on paths, and perform operations based on results\n* bring `.d.ts` file up-to-date with available features\n* syntax should allow chaining of functions\n* extend with `kind` *and* `predicate` functions\n* some way of mutating kind when fusing/merging?\n","maintainers":[{"name":"ieb","email":"iain.ballard@gmail.com"},{"name":"anthonyg","email":"anthony.gascoigne@sigma-systems.com"}],"time":{"modified":"2022-06-27T20:54:44.701Z","created":"2014-09-24T08:06:48.891Z","0.0.0":"2014-09-24T08:06:48.891Z","0.0.1":"2014-09-25T13:42:00.507Z","0.0.2":"2014-09-26T08:29:09.458Z","0.0.3":"2014-09-30T15:10:54.745Z","0.0.4":"2014-10-01T09:53:55.727Z","0.0.5":"2014-10-24T15:43:40.429Z","0.0.6":"2014-10-30T16:59:25.408Z","0.0.7":"2014-11-21T15:55:06.577Z","0.0.8":"2015-01-21T13:42:58.216Z","0.0.9":"2015-01-29T16:20:45.169Z","0.0.10":"2015-02-02T18:44:17.949Z","0.0.11":"2015-02-03T13:03:31.996Z","0.0.12":"2015-02-04T09:33:12.004Z","0.0.13":"2015-03-02T12:50:28.796Z","0.0.14":"2015-04-16T09:11:39.955Z","0.0.15":"2015-04-20T14:50:39.947Z","0.0.16":"2015-04-21T09:41:52.232Z","0.0.17":"2015-04-24T14:42:24.626Z","0.0.18":"2015-05-05T15:34:52.346Z","0.0.19":"2015-05-19T16:12:44.575Z","0.0.21":"2015-05-28T15:11:36.976Z","0.0.22":"2015-06-01T16:03:26.168Z","0.0.23":"2015-06-02T14:58:52.849Z","0.0.24":"2015-06-02T16:19:19.287Z","0.0.25":"2015-06-12T15:19:49.579Z","0.0.26":"2015-06-22T15:43:48.543Z","0.0.27":"2015-06-23T09:09:17.489Z","0.0.30":"2015-06-23T09:49:48.123Z","0.0.31":"2015-06-23T10:52:39.876Z","0.0.32":"2015-06-23T11:12:18.399Z","0.0.33":"2015-06-23T11:15:04.504Z","0.0.34":"2015-06-23T11:27:56.418Z","0.0.35":"2015-06-23T14:52:39.398Z","0.0.36":"2015-06-23T16:10:37.544Z","0.0.37":"2015-07-09T09:06:34.854Z","0.0.38":"2015-08-03T16:02:19.693Z","0.0.40":"2015-09-15T15:23:26.264Z","0.0.41":"2015-09-28T11:01:50.597Z","0.0.42":"2015-09-28T13:02:15.320Z","0.0.43":"2016-03-02T13:06:40.692Z","0.0.44":"2016-04-04T11:37:39.813Z","0.0.45":"2016-04-04T12:34:12.666Z","0.0.50":"2016-04-13T12:52:33.895Z","0.1.0":"2016-04-28T09:31:42.490Z","0.1.1":"2016-06-15T08:06:45.561Z","0.0.51":"2016-06-23T14:44:33.430Z","0.1.2":"2017-01-23T12:42:54.048Z","0.2.0":"2017-01-31T15:54:34.057Z"},"homepage":"https://github.com/i-e-b/node-tree-surgeon","keywords":["tree","relational","edit","transform","data"],"repository":{"type":"git","url":"git+https://github.com/i-e-b/node-tree-surgeon.git"},"author":{"name":"ieb"},"bugs":{"url":"https://github.com/i-e-b/node-tree-surgeon/issues"},"readmeFilename":"README.md","users":{"arieljake":true},"license":"BSD-3-Clause"}