{"_id":"query-ast","_rev":"9-9c40e6227a7c21e3d4e8f737a6ab7069","name":"query-ast","description":"A library to traverse/modify an AST","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"query-ast","version":"1.0.0","description":"A library to traverse/modify an AST","main":"dist/index.js","scripts":{"start":"node --harmony_destructuring --harmony_rest_parameters lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursive --harmony_destructuring --harmony_rest_parameters","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.1","lodash":"4.6.1"},"devDependencies":{"babel-cli":"6.6.5","babel-preset-es2015":"6.6.0","chai":"3.5.0","jsdoc":"3.4.0","minami":"1.1.1","mocha":"2.4.5","scss-parser":"1.0.0","standard":"6.0.8"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"45339450084a88686103080f1c9688b679d3a8f7","_id":"query-ast@1.0.0","_shasum":"2ffda33386da5ff0a65f65f1b909b9018098995f","_from":".","_npmVersion":"3.7.3","_nodeVersion":"5.9.1","_npmUser":{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"},"dist":{"shasum":"2ffda33386da5ff0a65f65f1b909b9018098995f","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.0.tgz","integrity":"sha512-eAab3iFZwjjvR8I7gAMTUJLjClERnlilMqpGHeM8uaGPUiKECxpkiBW9rybck7qLEqsx4hyjrLwnDAQgcHAv5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBO66csLc40ATBzrJYgiiCCsxhNCfEbKEMnmzRCkOtumAiAiHhrrMLjfkohidGYpeg0uEvCtmrcwh4UTXYDxRNKTOA=="}]},"maintainers":[{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/query-ast-1.0.0.tgz_1461593364256_0.2893717794213444"},"directories":{}},"1.0.1":{"name":"query-ast","version":"1.0.1","description":"A library to traverse/modify an AST","main":"dist/index.js","license":"BSD-3-Clause","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"homepage":"https://github.com/salesforce-ux/query-ast","scripts":{"start":"node lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursives","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.2","lodash":"4.17.4"},"devDependencies":{"babel-cli":"6.23.0","babel-preset-es2015":"6.22.0","chai":"3.5.0","jsdoc":"3.4.3","minami":"1.1.1","mocha":"3.2.0","scss-parser":"1.0.0","standard":"8.6.0"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"cff8de91bb6d6a24dbcd581e106d6e882a523c1e","_id":"query-ast@1.0.1","_shasum":"6bb4ea8b7731cc5e90208e79c41bc9c3f09c52aa","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"},"dist":{"shasum":"6bb4ea8b7731cc5e90208e79c41bc9c3f09c52aa","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.1.tgz","integrity":"sha512-OVnqp5z0TifoTTFUZ6IWygStF07bsHkf0EkX94iRjLQTRgwaAEcrGWAMmiTze4du9/57tt71IX/cClSoa+UvMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICK04h4wgIvyaPCJ+5SFqBxFXW2V8Kayxi6r4O+R2tBwAiEA3nh5/AIe5Fets96LxkLYsF2Anr9Lzkng+mgJ/DmswYA="}]},"maintainers":[{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/query-ast-1.0.1.tgz_1487879842046_0.07911416282877326"},"directories":{}},"1.0.2":{"name":"query-ast","version":"1.0.2","description":"A library to traverse/modify an AST","main":"dist/index.js","license":"BSD-3-Clause","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"homepage":"https://github.com/salesforce-ux/query-ast","scripts":{"start":"node lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursives","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.2","lodash":"^4.17.4"},"devDependencies":{"babel-cli":"6.23.0","babel-preset-es2015":"6.22.0","chai":"3.5.0","jsdoc":"3.4.3","minami":"1.1.1","mocha":"^5.2.0","scss-parser":"^1.0.1","standard":"8.6.0"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"ddef93f10b44fde94cb2a2fa4391316f2c57e12c","_id":"query-ast@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.14.0","_npmUser":{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"},"dist":{"integrity":"sha512-mg78RW1QHhW8ChuJfR3V7/8GZ+Hm0mVyuh91gCCaYlObGPaorPsOEY0LXbzjzydvfGui9seLTFW2MiuDy0MT8w==","shasum":"efc59271addc2699a1ed563be9a7cc61fed590c0","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.2.tgz","fileCount":6,"unpackedSize":48568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP7VnCRA9TVsSAnZWagAA8JAP/1QfkuG8Bvlpm2MNcl7u\nDSpMELmBA7ZRqNd4paLLJaz+oJ10XBU1sQaijnRQ1eZHO5zvx58JDDs322Ev\nv2EYaiUS8qbz/cbhqscTPCyB5YGm2FnI9dWnu6PFrfQy69n3jmLXtravJphL\nofnwX5LSVZeTDDpOd97EbwpFSvpZlC1HZbCxekK10eoOPHx/qdnAa/uAD+Nz\nOu8l+UmXAkRKgww+nWm781aJmsYP8xUPIF2UtVJInNvEiYdHJubJ1dAu8PV/\nl8866qBHEMrIfWaEwtNTNSXh/CeCRjEh6K2qe0//qZ6KCGU0sUtJYr4qbdYi\nTLL0vkmw7gD1nkjgFVeWqiMSbOTSCW/fKFbJWEcJgzaMJN2bplQK+9AueZgK\nK8tkIpqWkRqJHVcbHaX4asrMwPnWutIEYv4i5FI82O2AI34vsqt9dISxbY6e\n3HR2RMYjbvixZgGQWdxFqnk+YgTfEXDnILXpI3VrCol9ejT1fqrTMkKSZnKV\n5fvnfUJj3rNGk8oqai9Bd5Pfe8xZq3lGNNcmnGp4QeJk17MBIii/zYwGYIKu\nGPbSHx2k4tsTKuYM2m5Dvnx+JjVzeTckYGFX52z86E/gFfbR5qz3J9buIqt3\ny9pOSyLUu+S4wP/kMg+bHQduyljAeVCo6UyIgI4Uj88xiu0ALmCsuywXC7uU\nHYhK\r\n=KvQp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDagE2wIm3xVu9zaCdMD/4jH/UbALy/NKucEa9hNF/AdAIhAPup73Y6rSO9O/PB6w/O2GMIMQ39T4ZiKRaXE9lEK9r4"}]},"maintainers":[{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query-ast_1.0.2_1547679079150_0.33077423287659835"},"_hasShrinkwrap":false},"1.0.3":{"name":"query-ast","version":"1.0.3","description":"A library to traverse/modify an AST","main":"dist/index.js","license":"BSD-3-Clause","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"homepage":"https://github.com/salesforce-ux/query-ast","scripts":{"start":"node lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursives","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.2","lodash":"^4.17.15"},"devDependencies":{"babel-cli":"6.26.0","babel-preset-es2015":"6.24.1","chai":"4.2.0","jsdoc":"^3.6.3","minami":"1.2.3","mocha":"7.0.1","scss-parser":"1.0.3","standard":"14.3.0"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"4e8bd390e86720790229e2da9277c1fbf7dbe691","_id":"query-ast@1.0.3","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-k7z4jilpZCujhiJ+QeKSwYXHc9HxqiVKlVE7/em0zBfPpcqnXKUP8F7ld7XaAkO6oXeAD7yonqcNJWqOF2pSGA==","shasum":"4a18374950fa80cbf9b03d7b945bbac8bb4250bf","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.3.tgz","fileCount":6,"unpackedSize":48978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOPiHCRA9TVsSAnZWagAAF3kQAKPWX9QDj+1cXHuKm02f\n0rBe7A4rCAfSh7gy6yZbXIIUqIUTehEHA8oALyFUhsMHQJiBb0aFizk2lnji\nSIQvRUwJdsVNTQIzLEGZlmdsJ/wOc9gzhMARxCTqSJuYytzi9PNqbhiQLyPK\nJrn4k0MOVwS1Bbw8+q1nAOfWcfQmWT2e4QNwHMYCHg1CdMpc5WNtswdVubzq\nfsBjp7Cjv9EzuMCeHefwhvYrUB2LHcof/NI6l15yRBFU9Yj7H5+r2eXmEQ9F\n+3FY8KCdAWehX7zm71kSRJ7tJ1EFtgYQ11Y2/x/LuBPXYHs3dhW7Z0qFHAPx\no1GuhQt6+nnQgmL4D9Fi2p1cyKkptsRaSNhpsr4FDoKOSX933Rw+pT2bCv7H\nTTtpIga+3Wn4bX1WlvyzYHbEdXqG0HEXlbWxbxi+iDOU4pyGGoLBYqcu6nHM\niTXEtDI+zlrQZjesMCGOiM11BrbiVzu1ae3C453Z3gRIOOdeqWU0SHTtTLvW\nQ8IBJr58f9ItQmeuwOXVQeaNzCGbC0vzNbcO4o7d/0hWFgFJHq2q1RYIzIWJ\noIcm/fo2xD9g4x1paqQs1BVquT3bEdiamIA/NM8EitAqg/oG70VogjqWOtii\n34C6YqIac6ktgSOTUNNFXGa0gWi750toX0W2a+d6nOL5Xb5iIkNQ8EbChpIS\npfM0\r\n=HdMG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvb0sLqs3mgIQqr/TMv3YL95jfQPgPcyUcxSnM33d5sQIgeS4pzJzwcnRvaEmTXmvZuuKGLNuTjlzOyPT9J05l27g="}]},"maintainers":[{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"}],"_npmUser":{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query-ast_1.0.3_1580791942674_0.4950732842377825"},"_hasShrinkwrap":false},"1.0.4":{"name":"query-ast","version":"1.0.4","description":"A library to traverse/modify an AST","main":"dist/index.js","license":"BSD-3-Clause","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"homepage":"https://github.com/salesforce-ux/query-ast","scripts":{"start":"node lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursives","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.4"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.2.0","jsdoc":"^3.6.7","minami":"1.2.3","mocha":"^7.1.1","scss-parser":"^1.0.5","standard":"^14.3.1"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"b58823e30baffe7c921108925aca628b93f8b910","_id":"query-ast@1.0.4","_nodeVersion":"14.17.1","_npmVersion":"7.19.0","dist":{"integrity":"sha512-KFJFSvODCBjIH5HbHvITj9EEZKYUU6VX0T5CuB1ayvjUoUaZkKMi6eeby5Tf8DMukyZHlJQOE1+f3vevKUe6eg==","shasum":"efa832e1270cc3e0ab42291716f73a7de1928c2a","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.4.tgz","fileCount":7,"unpackedSize":49855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6KAYCRA9TVsSAnZWagAAvloP/i4ngs/sJndhPbIH4HlN\nhHhBd+WaHf38+LgDVtf7qAGtFwRDil/Ki3zc7/whQ8gfQrM+oXunq/BPuSTL\nykBTBZBlvxx+tcpBgHyVZ/XwTDpHnNnRAmOMHMlq5uaFEuvnwt2dkQfg7ALT\nkx028LKW+VFC4BC7fbEk8N72inA51n9vd5yLuMHxoNZV+glxHFjzGAnDdnal\niMoXBcqHKUbc0vEbAx0lyv+tEyfAsVUUSX3VDk/UO2fhlXujLmp7FAHzo6uL\nMyWGY0m5xXdDYDvs/0NE5VG3r0nsEFMMqUSi8B7by9IZKDSKpDi2PhETmHBK\nxSNwSoXzTdH2hGUaesDxM/AqWq00Zy9WhVimY9J3v1l0D4fHTGoUk8kPJ/TN\nQgeaW61KEPM/7r7n9l0a3ZqtofMSqxcNsd1pIG/bmZa/wmNNX747ZVUhh7ZN\nnh68COqklbwBYgFmELhfYw8YIZ2CNCdEyzZPt7upmWPd18ghn0/fzuQffDgu\njmgDJBeItAZiQr5BM1I0S98Oc0AajrIcyFLQJcdTxDsQ7dhAaxTjBEI0RUNF\nejO6v17u/KwL5SlUNZPbxHABOvVbJMPZth7lpGM13VogpULkdQB4yng8oTW+\nNetfpuk+xnIBpfaFk+ivwW5Dv3lLVy2v8sDv4zOhvyp+20jP5UQ0Ir8mu/Sv\nElq7\r\n=zkdW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWWSwP7Tf8Zra0LgKXEBUsyp+INd6+h9z/oizN1k4jLwIhALnnj2bIbj5JcSUEEWfqvAhSipBPHuvwKKcAVrp1gv3S"}]},"_npmUser":{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"},"directories":{},"maintainers":[{"name":"salesforce-ux","email":"salesforce-ux-npm@salesforce.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query-ast_1.0.4_1625858072301_0.5183716290330265"},"_hasShrinkwrap":false},"1.0.5":{"name":"query-ast","version":"1.0.5","description":"A library to traverse/modify an AST","main":"dist/index.js","license":"BSD-3-Clause","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"homepage":"https://github.com/salesforce-ux/query-ast","scripts":{"start":"node lib/index.js","test":"mocha lib/**/*.js test/**/*.js --reporter min --recursives","lint":"standard","build":"babel lib --out-dir dist --presets es2015","doc":"jsdoc -c jsdoc.json && mv doc/query-ast/* doc/ && rm -rf doc/query-ast","prepublish":"npm run build"},"dependencies":{"invariant":"2.2.4","lodash":"^4.17.21"},"devDependencies":{"babel-cli":"^6.26.0","babel-preset-es2015":"^6.24.1","chai":"^4.2.0","jsdoc":"^3.6.7","minami":"1.2.3","mocha":"^7.1.1","scss-parser":"^1.0.5","standard":"^14.3.1"},"standard":{"ignore":["node_modules/**/*"]},"gitHead":"6d66bbd2e72fe7a098b0ff7d1aacc7edc29ac7f1","_id":"query-ast@1.0.5","_nodeVersion":"14.18.3","_npmVersion":"8.11.0","dist":{"integrity":"sha512-JK+1ma4YDuLjvKKcz9JZ70G+CM9qEOs/l1cZzstMMfwKUabTJ9sud5jvDGrUNuv03yKUgs82bLkHXJkDyhRmBw==","shasum":"60f60593e8ea085082aaf9f316631a5cc070074a","tarball":"https://registry.npmjs.org/query-ast/-/query-ast-1.0.5.tgz","fileCount":8,"unpackedSize":49904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvsjzYjfGooihLf1Rx55tTj/BnHdJbPZeisSKaXxFNRwIgVsmXgO5xig7oN0zMwIELW78rpRZCrcCubCy2pFBOQgg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjlsCZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpU6A//X87QK7DurO4p4F4an3XQRgF5CoXcfL0uPzmDvz0ohPCkqGQk\r\nW1fasFV+FAAS3wWVHWp7i+T2dK1F5p7koS5OieEQMBCHA5RHLizSLmORh4Bp\r\n5ArKoJ2zlCy4WrKoZ0WfJArDfeCHIBa6qnoku5KeSUnJ+wBXgiF61LEQvlz3\r\nl49433QD9qVg8tN4/lwJeQkoSDQw4t9y08ps2gOU6TmnC3aExa7D5NvHMhSA\r\n5uTKQNL5TIqk2lvoTvnGOdMLWOEVgTxSNkimJC0JbfZdE4JCVzDbn/fh6RAR\r\nxtPupbggr7uFmGvDLgv5OTLMzJUwv+smZdQ0GmzEKCZJ/TRaQixJYXg1Jop2\r\nKtjg86qnLen0FoLV6BTHEByeABMzltR0rcpyr9iZhgn0SKyd1S1fe/HFFoIN\r\n00Scc9BZBZ4mD99MkxBILqfY3lkhP8qw50HkHXONuHJzWIIjzRvV20RJC3hj\r\nROsV6PGhdI1ycJArYnOuvcEtjxSvBYteXkx44X9vZ4RexdGffco2uTSeLKlc\r\nDh2gYSigaykhZALrr1qhkLMzpbaTUA7x9G4shDvhBQ+1wob8158WxShqbDcX\r\n4SCf97Ae35nVsPhYMchip994Wgd1zwQgHz1wG7Fv9yML0iwcl1wqr9/KpCN6\r\nWxDRRiz4LNCyrXOJAxVjvxo3Utf083SRBIY=\r\n=dO6A\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"salesforce-ux","email":"dse-infra@salesforce.com"},"directories":{},"maintainers":[{"name":"salesforce-ux","email":"dse-infra@salesforce.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/query-ast_1.0.5_1670824089067_0.9689057367650746"},"_hasShrinkwrap":false}},"readme":"# QueryAST\n\n[![Build Status][travis-image]][travis-url]\n[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=salesforce-ux/query-ast)](https://dependabot.com)\n[![NPM version][npm-image]][npm-url]\n\nA library to traverse/modify an AST\n\n## Documentation\n\nRead the [API documentation](https://salesforce-ux.github.io/query-ast/doc/1.0.0)\n\n## Usage\n\n```javascript\nlet createQueryWrapper = require('query-ast')\nlet $ = createQueryWrapper(ast, options)\n```\n\n## Getting Started\n\nQueryAST aims to provide a jQuery like API for traversing an AST.\n\n```javascript\nlet ast = {\n  type: 'program',\n  value: [{\n    type: 'item_container',\n    value: [{\n      type: 'item',\n      value: 'a'\n    }]\n  }, {\n    type: 'item_container',\n    value: []\n  }, {\n    type: 'item',\n    value: 'b'\n  }]\n}\n\n// Create a QueryWrapper that will be used to traverse/modify an AST\nlet $ = createQueryWrapper(ast)\n\n// By default, the QueryWrapper is scoped to the root node\n$('item').length() // 2\n\n// The QueryWrapper can also be scoped to a NodeWrapper or array of NodeWrappers\n$('item_container').filter((n) => {\n  return $(n).has('item')\n}).length() // 1\n```\n\n### Selectors\n\nMost of the traversal functions take an optional `QueryWrapper~Selector` argument that will\nbe use to filter the results.\n\nA selector can be 1 of 3 types:\n- `string` that is compared against the return value of `options.getType()`\n- `regexp` that is compared against the return value of `options.getType()`\n- `function` that will be passed a `NodeWrapper` and expected to return a `boolean`\n\n```javascript\nlet ast = {\n  type: 'program',\n  value: [{\n    type: 'item_container',\n    value: [{\n      type: 'item',\n      value: 'a'\n    }]\n  }, {\n    type: 'item',\n    value: 'b'\n  }]\n}\n\nlet $ = createQueryWrapper(ast)\n\n// String\n$('item').length() // 2\n\n// RegExp\n$(/item/).length() // 3\n\n// Function\n$((n) => n.node.value === 'a').length() // 1\n```\n\n### Default format\n\nBy default, QueryAST assumes that an AST will be formatted as a node tree\nwhere each node has a `type` key and a `value` key that either contains the\nstring value of the node or an array of child nodes.\n\n```javascript\nlet ast = {\n  type: 'program',\n  value: [{\n    type: 'item',\n    value: 'a'\n  }]\n}\n```\n\n## Alternate formats\n\nNot every AST follows the same format, so QueryAST also provides a way\nto traverse any tree structure. Below are the default options used to\nhandle the above AST structure.\n\n```javascript\nlet options = {\n  /**\n   * Return true if the node has children\n   *\n   * @param {object} node\n   * @returns {boolean}\n   */\n  hasChildren: (node) => Array.isArray(node.value),\n  /**\n   * Return an array of child nodes\n   *\n   * @param {object} node\n   * @returns {object[]}\n   */\n  getChildren: (node) => node.value,\n  /**\n   * Return a string representation of the node's type\n   *\n   * @param {object} node\n   * @returns {string}\n   */\n  getType: (node) => node.type,\n  /**\n   * Convert the node back to JSON. This usually just means merging the\n   * children back into the node\n   *\n   * @param {object} node\n   * @param {object[]} [children]\n   * @returns {string}\n   */\n  toJSON: (node, children) => {\n    return Object.assign({}, node, {\n      value: children ? children : node.value\n    })\n  },\n  /**\n   * Convert the node to a string\n   *\n   * @param {object} node\n   * @returns {string}\n   */\n  toString: (node) => {\n    return typeof node.value === 'string' ? node.value : ''\n  }\n}\n```\n\n## Running tests\n\nClone the repository, then:\n\n```bash\nnpm install\n# requires node >= 6.0.0\nnpm test\n```\n\n## Generate Documentation\n\n```bash\nnpm run doc\n```\n\n[npm-url]: https://npmjs.org/package/query-ast\n[npm-image]: http://img.shields.io/npm/v/query-ast.svg\n\n[travis-url]: https://travis-ci.org/salesforce-ux/query-ast\n[travis-image]: https://travis-ci.org/salesforce-ux/query-ast.svg?branch=master\n","maintainers":[{"name":"salesforce-ux","email":"dse-infra@salesforce.com"}],"time":{"modified":"2022-12-12T05:48:09.342Z","created":"2016-04-25T14:09:26.192Z","1.0.0":"2016-04-25T14:09:26.192Z","1.0.1":"2017-02-23T19:57:23.835Z","1.0.2":"2019-01-16T22:51:19.249Z","1.0.3":"2020-02-04T04:52:22.798Z","1.0.4":"2021-07-09T19:14:32.444Z","1.0.5":"2022-12-12T05:48:09.250Z"},"readmeFilename":"README.md","homepage":"https://github.com/salesforce-ux/query-ast","repository":{"type":"git","url":"git+ssh://git@github.com/salesforce-ux/query-ast.git"},"bugs":{"url":"https://github.com/salesforce-ux/query-ast/issues"},"license":"BSD-3-Clause"}