{"_id":"hijacker","_rev":"54-df66018dab59e01f1e1eaf5e3ef27a29","name":"hijacker","description":"Frontend development tool for intercepting and mocking api requests","dist-tags":{"latest":"0.3.0","beta":"1.0.0-beta.12"},"versions":{"0.1.0":{"name":"hijacker","version":"0.1.0","description":"### Route Rule Object (implemented only) | Parameter         | Description                                                  | | ----------------- | ------------------------------------------------------------ | | body              | Body object to send ba","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","request":"^2.81.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"4aa513e012d26055e8017699cbe069fda155e375","_id":"hijacker@0.1.0","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-Z6RRLtzZZJ4xzuepev6tVkyX+pJ6tBkq3p/qf8jYbP0titz+wkFpgurdqg7z+wRoeQ6VfEez7cOR7f4BadIRPg==","shasum":"370f25ec9fdd6ba3a49ccbb2f8a5717377a403a9","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9ZWA5X/FNeSI8D++0d5jWKv3gy6WkvWlNsyOXvTKPxwIhAJsoQKY5Picttd4wfkbKzjjDHvdoBAigYxb60/PqnaT9"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.0.tgz_1501022262928_0.39971154439263046"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.1":{"name":"hijacker","version":"0.1.1","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","request":"^2.81.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"d801ad2d5e450d1150d0e7b8210b7e90dcaf1622","_id":"hijacker@0.1.1","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-LYBaL7SyivnXOotuFN+jJVuQ+mR1m2yK0bz8tdDOiBAmMxgKVAPV4m+Lfk3XCqcJ6ufLVtkyzpKkXlIyREE74w==","shasum":"d4070ee549d24480c93caa6a78e01a493e1bf5d7","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqdKY2+q/XSW/5RUJGYCcaFPsvn2ZYzKZvx3cFzrQ8MwIhALB+5ecgI498haO2BIYK8JGujlPMF+ME1sVf11leEMoj"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.1.tgz_1501024334280_0.09538196795620024"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.2":{"name":"hijacker","version":"0.1.2","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","request":"^2.81.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"07730f69c413e1237d1ed64de84c214470687955","_id":"hijacker@0.1.2","_npmVersion":"5.0.3","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-n/L2UmqDyqz8Z7RQhWyfJngFhS9ZIZYcm7INhiG/io2kBGYIu8s2a1b5JfjYcAqDNIaZxN2IkEI+Qj1wsrDZew==","shasum":"57cfd7a204af1a71e67385bcf3919e3e2457c131","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUJph/5U2t9ExQOtlGG4t/jhgvWvpvcLUFotkHnS6ZiAiEA1XLCx2tSu28jzZSg3CFdY4OGHlZ4Wd+5iPNCa5eItI0="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.2.tgz_1501125440204_0.9687712183222175"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.3":{"name":"hijacker","version":"0.1.3","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","request":"^2.81.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"b80f2942bba00641404e4b879a8fc74b72f2a9f8","_id":"hijacker@0.1.3","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-V5C0Wjxmy3/HNBMPzNiITGKQ3L5eBar5DMl8ONxVBxI/b2OrvFMneSi3WL0Zq/FVYrLQg5LUArG2TQlxYSuEzw==","shasum":"6b1d5750ef39aa0b1d8e3a875d29363cb4068526","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAgFIN3QPeHfKg0gTq72OXQDzIoJUlLYU7UpbuDpjiAwIgIXjj7BnVXpRXBGM37PC7QJVRfyYlyPVHBChEvVtYDQk="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.3.tgz_1502940557170_0.20838398742489517"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.4":{"name":"hijacker","version":"0.1.4","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","request":"^2.81.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"41bc9907df649866adac8791841f52d059ac86ee","_id":"hijacker@0.1.4","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-+S2zaNbR2QXNuqJbLQGHjH306EtW1ZutYP60qyMj8JHxL81OR+elmM8pqaLo0BbZ1uGX4PXDMOiOPrj0YeV+VA==","shasum":"d8cab7befb7a9b97f7a02f8f14a79c1917fa45ef","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA09FppzUpuxEBTTJd9gfhzXcWuB2ydPipAu7X0tdtrDAiEAwtw/8X0nDPo8XsFyX4Lip/+t2y/YUhOnivdP0ncvw78="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.4.tgz_1503023347300_0.30798498331569135"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.5":{"name":"hijacker","version":"0.1.5","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"cf487d5add2b08f9a0ff838d975c818c0629f2ab","_id":"hijacker@0.1.5","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-SuQlK1WRyqxqzskJTtaPBcCew9+wORgFQqjKq7e40gwDYWDG+yibvwCuIe4tI9IpiRs6WnYHYgQn+z5wG+tj8w==","shasum":"82d9ca09ad2f0011ef5b6ce480011ae98dfc71b1","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVsR0E3Vyr1agXqx4PQEuZLJHX5CJDInnnMK0Oj8QdNwIhAPUWI41yH+iwU4EZpFB/hd/cbThLRwYhPVGD3je8DDjQ"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.5.tgz_1504131946759_0.9460815000347793"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.1.6":{"name":"hijacker","version":"0.1.6","description":"Frontend development tool for intercepting and mocking api requests","main":"index.js","bin":{"hijacker":"./bin/index.js"},"scripts":{"start":"nodemon index.js"},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"author":"","license":"ISC","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"homepage":"https://github.com/travis-w/hijacker#readme","dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","express":"^4.15.3","nodemon":"^1.11.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{},"gitHead":"3d75c846b8724b4855b597b598421d238f649db6","_id":"hijacker@0.1.6","_npmVersion":"5.3.0","_nodeVersion":"8.1.4","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-iFIVC6SE/AnocfG6kWzopbWnsOVe51ZXEGdNpKwWc5MMSSSXBd0X4wc3zPt1qn2HnDrPr3rYeT4kMwlL9MqmMQ==","shasum":"64030b8be71df315f615dd341478426c3daed2e5","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.1.6.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH4kP5F3BOGIikAvcz+/+jjr9iHqsQWJ4ZAsWW8FJqfiAiEAk0Oj/PsgPpdQWWZ4Hh49WfAbOhYThWPxYnKglI1KhNo="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.1.6.tgz_1504201183621_0.45140565908513963"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.2.0":{"name":"hijacker","version":"0.2.0","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"./bin/index.js"},"dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"commitizen":"^2.9.6","coveralls":"^3.0.0","cz-conventional-changelog":"^2.1.0","eslint":"^4.7.1","eslint-config-airbnb-standard":"^1.4.1","jest":"^21.1.0","nock":"^9.1.0","nodemon":"^1.11.0","socket.io-client":"^2.0.4","semantic-release":"^11.0.2"},"scripts":{"commit":"gz-commit","coveralls":"coveralls < test/coverage/lcov.info","lint":"eslint -- ext .js lib/backend/ index.js test","start":"nodemon bin/index.js","test":"jest --coverage","semantic-release":"semantic-release"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"3fc916cc008debaff48ff70ab0300b9120877999","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.2.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-kyd0E/bABQOGW0HGDSy/x9JiT79Vcrphi2HpireM2ZGhWF+Vmaujbk/iy2FYNyyVaoZyIsWm/AeaCAkePlIMlw==","shasum":"61928678c738eac9241f5e37a4cdea8c8936925f","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC28MkZKcaQNInG2qlK3uof+NqbUcOv8bMJhgw7EtZ6XgIhAPK88RCoKRopRjh6LDFPSPNUa8+FPJm5rn97yC9Z1YRZ"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.2.0.tgz_1513914951258_0.7838700527790934"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.2.1":{"name":"hijacker","version":"0.2.1","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"./bin/index.js"},"dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"commitizen":"^2.9.6","coveralls":"^3.0.0","cz-conventional-changelog":"^2.1.0","eslint":"^4.7.1","eslint-config-airbnb-standard":"^1.4.1","jest":"^21.1.0","nock":"^9.1.0","nodemon":"^1.11.0","socket.io-client":"^2.0.4","semantic-release":"^11.0.2"},"scripts":{"commit":"gz-commit","coveralls":"coveralls < test/coverage/lcov.info","lint":"eslint -- ext .js lib/backend/ index.js test","start":"nodemon bin/index.js","test":"jest --coverage","semantic-release":"semantic-release"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"c076c4e6242dea64654ec8b1500ac902ab6fccc2","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.2.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-hAi6sYl7Xkm2s4lQVgOXuCJFsEvVBcPHVeBb63/ciu51dYepH9nfuxy85yCHqkY+MtH2tMDJ+5JHy2f7qu79yA==","shasum":"42f138c1d62f6a5915084d65cccbf32c8bacb6b9","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.2.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKp0rNwdblZ67Gsg8t8LIpR9qf3kkvAdaNEv50OWH2wwIgD0vvVhhhP5qkw/tC3CsK5Q9KjjVbnms5cuK04dqXskk="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.2.1.tgz_1513917025132_0.8174513936974108"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.2.2":{"name":"hijacker","version":"0.2.2","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"./bin/index.js"},"dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"commitizen":"^2.9.6","coveralls":"^3.0.0","cz-conventional-changelog":"^2.1.0","eslint":"^4.7.1","eslint-config-airbnb-standard":"^1.4.1","jest":"^21.1.0","nock":"^9.1.0","nodemon":"^1.11.0","socket.io-client":"^2.0.4","semantic-release":"^11.0.2"},"scripts":{"commit":"gz-commit","coveralls":"coveralls < test/coverage/lcov.info","lint":"eslint -- ext .js lib/backend/ index.js test","start":"nodemon bin/index.js","test":"jest --coverage","semantic-release":"semantic-release"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"97724f48e7178427aecad9831ae02307070994d5","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.2.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-DeRSt/OehTx3pTM6E9+QIrl/HpPNtPSC825uLK/A63flkFe8/i/6kcOnLP7nU64gyLVyl5ipCNKjyE0hlkx58Q==","shasum":"a0351649f6bd6c79ff904efbb849778756566576","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.2.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBV7zQrHMSaeXk2Uak8zHHwM/3loDkd6AfehLsWYLIs3AiEAwnlLCfp0UmRTNqMJgDLj+DtBaR2a3XwhMsoBLuL0o3I="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.2.2.tgz_1514083200638_0.030344789382070303"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.2.3":{"name":"hijacker","version":"0.2.3","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"axios":"^0.16.2","body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-transform-object-rest-spread":"^6.23.0","babel-preset-env":"^1.6.0","commitizen":"^2.9.6","coveralls":"^3.0.0","cross-env":"^3.0.0","css-loader":"^0.28.7","cz-conventional-changelog":"^2.1.0","eslint":"^4.14.0","eslint-config-airbnb-standard":"^1.4.1","eslint-loader":"^1.9.0","eslint-plugin-html":"^3.1.1","extract-text-webpack-plugin":"^3.0.0","file-loader":"^1.1.4","html-webpack-plugin":"^2.29.0","jest":"^21.1.0","jsoneditor":"^5.11.0","lodash.isequal":"^4.5.0","nock":"^9.1.0","node-sass":"^4.5.3","nodemon":"^1.11.0","sass-loader":"^6.0.6","semantic-release":"^11.0.2","socket.io-client":"^2.0.3","svg-url-loader":"^2.1.1","vue":"^2.4.4","vue-loader":"^13.0.5","vue-router":"^2.7.0","vue-template-compiler":"^2.4.4","vuex":"^2.3.1","webpack":"^3.6.0","webpack-dev-server":"^2.9.1"},"scripts":{"commit":"gz-commit","coveralls":"coveralls < test/coverage/lcov.info","lint":"npm run lint:frontend && npm run lint:server","lint:frontend":"eslint --ext .js --ext .vue src/","lint:server":"eslint --ext .js lib/backend/ test","start":"nodemon bin/hijacker.js","test":"jest --coverage","semantic-release":"semantic-release","dev":"cross-env NODE_ENV=development webpack-dev-server --open --hot","build":"cross-env NODE_ENV=production webpack --progress --hide-modules"},"files":["bin/","lib/"],"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"release":{"branch":"master"},"gitHead":"6a6fbf4919a430457cf3b2a82938302e8bb092f5","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.2.3","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-M0zcP3anw0EPRQx4YeNazYzUKAcRNzpUKrwxhkGG00gPtz3KlpbIJW1DxdbkLsJ4p7iOhRz2F2H68MyoFLK9Nw==","shasum":"a7d0c0834ffd69f4e6906b762aeb3825aa6ef4db","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.2.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7xEmPF4tU4uj9dYuscDwMOO+Zd3JU1gZyoCEOt3miWAiEA7MPA9aMbZ7CURvWI45PVAobHXl9aqoKW2RfHFbwPAs8="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker-0.2.3.tgz_1514417497702_0.40554048074409366"},"directories":{},"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.0-beta.1":{"name":"hijacker","version":"0.3.0-beta.1","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","express-xml-bodyparser":"^0.3.0","node-fetch":"^2.2.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"@babel/core":"^7.2.2","@babel/plugin-proposal-object-rest-spread":"^7.3.1","@babel/preset-env":"^7.3.1","axios":"^0.18.0","babel-loader":"^8.0.5","codemirror":"^5.43.0","commitizen":"^3.0.5","concurrently":"^4.1.0","coveralls":"^3.0.0","cross-env":"^5.1.5","css-loader":"^2.1.0","cz-conventional-changelog":"^2.1.0","eslint":"^5.12.1","eslint-config-airbnb-standard":"^2.1.6","eslint-loader":"^2.0.0","eslint-plugin-vue":"^5.1.0","html-webpack-plugin":"^3.2.0","jest":"^24.0.0","lodash":"^4.17.10","nock":"^10.0.6","node-sass":"^4.9.0","nodemon":"^1.11.0","sass-loader":"^7.0.1","semantic-release":"^16.0.0-beta.18","socket.io-client":"^2.0.3","vue":"^2.5.16","vue-loader":"^15.0.10","vue-router":"^3.0.1","vue-template-compiler":"^2.5.16","vuex":"^3.0.1","webpack":"^4.8.3","webpack-cli":"^3.1.2","webpack-dev-server":"^3.1.4"},"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"cross-env NODE_ENV=development webpack-dev-server --open --hot","lint":"npm run lint:front && npm run lint:back","lint:front":"eslint --ext .js --ext .vue src/","lint:back":"eslint --ext .js lib/backend/ test/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","test":"jest --coverage"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"nodemonConfig":{"ignore":["test/*","src/*"]},"gitHead":"62243e9ddeb4f26eb683e3dcf5526931da75ff6c","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.0-beta.1","_npmVersion":"6.5.0","_nodeVersion":"10.16.0","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-zgB0bUtBatYm5MVpAVMk+F6ehy8uponw6hPxy9d6o5RYGHwLnEUAgIcsZLIzcIAQENRq887qFbnpgxjIpCXFSw==","shasum":"16e030339d64659589dd44ef24802c75f44b3f4f","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.0-beta.1.tgz","fileCount":15,"unpackedSize":513525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdI9iyCRA9TVsSAnZWagAA3uEQAJi6LzK6l5EvAWA9EZ4a\n7xiIpaJuORc7ZdBamUhXNAQglsAATqjWMarGqcCipTiRNnPaZIb5y7GWWJzj\nYyeFMLakdQGp9FskLrwaKAHcz6N5t+8nlrFMTMappBzZL+KOm8YatxmO8X7V\nYlfdFyrc72NLWT45y9toDCpwcUR5J5leBeQbEYCIqaUzKCs2tSH/cAIOGao7\nccmdBTqD96vkMRbVNUzlHOCIvOPk0DpkC+VkKeUA1M6R87DUgU1c7S1INrJ4\njD0mj/1e+8MCQbox2GocyCvxOKVD8RtTtMX3w50LTE7YdN44ZRb3LYG08WwK\nOMzIGRiq3owMD3MHzRM66eRSWcfA8Kn2w+iSa7TrYVHvxQDgYVRosLz26Aym\nXNY74R8qp3EqfwTcXu2EZ2FMh/f4XCAytAUIxDiM/286KD0rbxzA2WwckI8g\nH/ldsByFxjY84cmSR3ywCf+/dG6sdsXUaC3+PzK8MhrelL0eg0cQu94r3rpI\nAT/e8fFkvefK4ZLb8a9PBWc7XF+wKqUwxq1GRVDqUr/GwhO5R2OJqnIoClFH\ntgSlCdWPIhX2LXTcfYavGowsMnavJMr7vgcSScjlkbFerHklb/TTAFv72UCI\nmJBmLwmO++B48sNRN7gVj3XvISJRMXfC86IzuOGAcgSwKqJdd1O6HoT7tswg\nZcG1\r\n=mKrL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJ/3v450DFrFZ8qyUY5u961bZO9gj8eRYNJEK1uTHgXAiAAsAP/eec38zyNAxF4Ae9GxBS7SNZnlcXxFi3djoilLg=="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.0-beta.1_1562630321678_0.12536292673253846"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.0-beta.2":{"name":"hijacker","version":"0.3.0-beta.2","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","express-xml-bodyparser":"^0.3.0","node-fetch":"^2.2.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"@babel/core":"^7.2.2","@babel/plugin-proposal-object-rest-spread":"^7.3.1","@babel/preset-env":"^7.3.1","axios":"^0.18.0","babel-loader":"^8.0.5","codemirror":"^5.43.0","commitizen":"^3.0.5","concurrently":"^4.1.0","coveralls":"^3.0.0","cross-env":"^5.1.5","css-loader":"^2.1.0","cz-conventional-changelog":"^2.1.0","eslint":"^5.12.1","eslint-config-airbnb-standard":"^2.1.6","eslint-loader":"^2.0.0","eslint-plugin-vue":"^5.1.0","html-webpack-plugin":"^3.2.0","jest":"^24.0.0","lodash":"^4.17.14","nock":"^10.0.6","node-sass":"^4.9.0","nodemon":"^1.11.0","sass-loader":"^7.0.1","semantic-release":"^16.0.0-beta.18","socket.io-client":"^2.0.3","vue":"^2.5.16","vue-loader":"^15.0.10","vue-router":"^3.0.1","vue-template-compiler":"^2.5.16","vuex":"^3.0.1","webpack":"^4.8.3","webpack-cli":"^3.1.2","webpack-dev-server":"^3.1.4"},"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"cross-env NODE_ENV=development webpack-dev-server --open --hot","lint":"npm run lint:front && npm run lint:back","lint:front":"eslint --ext .js --ext .vue src/","lint:back":"eslint --ext .js lib/backend/ test/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","test":"jest --coverage"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"nodemonConfig":{"ignore":["test/*","src/*"]},"gitHead":"d2e8b8af677d59018563b5f2226ed6039524c664","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.0-beta.2","_npmVersion":"6.5.0","_nodeVersion":"10.16.0","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-biCUhI5Y+243abPYV40PYOmHQi/OVspbdFvtq/pTbHohc6GGcD8G+h2ZYvwxFmxMbDteVQuOC8nXiZhxkSgByA==","shasum":"bc8609b15cfeb50d2cdb9bc8a2aaaf84f6b3bd93","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.0-beta.2.tgz","fileCount":15,"unpackedSize":514645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNIGTCRA9TVsSAnZWagAAit0P/1PuvT83YKde4TUFBLft\nd2hGIBK7jOigMB1vzJYusWZlHYIwmESMf4KB5kAQK53EZ8Eh/ULDmOxQbPYw\nSGwj1pi2ZakS+FF5Z/K1gB/3j6LkYNL5LCeaP77RFzTKW+77h3stWZVz6fOd\n+8g0tUDIBBiPMpjYOGshprWyHLd32kweddQBmvVNGrkOeDf4+1pYaRxkTyQU\nUAtUT8tToZt4n9lWYrNyC/SIYHR03q6ahD38jgcXyqOMjLqytPv+CAsWXYmi\nHVbPsFlY/z7Crl5qUbEBJSvv4hyHhrNvtwsjTc2IWn9tbrw386Tky7LE0xPb\nti+nxPGS7sGqmL9bFP0SmgjRfBA9xUCbgwnZKuri9aT/PNGEdGEPPlTcjiQN\nItfJjraMll7UYyZ5AVvNo6WS8WlebSZyly+D/MWxB97vNJWwfRmI1/gDSaHQ\no2zVUzUrTNs2XqSfBBisHS9vJzNEto8hndKW0w+f4+IPXJz6BBEYWIubMRss\n+RAdY5kJGQ3UDBdm8ZK0HmauTSPPIxLBmyS86r5R3VjxdqKul3Y2IF6KB8as\nhS24AbroPlHH9hmyMsiCYcH2fmTIG4iYrl7y3dZZQXWumMuQ3fyfhAT50E+g\nWVfriHHXKAWAckytl8OMclqTahYFW0wBJo5deHdQyLAOEqMZAbKT9ZPDgNsD\n8j3b\r\n=d2fo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmKqyifXv1NYTOyIWunj0Vj5MGOhD2LUvI2JzJ3/vPIAIgYICEm8LkCydt1ebW8mXhba9ZZRt3qxKMXmoxcTGN9uM="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.0-beta.2_1563722130168_0.3227305387328363"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.0-beta.3":{"name":"hijacker","version":"0.3.0-beta.3","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.17.2","commander":"^2.11.0","express":"^4.15.3","express-xml-bodyparser":"^0.3.0","luxon":"^1.17.1","node-fetch":"^2.2.0","socket.io":"^2.0.3","uuid":"^3.1.0"},"devDependencies":{"@babel/core":"^7.2.2","@babel/plugin-proposal-object-rest-spread":"^7.3.1","@babel/preset-env":"^7.3.1","axios":"^0.18.0","babel-loader":"^8.0.5","codemirror":"^5.43.0","commitizen":"^3.0.5","concurrently":"^4.1.0","coveralls":"^3.0.0","cross-env":"^5.1.5","css-loader":"^2.1.0","cz-conventional-changelog":"^2.1.0","eslint":"^5.12.1","eslint-config-airbnb-standard":"^2.1.6","eslint-loader":"^2.0.0","eslint-plugin-vue":"^5.1.0","html-webpack-plugin":"^3.2.0","jest":"^24.0.0","lodash":"^4.17.14","nock":"^10.0.6","node-sass":"^4.9.0","nodemon":"^1.11.0","sass-loader":"^7.0.1","semantic-release":"^16.0.0-beta.18","socket.io-client":"^2.0.3","vue":"^2.5.16","vue-loader":"^15.0.10","vue-router":"^3.0.1","vue-template-compiler":"^2.5.16","vuex":"^3.0.1","webpack":"^4.8.3","webpack-cli":"^3.1.2","webpack-dev-server":"^3.1.4"},"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"cross-env NODE_ENV=development webpack-dev-server --open --hot","lint":"npm run lint:front && npm run lint:back","lint:front":"eslint --ext .js --ext .vue src/","lint:back":"eslint --ext .js lib/backend/ test/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","test":"jest --coverage"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"nodemonConfig":{"ignore":["test/*","src/*"]},"gitHead":"db47ebf315e7514e56476776279e5185684514e4","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.0-beta.3","_npmVersion":"6.5.0","_nodeVersion":"10.16.0","_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"dist":{"integrity":"sha512-jlbt93kBkXeICRa5qqoTFUHtjInSgBQm4UkG9sFu2ganL62pKWdrcV91Nu5Ac2nBwXD+/z2U+ihRTkwi0xc+wQ==","shasum":"14ff9bf6471f8b3492255b967ddfe43ba9ac48a8","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.0-beta.3.tgz","fileCount":15,"unpackedSize":585694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNoNzCRA9TVsSAnZWagAAcgoP/2k7OPj+JAsRqRtu887x\n28HNTbv8LzQY972TUDE6EwMFLCcirjzAExIz5uPQVI+V/BbtgeJANyj3JaIs\n97MTPUyMfV7brMu/toyPLQkxGN3AMsN9wPPoR6cZLBUD5wTGjyILEkQGVjXP\nVv/1C6/eyXDE9U+DTG0OtP1k6LHcvf+PJbElNA/tp9ArnnIys8gThb90T1LP\n+WFp2KGHkXtxP5XWohd87X+zvSN5FunWSeoh0rRsF9/R5YDh7skmlpFGoUFO\nevslaID2H00rGa+XtCYIwe+ozLFPK3E5o/rqFkZwxRFUWWnsZbv9BfzM0+DJ\nQBKfjIpJBpOrDcCD96o51HSmWKGGUEiRCmh/N1gKjRUe3jIR6BOdTDV5uDST\n2RXxqJ87wwj8QxfQPhMtPJrcS6SXr+LyjuqpQ4oHFyrA3b5V0Lj2D9UTFOz3\nGdupwkQzA0n79l7ZO8xUOWOzMCklX5WIBvGji7abHfDWCX1z5o3JalHDn9pT\n5OZvCmGFgSZHbfGFV/Hqaxs9aObP7hx/pGc7D9sxl4srNhNWqRJAh08VsPhI\nXZVA9Vl+VhjkjvxCWUkx7QJ8qbBcb/0iYy1bYeU4sswerVVtpD0LwlyAXQ/3\nFK2yai835BxuLX+V1R99Fj6iSBpVu3Ba7B0hper79RnloPFFHRStHWLxEm8s\nDSUC\r\n=NT1W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC5hUUKFWNYINctzpWWb1sO7cKEKvtZ0lY/YtVwO5y6AAiEAo5j/qn7eJ3F+zx2ldU2mSEtZG9x8nT/4HPkjYBJhjB0="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.0-beta.3_1563853682371_0.5904159977578771"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.0-beta.5":{"name":"hijacker","version":"0.3.0-beta.5","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^3.0.2","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.19.3","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^3.3.3"},"devDependencies":{"@babel/core":"^7.6.2","@babel/plugin-proposal-object-rest-spread":"^7.6.2","@babel/preset-env":"^7.6.2","axios":"^0.19.0","babel-loader":"^8.0.6","codemirror":"^5.49.0","commitizen":"^4.0.3","concurrently":"^4.1.2","coveralls":"^3.0.6","cross-env":"^6.0.3","css-loader":"^3.2.0","cz-conventional-changelog":"^3.0.2","eslint":"^6.5.1","eslint-config-airbnb-standard":"^3.0.1","eslint-loader":"^3.0.2","eslint-plugin-vue":"^5.2.3","html-webpack-plugin":"^3.2.0","jest":"^24.9.0","lodash":"^4.17.15","nock":"^11.3.6","nodemon":"^1.19.3","sass":"^1.23.0","sass-loader":"^8.0.0","semantic-release":"^16.0.0-beta.25","socket.io-client":"^2.3.0","vue":"^2.6.10","vue-loader":"^15.7.1","vue-router":"^3.1.3","vue-template-compiler":"^2.6.10","vuex":"^3.1.1","webpack":"^4.41.0","webpack-cli":"^3.3.9","webpack-dev-server":"^3.8.2"},"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"cross-env NODE_ENV=development webpack-dev-server --open --hot","lint":"npm run lint:front && npm run lint:back","lint:front":"eslint --ext .js --ext .vue src/","lint:back":"eslint --ext .js lib/ test/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","test":"jest --coverage"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"nodemonConfig":{"ignore":["test/*","src/*"]},"gitHead":"0572c246d83f2ef770255d871e6c061be5b7e5ac","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.0-beta.5","_nodeVersion":"10.16.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-2r1nhrv4LORrtZbBhqfrt2DJKwAzX78ZFTpwd/omTwP4ZhfWTWl95OurAY1CYbcCEBePTIdSmUZWECgIUL+gtw==","shasum":"9f12ef447f5846424e56795d3c7e8dbfc3db21dc","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.0-beta.5.tgz","fileCount":15,"unpackedSize":593797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmTuaCRA9TVsSAnZWagAA0CcP/RxoASlB1xtfybPUdXs7\n3PdXcIxDp23H1yk5KucuT3iGLZFBoggebVjSzR9wfRWS6ux/MUFeuqekcs2n\nvIQiviU8Gffs5Kqqop341FqAmu5K2q5YkcjI1D1bYX9rIDujyEswugnlxOGU\npk/vrut9n0uuqFmOhsU9i11Wm42MfPVazfoAITWKA0pSOOOBQ8v8LsaVetst\nufKs1TkumbzhRmQQekweGO6JcmoOiw4DKbW525X/Chbrh5a8q5oM9sJadxZs\nppUBZ8FFCCvMdYvOPTKaAikcHLiDnhpgocs5qHhV1r1SqGrRMjL/hNiWMTc4\nCB+3dZOIepoNnuyjPZrUpb2nX1ERXwhWButiozHsbRBX1GXW1KCPXQqvLu0e\n5EjQPW2zul0DZD7n81u2CEMjNY7U40DEJudlUXkiBmhedQ0WJhVwrWEbrnNZ\nF4MxJZCeGSDIuFdcErCPi9lSsrimn2BFndGX2Yeq8qPv/lmCvMwEpo87WGEe\nrMkLkf9kvLXepuT2e7wMwvNtNmXsHkjoKBShcBXN3ZaDV8DGARYrUm2959Tj\n8p6vp1gCp65SdT0fmaeJJA0DWVwWRcdvtOKL57K2Oj/UC6NTjISRUSdlP28T\nIur3zKcVvm68HZpECylhaZxQWjKCYAxYkpX9QN22pZnOLfVDAwmAzzOA2Qhr\nwufS\r\n=CPq6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGoUQqa0vs/7IkWayw1ysbkBzbjP2OXwK21SBDeEonNVAiBpkpQ/4qI5kTYGxiVEqsVAag0J4tA0c07QmcbkUN4ltw=="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.0-beta.5_1570323353421_0.7341762644896086"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.2":{"name":"hijacker","version":"0.3.1-beta.2","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@thetravisw.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"homepage":"http://hijacker.io","bin":{"hijacker":"bin/hijacker.js"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^4.0.1","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.21.3","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^3.3.3"},"devDependencies":{"@babel/core":"^7.7.5","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/preset-env":"^7.7.6","axios":"^0.19.0","babel-loader":"^8.0.6","codemirror":"^5.49.2","commitizen":"^4.0.3","concurrently":"^5.0.1","coveralls":"^3.0.9","cross-env":"^6.0.3","css-loader":"^3.3.0","cz-conventional-changelog":"^3.0.2","eslint":"^6.7.2","eslint-config-airbnb-standard":"^3.0.1","eslint-loader":"^3.0.3","eslint-plugin-vue":"^6.0.1","html-webpack-plugin":"^3.2.0","jest":"^24.9.0","lodash":"^4.17.15","nock":"^11.7.0","nodemon":"^2.0.1","sass":"^1.23.7","sass-loader":"^8.0.0","semantic-release":"^16.0.0-beta.25","socket.io-client":"^2.3.0","vue":"^2.6.10","vue-loader":"^15.7.2","vue-router":"^3.1.3","vue-template-compiler":"^2.6.10","vuex":"^3.1.2","webpack":"^4.41.2","webpack-cli":"^3.3.10","webpack-dev-server":"^3.9.0"},"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"cross-env NODE_ENV=development webpack-dev-server --open --hot","lint":"npm run lint:front && npm run lint:back","lint:front":"eslint --ext .js --ext .vue src/","lint:back":"eslint --ext .js lib/ test/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","test":"jest --coverage"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"nodemonConfig":{"ignore":["test/*","src/*"]},"gitHead":"f4b0789fdda23ded2d4a846f7fb9b05938bb943b","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.2","_nodeVersion":"10.17.0","_npmVersion":"6.13.3","dist":{"integrity":"sha512-h5xc+A38N4QlzKQ89z/6LHGgSYHwtddZEulC7/hCBrLI9p4Xw3/xxe1YbDzXwSZe7TYQ2ewJ5lMKrTNOsWKRjQ==","shasum":"5faf6158b9d8a21219a61e0bffbb738289266c98","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.2.tgz","fileCount":15,"unpackedSize":594950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8EL7CRA9TVsSAnZWagAA0NoQAJxby/NLUZXc3fd28g1i\njSV+bfvjHIaGcmp/X0WysdwJdWQ/lLICepNhFqugABcIZFax1SvXSORa26Kq\noK7YklTyNuRM76l0NfVBYJzBMvN8iPFjW7qGet9jpjovWf60sNpxw+IaGjrI\nm7fLzSyCQ3SGxMIipzFbtQGNP6ct8/UsuXNNeG64B42oFO70SwomFa05z/Jt\ntJQUrR0Q8CdbmIDZbL9KZ8NfoYEGDxiyH0vOAu0eAizxxfDt78dN1/5uZG+H\n5FS9LL0iz458HaizjaxboWu3WHunZBRG35kK0XtT0579zC3+hXrfqEKfizru\n3aaB4SgykFuzxmFyVLUKww4+qhoT5/Hl+NsZVVvH8jM/woPoBM+Znc+SVjeP\nl54J9aPdHjeh08Y2XezhGEUzO4/0CB6gj5VJXdAeDnn+RMQdJsLz9qi4nfd1\nFlDdbWRed2Y/o7m3O8ZJwvGLHvLQsigA+oBfAvg/L5B643cBYNrteoKG6R29\nCBEzbOjbLppK2uIf1OULvxu0Hq5WGwcc1hpq2KwbRbEJluRTBv04xveYb9IB\nBWGnJkwkbHGpcYGgvknfst4BvMtuCcVG+Sk1/8nBmp0JV52ks4QB/yFTF1a/\nudjOjYnR2D+KUpXfgVGrhYp8C2RYEZ9n0i2SgdKaGMp3MVwI9ylT0aln6tJU\ndsTB\r\n=5Kpg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCItvGw8liNsP0WNooYANr7rKRzodbaJRFOGpHMu6I7RAIgK2i7gw8Ay+lt/SjvMHfec75Rg2SYGVwQzJDYRLv0xl4="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.2_1576026874883_0.7927700362098287"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.3":{"name":"hijacker","version":"0.3.1-beta.3","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^4.1.1","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.22.0","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.1"},"devDependencies":{"@storybook/addon-actions":"^5.3.14","@storybook/addon-docs":"^5.3.14","@storybook/addon-knobs":"^5.3.14","@storybook/addon-links":"^5.3.14","@storybook/addon-notes":"^5.3.14","@storybook/vue":"^5.3.14","@vue/cli-plugin-babel":"~4.2.2","@vue/cli-plugin-router":"~4.2.2","@vue/cli-plugin-vuex":"~4.2.2","@vue/cli-service":"~4.2.2","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.3","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.9","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.0.1","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.1","jest":"^25.1.0","nock":"^12.0.1","nodemon":"^2.0.2","sass":"^1.26.1","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"5796cb84b05685fe28643d7cf567df051b0e3dfa","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.3","_nodeVersion":"12.16.1","_npmVersion":"6.14.1","dist":{"integrity":"sha512-pelZExPId2krRNeSPhkhUrWLtjIzAwPwyOHaXr//ATmpUgHJyMq2qE6wcyNAct9m/m9g6PUyfYIOXtzA4+/uqA==","shasum":"1cbd1f83b67ec7ff6a58ab6121b87014cce25b75","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.3.tgz","fileCount":21,"unpackedSize":3630438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeV0+YCRA9TVsSAnZWagAAp4wP/3GvwPiJ01+z2lFr0hTK\nS5bErMHr8cc8xF4pGJ4rMYEXL7bX9H7fCefWazTdFyILrwaNRajxC1KBjSby\np0OVil/A4cTEacmeXkjF2qoe6jgrgILLO+Mfz3rCpxWMQ3WTnoHDJosV7AHk\nLXhF6S8N5cDD8auHLSwF+aR7KsHyZ+/II1hbzWU6vnp/0b+rTpmSVZZqA1/B\nzguZLGPIdxT7bSy1jaiMi4wQsXf4/b1Ix7g5GcMalWHClfv5lai4Q9niMNHP\nCURelmU2yXoBAfBOuaCZUW/hTZ14pXiOyssjPC+v6qEjRlmRuQaECa0OXXlC\n2Rtdf3GGenoNv4gevblXOWepXrWWxpXIKCQzdORc9SH5EqEXhP6s8bDlGTdP\nlNixjcDSY83pAgEsykV88/GjakTfnp1HlJLJU+nu0ftQShZ6S8Mhn370OXDA\nNJkD/TBpoqmFMAnR9LYmIT+4cdu5PPwaFX6hDQJytCxIGFb/I8ALQf3VR7Wx\njBAM6EXIldfv1oSpVY3J376hOrUYj9wjGCxI9ItCZlJfg3JAHSV0iuEpQvkT\nsfjpxH5stEy2cdz4PCVGWscRdFq9CIUDJT1FSjPppT3nVtaobfmn9O3TLDm6\nZs59LK2WfnXwL5KC0TAhBmDNdItpgTcfFPAJ3zzrmFj4goXNu3ncDuoqtkyV\n2Y8Y\r\n=6rYR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbm5FZqhfyfndmKeAOajr4JfJeYJGo2qP0MXxzfv93iAiB2kJlfUUUaXfjkkqj7Mtn2ohZVTtAN8xliWdSWfArpvg=="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.3_1582780312348_0.545966720876474"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.4":{"name":"hijacker","version":"0.3.1-beta.4","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.22.0","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.2"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.3","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.2","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"92047d7f5814781f8cc1a248c2f9d0af7cd1c449","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.4","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-N7o0ORPNklGNjIZE4Xffb+yFLILgI2AYJplc2V//AsmOZinqoCw+NiZNsKhedktRZUfYDx50aiczGPMgdHcVtg==","shasum":"fc633bc9549e209e56efdeb21f93c60180a11ecb","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.4.tgz","fileCount":21,"unpackedSize":3635948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemNy5CRA9TVsSAnZWagAA14AP/0c8oftMesMGASZJ1TRW\nZLBCl3xycOxfJhxSIyNISrr7AHuT7zKxXkzMEMxl3PbH7HGInpCxXHjoHtjL\nV5btRRWcNjwf9/mA39NIHMd6bBvJL+iAlvCLlYzU1HLsiqKYUkJmcn5TgAdF\nPyDPT8Hc72avBVH9dvGBoQ1g2s+rF0JHOWU80VDrDHoNLFjktOyv+ft/Fntu\ny73rGuoLpNfeRv8HAd+x0HS/xRL5KIhDuTzS6gH2y5lGZDj5TGczXYMl/sbK\nXCJWwq+Ddg9gD0cQkAF/k0gtz65EQsH4X6pl2rfTsItm6ryhEBbDh9QfT7J8\nSZNMS1RWO4q0UpoTuIjxS2ShCsHC+Scn0H8CO6NQZnqhAZea4rZvjvjUSLzf\n4PNWF7mnRCjghT385kn7mlIulcW53yt6adkWDSs+2tCVgcQjkwTtFAqcPSAE\ninuSSaGoDkf6DyJ8okKqtDnBW+et/sAtlJE3NIRIMD5g763bEiVt7Xd4vS7f\nE7mbKQHdWsm7iHtoSApUgP+YLGXG1vXWmThy8AnwsxsyIq4K+qTm/HNaU8we\nIK/Rr3NjcybyEd3vvEXY0cLf4Bz3q0l7/1maQJ9XaaGVoXWf3Tn38IHqfKQD\nOcRk/CAa09DvjSWaGWC1Q+wZPAUpuUg1l1exfoF03A/+Ja3Yf0GVGLWLuYl7\nRYXg\r\n=F4ej\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/BDTJXSEyfhgPjTHfzXJ0gaeEvO/0QNiJKDC37dJE6AiBJVOlNZW0tri5TyiEo5uRSIQGrVMWSuOEFU2cvHeX/ag=="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.4_1587076280679_0.3791532844083243"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.5":{"name":"hijacker","version":"0.3.1-beta.5","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.22.0","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.3"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.3","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.2","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"3de71d322fac48a5ed3a835826cf03901e3f5847","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.5","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-oxim+9W2v43euomdILXI8IToZ34jy74Gthev8cCno0yfTO2Egx7QKHgxGNwH7ECCp09DzlTrcenwZh5eTy4g2g==","shasum":"a4078955ce3fdc17e3a525f11d6df809ffc35560","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.5.tgz","fileCount":21,"unpackedSize":3635948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemOJ1CRA9TVsSAnZWagAAZRoQAI8YjYRFStR5q3ZnXNAK\n8UFyqJnIJuhgNtJtqOmqncx5onZeKx+EZMxlZsbRUGvRRQS6vUhwampXaZK1\nMuelYEJx6o8gzqy1gJeghmtkzQsRmNq56J/rdOIduN7glX/oPEJ1ijExquIV\ntjQPsr3XSVKmHvz0Y0DKPPhQ4kkfsnmD+5Gk60fuvsY37gn/vevtkFbJ2PAd\n4V8dmT201MRt/DlG3x6xjfZCuEVoSeUEKRfWpQ7LFs0nsyNy/8wl58AhBF+q\nYf1/6AWiP1ICzzYDPl7rCTZ6G2H0KGp87EphWMUOtQ1MrRAgQbCvDIkeHN9G\nitBXkBA73wjlgWOizIG/MCak43nRYaHD5lX89A/onmB9D2rhaWnWY/HFLwMA\nsI6LxxonQBsKA5Hbc0uLfhEu+dz+Wez7bVzZrN4cBo3foWXhso8xNN3KT13C\niNhEtcNkRfB3kIJDAElPydxoFYlEc4OI9Fmmd8PxG4P3ax8EHQ6xKFY6UjkO\nmwp47lyDOETivN7n1fmWEMsKd54dUfQ53HVIscpH67CjpquONHxp3CZAF4QI\nCsHBmw6dRolX25zvUCOA5cYFKPPqs2PMWC4254rTocRKVvJb5mtjER9YwHMA\nbUJv1k8yXTf95XBo+GqwAmK74pEaK30CpnWmZEuP2gM81LcrfsAYaw1rmXEk\nt0kB\r\n=W8o9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJGFCcwCeRUesc0xQdXX11BQ2iN26rkDJELd5nnYX0/wIgYZdg+aL9TAobu8x22MaDxTP2R5Hn9BqF32Mcub/nrM4="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.5_1587077749086_0.027288887593774014"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.6":{"name":"hijacker","version":"0.3.1-beta.6","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.22.0","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.3"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.3","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.2","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"78f2075d932e934cb527663b65f481248cd59475","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.6","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xsEM6ZXsprdUY8Ys0mN45tvMh8vUQulr56ShpchjzgDRg3G2IMjLwK1i+uJUYSVkd6ArAOU4IPahDJQgNzSsUA==","shasum":"3d99cd4c4e4c29ef7f05c8187cd9163128a8de93","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.6.tgz","fileCount":21,"unpackedSize":3636316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemhcvCRA9TVsSAnZWagAARTsP/3TyvquqPX24gx20d6Ej\nFuZgJIpPIVE+rjRBFJChzK2GuCPSK6tbX2jbJhVhElHyUQfS2Pp3WN5aLvfF\naUAB0tDlc0b6jEGmpn5/vtEffNUqSRuXPI/IVTLkM+4+RuD1eGrphVIY13qL\nyHDyxFyR/89f5SJQab8zNMWWG9GNd/fm0ZmlFWZwoYBBzKYX3gww4zQvcL4Y\ns3SxQqp+NNHUDHNGQJRfuSP7itb02EaGaBc41XBNZbTxZd9SgDWKe2XgJvaK\nGU5eiP3gEGEg7HYs7NLOVZJNb0seEzcz5e1krNjGH+KoINUDVqnxsfRjKH9R\nTqBV+QXpk6B8P1wXHH8nm15DcDs0t0wtW12L5vhzE7c7D8hemAjWjcti1kg/\nrTKbDapTJVGoKt1uMtHqnu/TuemSMMcfXJWNzkaKTvkwf6EcfQ3JuiL3vQju\nPChI5eBCuUbewqlVR7nDBN/7AA1NBrEob4wlegfH4+IGZUy3YmfdPK91g1We\ne692VSq5tAZV4zApYhW+GOgidLrBfmRoRApDTE4WCEvPaFuA23cYI86To+OD\nU+vZiJr2qtyNSKH1u+t4f6ze9xVvZwrjghdrIMIhhpH6Cykbb0O7Xzm8pYrk\nN+SBg5wWAS0eiSttfkvIDumZ9IcX9c0EVvu/g07V8h7Yp9+smTJ6rPT9tnAg\n0LiZ\r\n=Ny1o\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMKrBBnQ1QapdaXJSKZOlID09a1Ya6aobPN8mb8ReLNwIhAJoiM0Wx2lfG7xuUChbiEYvZhGNGyeUkClBmEtOSt3NZ"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.6_1587156783343_0.6595216878635322"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.1-beta.7":{"name":"hijacker","version":"0.3.1-beta.7","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","luxon":"^1.22.0","node-fetch":"^2.6.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.3"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.4","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.3","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"5e4ccbdfa64d790586e246bbc0bfd80681808891","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.1-beta.7","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-xGHBnxdrNDaDpvQ95vcP5jLf5Gce1OYt4ngI5EGl2cP69V2PmSrNDs1pFUJlEaSNphnHLcx3o8Li94TqYP4fnA==","shasum":"049145a48edcb75eb678925af9cf9d96b4f81a77","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.1-beta.7.tgz","fileCount":21,"unpackedSize":3636316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemiu/CRA9TVsSAnZWagAA9kMQAJuTRhwrTepymbtv2ddy\n1gVuI0Gtp/qVG6gJbsSMb+1IqnYoVT23GY6y5gw+TALvtYUpYUWUIGGDNvgo\n0gPdbKXV6IY4db1PKBzSQ72oPrpNlf72Bx53Hvi9sSN0IqrnmO0uAi15uRjR\nVONoULJQSeAnY4i4T8GmZEaeFqSkZEufNSWBOI/rtseSF1gzWds4w+YnxLxH\n76v7XeNOVmRGHbXovibniGNJ+ioBfUEDutuzq25IAy02U5s7vsYUd0+2GHwp\nXLxzQCwH1tFCwz6wWWPWveGEE1ZhdMCeDPDuLSshoJ9pT1z+Aq91S7yv8GKb\nyiHrRwQgTdVE+u2tjM0MhfWGhvHSxQyo+hqow0M+5W+ZKgN0PG1J5/T5b5Xh\nxaWwxwWLeOeYJkhJA3lqgMZo5NAzdL4vwRSi/qujZV/hCwBIHNKW9n88nt1t\n+nOnRhrKu8826yB52R0ZuHMXDNcGuVkGLuKOmiT3NXVidaVYQlJHM6920qYX\n2zIgLIMCwlShXEMNFxCqTwEN37yoMt6AZfo4xjKz5KRFxvXMxNmDIc0s/ygs\nM2XLzIb/MxaWVmR1Fpu7EMaUT2HC+X9RFJ2hxZ7XgUrnA8JaFmA7ivgWuye+\nJTfK29y5mJBA1icQPj13fvlGcDVR0KB6r2oDgt4JBx/JrbetXYoYFGtu1STG\nDmra\r\n=5Yp5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6L6w4P3swIWmKwjp/SLkh7MtN0tdsclVCsgxNd6iWqgIhALyjLzYQIvfPGUVvBx2jJRYrd7fYzoAM9+qoHbcXmXc8"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.1-beta.7_1587162046665_0.4375080597480394"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.1":{"name":"hijacker","version":"0.4.0-beta.1","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.0.2","luxon":"^1.22.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.3","winston":"^3.2.1"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.4","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.3","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"fa4e2fc1d33149d891e46d9e34dbd9ddcf672f15","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.1","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Zr43uLTWIgKh0EuPHDxoMwYvUZ5WoMmYsQjBn9ckYlHpdDVoD0a1fKCmU0J7Vb1PeOaw2OR62m1HR2famTjzuQ==","shasum":"a513461f7a204e986febfff663706f2dba408841","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.1.tgz","fileCount":21,"unpackedSize":3638653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeolc4CRA9TVsSAnZWagAAh5UP/2BeCLr+hSFmTFbnCshF\n/6T617EDVy29ZhTPkC8kmXgaqhONY0eTzCrIDuv6OEZ8SHQ1T1JyeRAG+muL\nsa9LtI/5KPs9NqqA3OAB4ZJrmwEfDVpddty/DMHeKJubu4wd/ddNDxTk/lhm\n27bF3RA225War65HsX8oGwCsRLHPOfaWc+EldvRPozXaHtNpTyoDiKzvTTkN\nnCAXs2ciZLyhhmxX6mJBGqR/SNmnAsPXx08yD/kL8gEU2fzaD9fQBukgATEM\nbRGnS8WDHrve8mJkayjzeLeaKFUe09Z1HGrQecj2ZnbxZ6Qvs2RPFHUW4Nfr\n6THmlSxipDpf2XXEpXpaSw/cJAlWWhphpOpWudv0mqaE/21Xz7YW0PCNM6px\nJ5eSIUaJS8zkmqQTyhQhvKcenwMQCrCWJVtdr9DMK+hPf5T2yYpBWmyAAYyn\nKs3/neIiLOnwyQU37gn3cFMsENJc+vodwgxg9MXdotYuisFcqEyGc2I7fD/I\nYHrUmU+o51FfklUCnpObBC92ZRtH2pn/1Ms5yrnpUpoRWIVxraiD2nK8juao\nc/OrL509x4HhGc2nlwrlM/53YiRniouta4f+QUw+eEJGu5pCqRewIvcci7PQ\nGWZc0sT/yC9LBV/g4VZnIRpNz03nZ+TaTODWJOQIcKOLJD6vGU0leLf1QQXB\nZkfj\r\n=oemc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrNF32114q8aW03KKQc80H9tIpyR/2sFhkZX0QRSgCFgIhAJ6xCvFLAP9G5lEKLgsNNHmivirSHmsJuGArnIzikUQZ"}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.1_1587697463837_0.547787337140683"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.2":{"name":"hijacker","version":"0.4.0-beta.2","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.0.2","luxon":"^1.23.0","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^7.0.3","winston":"^3.2.1"},"devDependencies":{"@storybook/addon-actions":"^5.3.17","@storybook/addon-docs":"^5.3.17","@storybook/addon-knobs":"^5.3.17","@storybook/addon-links":"^5.3.17","@storybook/addon-notes":"^5.3.17","@storybook/vue":"^5.3.17","@vue/cli-plugin-babel":"^4.2.3","@vue/cli-plugin-router":"^4.2.3","@vue/cli-plugin-vuex":"^4.2.3","@vue/cli-service":"^4.2.3","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.52.0","commitizen":"^4.0.4","concurrently":"^5.1.0","core-js":"^3.6.4","coveralls":"^3.0.11","cz-conventional-changelog":"^3.1.0","eslint":"^6.8.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.1","eslint-plugin-vue":"^6.2.2","jest":"^25.1.0","nock":"^12.0.3","nodemon":"^2.0.3","sass":"^1.26.3","sass-loader":"^8.0.2","semantic-release":"^17.0.4","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.1","vue-router":"^3.1.6","vue-template-compiler":"^2.6.11","vuex":"^3.1.3"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"fe1ab01541ca604153c5697173c06bfb8289ae40","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.2","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Nuko0gVx1RWgPXS1EFIkoIVNUVdAzVi+fnC8F3JlNM4ZdqVDHDbdKHY7qFcpuqPFfCARktxhiu7mbt90cuPsIA==","shasum":"36fec3b5e97fff95d92cbaf69502ff1261493747","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.2.tgz","fileCount":21,"unpackedSize":3638653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeo7K/CRA9TVsSAnZWagAAhQUP/iZCfrh54GAhE4mhgv7m\nnAsAQrGw5yp/rTkwHNzCZPF0QSXp7VvqmRSdEQZsF6fsYuKmm2Gm3FMc+HRt\nK3nHurdGseMC4lZO1uLq7qx+92RZ/16qxl/qyaSTFPHclX4dTp3FuyIrU1I6\np1n8ci9G3Xh58urmhDyNaWq4Nc7Qj0nTxbW1lhFnoWLyI97NBRkY67Atpk8z\naYKjC+p08zSFenK/TcSZwmibSvax9PY+V3JQtWAlQMZXyIQmIIWGtCS2p1U0\nh4hWxCIC8RVGKHzPd5VLGD72E/ss/aMhVCa3+oC9TtU/ea2CrSucaDTMWfxz\nowTQ9SIxkNSZeB0wNiER1Qd8LQPmMIMi6Q2kxYvxa8MVLXquncE9CpvzgTYf\nsFATvAx2ujK+ea6RC16JqLzg2lMl5Q8GBwqVuGjHCKe7nR1UqBqUSrNtnro1\nuQkP1CEB41eo/fCFjXwhRZkyOST6DvyuBw0YXiCvv0/q60I1qsvjl1jxLG3g\npKIuTVl5Ivj86XUzGehIXr0fXtIKEyyNphkChMispK+PBJLDsh8+OL6CWgOf\n0ETtNPtIitL0NQ+qJrcRvzmfPMtX8Y0dxNGaMZinKye8dwczIWD3k/H8DvPf\nnLsq9nMwvWjKJ+4qqX+BOr0sKLNyY49hEbNJBZg8soGyo3E4Vp20uzneQkUd\nThEr\r\n=h5fj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXAT/zSMO0n6KF839IOeUGUweEtq1d8WKS7tVz84ywFAiEAvrtruXQjepTHqB7D33eJ72dZc7cBy0Jxoa680Lb3sH4="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.2_1587786430691_0.28882948431350797"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.3":{"name":"hijacker","version":"0.4.0-beta.3","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^5.1.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.1.4","luxon":"^1.24.1","route-matcher":"^0.1.0","socket.io":"^2.3.0","uuid":"^8.1.0","winston":"^3.2.1"},"devDependencies":{"@storybook/addon-actions":"^5.3.18","@storybook/addon-docs":"^5.3.18","@storybook/addon-knobs":"^5.3.18","@storybook/addon-links":"^5.3.18","@storybook/addon-notes":"^5.3.18","@storybook/vue":"^5.3.18","@vue/cli-plugin-babel":"^4.3.1","@vue/cli-plugin-router":"^4.3.1","@vue/cli-plugin-vuex":"^4.3.1","@vue/cli-service":"^4.3.1","axios":"^0.19.2","babel-eslint":"^10.1.0","codemirror":"^5.54.0","commitizen":"^4.1.2","concurrently":"^5.2.0","core-js":"^3.6.5","coveralls":"^3.1.0","cz-conventional-changelog":"^3.2.0","eslint":"^7.0.0","eslint-config-airbnb-standard":"^3.1.0","eslint-plugin-import":"^2.20.2","eslint-plugin-vue":"^6.2.2","jest":"^26.0.1","nock":"^12.0.3","nodemon":"^2.0.4","sass":"^1.26.5","sass-loader":"^8.0.2","semantic-release":"^17.0.7","socket.io-client":"^2.3.0","vue":"^2.6.11","vue-cli-plugin-storybook":"^1.2.2","vue-router":"^3.2.0","vue-template-compiler":"^2.6.11","vuex":"^3.4.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"1b237dc907bcf58c27c0f46e410b6ada25e3fd84","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.5","dist":{"integrity":"sha512-dQNPzxVukGL4qDx7GZBU0BBhXe6QQD6z1xydiaRUQz76/6VSPW6+lOyQrbnvMc9LR6pEdZYSdCOGEWhZuOH8WQ==","shasum":"1da95d10eabcd548cf1008499d0486d253e1ec1c","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.3.tgz","fileCount":21,"unpackedSize":3651531,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqqmCRA9TVsSAnZWagAAuNUP/2lg0Rcs6QNwvsdTWjGE\nGm43fXzd5Oz30KHuDLka7ApswC08qIwzTA+QNrxG5xwR7xd2WEs7vnaiSnGK\nVyrSfx4EqE8L3iRdRjL4Vg57OEhlG26MC13EoeeXazXiXj/O2UckRQzpxOSU\n1pDgILgJrBO5xJzFpTMI8sjTzgjObn/vtCazVErmJxuYsmbBBFQvhObwqouV\noiPAu78leT4lo3CjUu3syFDTJy3pJxcWI3DUyJHPPcs3iuCU7aaxf7DF24vP\n0upL8RWnUKkzm/kFAomodvK2K5Brh57fQCfD1QwKfMUS96/SqG2t21OyuNEI\nPe5CfEWr3U/Crw/chJrkOkcPE2QHZ0f6jujrRS7wFaIDQJz0zj0Ots0trLDx\nPUpzh1Hd07l6nltYXKO6XxgX6tirgfMx0Zq5b24MzC8xNc2ASq/rmTV9hh3l\nrJ2xiOe6H3A+PQ9BBdT1p2BLnk8ixi55zSYp/XpuglUSgMEhnuRmO2u0myg/\nxrwrFf3OfZ7h1jdCqyifYP19ihlQN/sf+eAQ85abmfmndnVzCLZS7zRifMfl\nfbQsFqlIYKdzO/j9Xohk7dSVF1/tAzHC+0twwkqLs4tQjj2EY6jtuyqVZfBn\nbDIOrmkjVID0Hxa4xXSXvbXUHfkAOFmGqslFwzUVL5jN9bbgkBw3dHxz/8dm\nVdLH\r\n=6E06\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOR+459cDZ4UmVZpJWeIxpPVfA6f1Lavms3e8AiFvesAIgIq6Uv/f19yoeA5rk3tn4d6aZN7t3dRTt+d4Wj/iBlDs="}]},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.3_1590078117974_0.6049214889585461"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.4":{"name":"hijacker","version":"0.4.0-beta.4","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.25.0","route-matcher":"^0.1.0","socket.io":"^3.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.14","@storybook/addon-knobs":"^6.1.14","@storybook/vue":"^6.1.14","@vue/cli-plugin-babel":"^4.5.10","@vue/cli-plugin-router":"^4.5.10","@vue/cli-plugin-vuex":"^4.5.10","@vue/cli-service":"^4.5.10","axios":"^0.21.1","babel-eslint":"^10.1.0","codemirror":"^5.59.1","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.2","coveralls":"^3.1.0","cz-conventional-changelog":"^3.3.0","eslint":"^7.18.0","eslint-plugin-vue":"^7.4.1","jest":"^26.6.3","nock":"^13.0.5","nodemon":"^2.0.7","sass":"^1.32.4","sass-loader":"^10.1.1","semantic-release":"^17.3.3","socket.io-client":"^3.1.0","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.4.9","vue-template-compiler":"^2.6.12","vuex":"^3.6.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"a2dd03270168a7e1e7ce5af8c0ea8f46182ad11d","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.4","_nodeVersion":"12.20.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ATBzz1Lf9qmIHM/pNe9VjnPVQm05x6o/kzl+JhV0VXHrAo0nP7YYQ245/nDvPwpEmHtRp6gxvfJLKfOqBBzXyg==","shasum":"7843250142b5f84b4bac479346a22dae149c6e71","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.4.tgz","fileCount":21,"unpackedSize":3615220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgA51QCRA9TVsSAnZWagAAqSYP/0WUcOnB5jzDgUNqGgkQ\nHhWgx4GdzSzFJDp6hRbulswFg7QHGa/U5LYYT+zsGUMAbkbfncZ08fUkDA1H\nRGiPIt6PRPvj+e+iYduRlg56N3RO9Q5ORMATBMLBTK3MMvbEJDmNFuCjXJpl\nfmpqkvA49cegsfpSFX5vtPSD/4mPpYmAcUN7n2gHqQEUPwY83xLKIWRBvgNP\nu4a80jaNvUBD2XFq+l5l1wp0Kz/OKyj5WGkQ3Oz8EL7IYSTtJA0m4UrKhFmG\nmWD788w+54AT3eTMjl5x3bgV6zvzOWRj89GbOoqUYWRh05rk/A66718SvZMu\nmQN3YQwV8WeNXOPQOV3/aRu+1kAGlauE0p0o+SePbadAZouXHwmoJZjMGfjr\nBvRIYvILX4p7nnq+36oZtsSzkgI9NQXmp/u4kHIYSZZ5BnEmd+aHnpKGv5ZB\nw3vVdDGYi2L9CPg6th/pKS4gFixRfYgGn8CZlLT5/n0JzN2DpqVszK7IbdST\nk45uUakDqxPYqWDlhKqjYnUsEHKRzYRP6mXlW/9G6uVJIeUtwVvzNNg6RoRc\nMeJPYwg32SWCgRoIHg++v8OgY3iZ5QimM5Qb4v42alDIvcZSo/RVDSsUIVq2\n+6YWoS62n6TU+QXCIdaOc+n+U7cm/XYKIq4lHF+WygcZuZ3iZezb/s5x4gRc\nCtKI\r\n=tu/v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFa8bHf9yn5UFAlJSuZ+X3QzNUzkeOZw+mnqDkELw/r7AiA+uLexRTD0MT35hrDgK0RvomFoD0CGfAZHlDQyAOKb1w=="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.4_1610849615542_0.24616424444666518"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.5":{"name":"hijacker","version":"0.4.0-beta.5","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","coveralls":"coveralls < test/coverage/lcov.info","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.25.0","route-matcher":"^0.1.0","socket.io":"^3.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.14","@storybook/vue":"^6.1.14","@vue/cli-plugin-babel":"^4.5.10","@vue/cli-plugin-router":"^4.5.10","@vue/cli-plugin-vuex":"^4.5.10","@vue/cli-service":"^4.5.10","axios":"^0.21.1","babel-eslint":"^10.1.0","codemirror":"^5.59.1","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.2","coveralls":"^3.1.0","cz-conventional-changelog":"^3.3.0","eslint":"^7.18.0","eslint-plugin-vue":"^7.4.1","jest":"^26.6.3","nock":"^13.0.5","nodemon":"^2.0.7","sass":"^1.32.4","sass-loader":"^10.1.1","semantic-release":"^17.3.3","socket.io-client":"^3.1.0","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.4.9","vue-template-compiler":"^2.6.12","vuex":"^3.6.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"fff4dc2056beb03d8d874a4a615b6baaaf4db7df","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.5","_nodeVersion":"14.15.4","_npmVersion":"6.14.11","dist":{"integrity":"sha512-7iIIQyhE3R1q6UkcbMo508c9kgT4sCtFMiOizXhqtBdlocX32LKGWLUPq6B0K8JUX9Rtz+OShkUOgowBQPei4w==","shasum":"a7306c05956987e0dd3636024487a5afcf979ee9","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.5.tgz","fileCount":21,"unpackedSize":3615179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBQqeCRA9TVsSAnZWagAAXJAP/3TRWxz7Xs5umxUnvAWE\nWCR8Knd7TjtCAbOZjH1ZSE/cX5KQeDazSUqw5aMi9CpDXnHHgR9FEERpWppQ\nKk83RDziGdtUAbj6ESO/wxjLlKK82XDhXuq4fHNtuumZ5rUkhzUQUbxJDozn\nMauB1tZr+KZ+hMYdJWS8tXY8aaYWqOOIvfnPnoTda8NOvLzlx2j82XBPbt4c\n7YhG/X7JEmnWrXbDMQvy6hs9OtJatsa+2zFFw5DSZnLSNu3XACWgM8O9R7aV\nGl2TAfeopJSjQv+dcLcVpGNPZe2jekmUp56PrKpqPPk9K991YLqkp0Nogy0y\npaw9mkLQ4fnekfSwJ6B2mkR2mN8fFmskkFYuAupxg5y9yz6WhEWWTNrU+RDI\nwTOWwIxfSV3LS/564OGvWp6PpgFFr4cb27ceEWD4ktJ36qO3wzLDUxlpaTvj\n/DMjJPYpcYIp3lgqH6py4Abovk81RRrjynKdGDT+iS2WYbzBSkhX383RnyNh\nqhvXQDwCMGYXoh282S80rJ01nOyHTMaqVGKL/P8r2TYZJCWMIj/tEWlXU0Ih\nY7AYDSlmmQj7ZZ8/MBD9fgywAs+evvLodYoJc4Gb2ptzuu02QbkRRinLmFgI\nXxrbS/X8UmZVhZUiy1QMYdfg9Q280jvOhY59LMaLVOd+K4Yg7WHz4+aHsDV2\nPs4s\r\n=pGl5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYJBfQsl0c8j05e4wysgRwxumtO7C57zQW+/hovxp8ugIhANg1Z9tunkYRyZQ00CNfHpB2zDhKidpy8Rv/bfuI9H2U"}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.5_1610943134315_0.643153796248026"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.6":{"name":"hijacker","version":"0.4.0-beta.6","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.25.0","route-matcher":"^0.1.0","socket.io":"^3.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.14","@storybook/vue":"^6.1.14","@vue/cli-plugin-babel":"^4.5.10","@vue/cli-plugin-router":"^4.5.10","@vue/cli-plugin-vuex":"^4.5.10","@vue/cli-service":"^4.5.10","axios":"^0.21.1","babel-eslint":"^10.1.0","codemirror":"^5.59.1","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.3","cz-conventional-changelog":"^3.3.0","eslint":"^7.18.0","eslint-plugin-vue":"^7.4.1","jest":"^26.6.3","nock":"^13.0.5","nodemon":"^2.0.7","sass":"^1.32.4","sass-loader":"^10.1.1","semantic-release":"^17.3.4","socket.io-client":"^3.1.0","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.4.9","vue-template-compiler":"^2.6.12","vuex":"^3.6.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"d38bdeed3213ad6f38e68a9dee8353813f7ec350","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.6","_nodeVersion":"14.15.4","_npmVersion":"6.14.11","dist":{"integrity":"sha512-VBfvBpfV1voyQ4Upu9YZsXKePC/gJ4n+d4qJ6P/jHoGwxstRG3oAmmJ5KA3k6RSvU/dluG8HajbIiBNumNa1fg==","shasum":"54733d5dfa01112d52e457b6fd6195f2c9ba3018","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.6.tgz","fileCount":21,"unpackedSize":3615587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB7gxCRA9TVsSAnZWagAALJMP/ibk+AgB503l/N4Hn5N7\nO3aw6Sx/jn8gdB5P1kwAWLn7ni4BIHyn2Wjr1Ws+xCxUejUKC4K+k2XG7TFx\n0+vYjZvV/0ceEw2urquAJCkz7yN/TDrC2RgzbH/Y1sw1dLc9jA5pq5hRIq8t\nm1f/OjIptmHswE+z5F1obOqcYacDuN0hAC6RlbqPtEo9UaXHmZRM345MUa6q\nJgF2f5+tPh+Gsi4GlE0ItQQ44GzPZL4sC2OBNY/ZdP0ZmoOg8A++D03me9BE\nh2Qq+iIUVP6SZTDtCSi+xn/r73dIhXl9TwieFwgWSoo6FEpfmeLgSdOoai5d\n7EKCCt58Tj8xGipTkv9XE8BVdvGqMJhqLV2NDxAgerEoIVLVdi8znidy3JNI\ncplM1DNz21ND6SAYe5M/rv41xhwJa5RYTk9OMB9lKYlZQGbwzmUlIWjDs2Ut\nQbcHgH3ZB1ixUf0nlXjThZ67d2q+LoKxguDOAqODgkGwb7v/AIsEj2i6A5Db\nUD5lEJvB4TXp5Q/5aWu4Lv4+JXWEwPfqPHOI+0E3uvJZ0Nr8tWky89L8PUMi\nF5T9vz/wdM2S6Oo376YStw/odI4obdORk0oBEImtjsa/imdkRJp9MxJYRLDg\nUT+169gdudHTYa8+OaUpGn94LSsUL1Qbz668w30VgG4tGBeGu3dbPzmvSEPN\nX7Ud\r\n=W2Qh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICl5Jz7b5Sb56HXdBsUhqjLZbHcFeUrIhVJeV3HEgpvcAiAmoUsBNacRuWiSVjYgUyGcCCeGuJyAVtpe++3+07Cnxg=="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.6_1611118641047_0.5424862000863129"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.7":{"name":"hijacker","version":"0.4.0-beta.7","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.25.0","route-matcher":"^0.1.0","socket.io":"^3.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.14","@storybook/vue":"^6.1.14","@vue/cli-plugin-babel":"^4.5.10","@vue/cli-plugin-router":"^4.5.10","@vue/cli-plugin-vuex":"^4.5.10","@vue/cli-service":"^4.5.10","axios":"^0.21.1","babel-eslint":"^10.1.0","codemirror":"^5.59.2","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.3","cz-conventional-changelog":"^3.3.0","eslint":"^7.18.0","eslint-plugin-vue":"^7.5.0","jest":"^26.6.3","nock":"^13.0.6","nodemon":"^2.0.7","sass":"^1.32.5","sass-loader":"^10.1.1","semantic-release":"^17.3.6","socket.io-client":"^3.1.0","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.4.9","vue-template-compiler":"^2.6.12","vuex":"^3.6.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"6d0938975f639db3c9b4a740f8faf1511b51be59","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.7","_nodeVersion":"14.15.1","_npmVersion":"6.14.11","dist":{"integrity":"sha512-s9MzRXbnnyuUoU7OdNyH5UBO0EWrFvp7xiZS4luOmnh7pVa5BGTTDLnPVFLvk1KOJ/e/dnMO29YtxIzQAdLnuw==","shasum":"70596b728ce6a2f4a2cb1b34bda257bd6a102b59","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.7.tgz","fileCount":21,"unpackedSize":3615742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCkBuCRA9TVsSAnZWagAArnoQAIwLHm9WXqGX9DtKlnT/\n/MwaQy/BWSOJsZfyuJfHBCu1lG85nkdS+zVtb8CfVNLke9KzYupZI4WYqSW4\nChUTCvDbFAvnGCcyCT2uLW1RrUoXEY+TT3Ff04tRE4mk0TrDT/N6X6iKWr1n\nTGwNAwh2hhMkFhjy21UfPDkN29SoHU8/E+yTOexOw2zFRdi56cOo7gfpQbwS\nCQmSUDaAS8nEkFaql89x6z1C2DGO+7TX4vpKsTVhcNA0o8tY7z54WiQNkBl8\nlj+dghPIz9PrQEDxiljUkMQpTxsG+heUZMEOoqHiySjqFp6d+CfgqAWKZwm9\nsZOhu4bLnnyNuF7OkhBfJ1atBgwPJaurRyTBXH5SMXe1qmumpGH+4M+ccn0x\nxiBC05hhLCYd4aw+JP+HO9I14N0FUj+g/m40Xz4U0RToA2KZ1RRkTl3nxn2I\n3jUig8c2fTmNJ0s25i5FxAkaMK1h4AhEi98+HbljFa89xNRcnGZG18LU9IPz\nmk3Fa6VLfv0Hel898tHswZUypQQiiv+Rp1xUZ92RkPdBQQg2YZ3m6lnqxGKR\nlTcwHZ7uKHBKFQl9KVw+8ELMAbvbDjDDP1XDcscE1dljSKbdCXh/MMVpbnDI\n38yyz+cHrQwEdpIwHkR7N8n8pz/DdSI/Q121E5AFmPXN6LG4qEBYzbUZ/jl2\nKuRm\r\n=RWuF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG9bcwVnLG4R410C6eJ4/wEVdpROYzkvBFkX7hU0DxP7AiBmjYvA2NC6ogmDOAnnf6Xc90AE6ZeZqVHSVbBclUM/Kw=="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.7_1611284589188_0.6852291506948949"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.8":{"name":"hijacker","version":"0.4.0-beta.8","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.25.0","route-matcher":"^0.1.0","socket.io":"^3.1.0","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.15","@storybook/vue":"^6.1.15","@vue/cli-plugin-babel":"^4.5.11","@vue/cli-plugin-router":"^4.5.11","@vue/cli-plugin-vuex":"^4.5.11","@vue/cli-service":"^4.5.11","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.3","cz-conventional-changelog":"^3.3.0","eslint":"^7.18.0","eslint-plugin-vue":"^7.5.0","jest":"^26.6.3","monaco-editor":"^0.22.0","monaco-editor-webpack-plugin":"^3.0.0","nock":"^13.0.6","nodemon":"^2.0.7","sass":"^1.32.5","sass-loader":"^10.1.1","semantic-release":"^17.3.7","socket.io-client":"^3.1.0","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.12","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"30267a6bc1005a1b3d62b9477386cdb3acbbe626","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.8","_nodeVersion":"14.15.4","_npmVersion":"6.14.11","dist":{"integrity":"sha512-v56+pcGuaWOaFCBK4em+R/O5m0Vl2F2iSAQ1Ga4EpSRQ/tsIzAzUORe5neMCrayeq/reSYZG44cf/vgtDmyKOg==","shasum":"75a606747a0e0e8c01f45508aa2cffb9c62f4fa2","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.8.tgz","fileCount":172,"unpackedSize":42189777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE38uCRA9TVsSAnZWagAA4WAQAJuwegJ22Q9wZdwde6CA\novA8hjvGzqmNnBpXZLJkpvsp+5y6KUa7QuDyi8PjmGVoEapXN8KrH9hLYtvN\nVjbvg6a9RxZb8XIGwovwOCvbkeT3rsyEA1Hki1HOQUFGf3y5gpmxtXs/G0QZ\n5yGVUge179d5ZEBQzaWTT8f72Rl2QS7quxqBqhHGqv2j+Li1VGU/oMA2SgJB\nwF2PVSRp++LbOWJNtfJATuLyxqgysy8KdW121JTbhIku428vKhYbUCYryTlm\ns6DoL02GEpKLkapTve2qG/Fh0wza57Y/JK2NhMETohgoMpEREkFm30vLNWL7\nmDFbe6TnOOFigRb+EZvpRsvAoZq4moybSoqe1dtsxmcIPriUF+p7Ueulg280\nc79erEd2d72oC4PLgSOstkWRKkoH6bsROFDxHJyHTzMCTmV5yBlhswOk1xGO\nb7HZxBVlvuS/4n994VCHLClojEA0l5HsC0lhoAGyCCqMY89BUOy6K8zTm0Y8\nu23OIRxTn1A36Foezn7PzDtJc1PFBgZH6wfBdE7PSVSh4TjPAA+wQlwmi6aP\nbWnwzOtmADp96jwUUKJL6oiE7Up6K5IuiEUJPENg4RDEoWpfNiov1q0A5R95\nPiehdhjjheKFinubhOffnmSjCmjyIqQZYZMxA9ncd3t36dthjnnkBVUODrYn\nyl1W\r\n=INQ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKjDW+1cughbEdeVCvSqido0JTXEjXmBENLkpXn+4LoAIhAJV9YG3uMWtMe97k4BCLQV+Nqg5l30BbmZ590mc3mU7/"}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.8_1611890477489_0.3864745668582932"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.9":{"name":"hijacker","version":"0.4.0-beta.9","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.0.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.1","luxon":"^1.26.0","route-matcher":"^0.1.0","socket.io":"^3.1.1","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.1.17","@storybook/vue":"^6.1.17","@vue/cli-plugin-babel":"^4.5.11","@vue/cli-plugin-router":"^4.5.11","@vue/cli-plugin-vuex":"^4.5.11","@vue/cli-service":"^4.5.11","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.3","concurrently":"^5.3.0","core-js":"^3.8.3","cz-conventional-changelog":"^3.3.0","eslint":"^7.20.0","eslint-plugin-vue":"^7.5.0","jest":"^26.6.3","monaco-editor":"^0.22.3","monaco-editor-webpack-plugin":"^3.0.0","nock":"^13.0.7","nodemon":"^2.0.7","sass":"^1.32.7","sass-loader":"^10.1.1","semantic-release":"^17.3.9","socket.io-client":"^3.1.1","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.12","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"c9034c7e635ef5a90e7ecdb04e9acba8fa6843c0","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.9","_nodeVersion":"14.15.4","_npmVersion":"6.14.11","dist":{"integrity":"sha512-4sz/5ktqfURZlJlSu9z7Uho7uS7jheCi6w/Tlc6SkyWLKSdGci6aWkKfX+R5NcLKCaUL4/NaJl+9WCLW3YHn2Q==","shasum":"738ede5a7bddbaba4a313197868bb3e7782ada25","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.9.tgz","fileCount":172,"unpackedSize":42239964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKIZGCRA9TVsSAnZWagAA/QcQAIspjcw3y8ZkBzimf9ET\nKBqDdR7mTR3P771AdTak5TIPQv3RkegEOad1ZuHUSt2bvmSn/CT2Cxxw3dq+\nhKk1P41TnHN8aToBasJs1ouc+PxlefnEJtfD9zAtaI82fIY5gIEkZHRfTWE9\nFqyJ8I+JWcLZILYQ5IZi8tSlBFeApPXzp/kJrSwymprdodKIxmQt+qh9ap9i\nRTTlPgibN8qARp/MIpI5MF/jnKS1BYesg7yNTXuozBiDUauF07Bx+FZq7W0A\nNIr9+3PMNmgYHNF0m4AiYKO+cbt1PPcFiRgmJ65BvnxVuC2EBm51Anvjv9rb\nBNB87oNaOl71zwwxevrbiElVN0JOHxpMDijsEroV8+T+9HIWqaN0hpcwqBlf\n+RnqI3LhMdwpsjvNECE+hJacXTF+EWBJVFbKoWDxw39CLJnuPwTnM90srhT9\n7StljzEu00PTzslwfGjFghywhtwvzBG8737VShmb0vasqyYvR8nLrlz40NaF\n2aGlQg6Lw2RTaBtNbDH6Nh/5dZQYFc4zIqkE+dmjtHb5ZHQMAEFDtspiTuQX\nwcDpv2hcfHKvHGR2yiskIMmBjEknDcmo9W9eKGtCvIgeqgIojF3DWAuCAQua\ntJ/gvjEbrZOolhBbiVuh45cKMeD1hM07LA3EGbLvzKMzssOA/ahM0/4Fcda4\nd9Wk\r\n=584I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7Q7aiugkAEh4OD2a3Apvcgyhq+GVVao7VcR2XgiIK0AiBgAILddZ4rOg1loyjmNsgwdRdL1lou+gi5LHaM/n/J3g=="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.9_1613268549797_0.03791868601885717"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.10":{"name":"hijacker","version":"0.4.0-beta.10","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.2.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.26.0","route-matcher":"^0.1.0","socket.io":"^4.0.1","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.2.2","@storybook/vue":"^6.2.2","@vue/cli-plugin-babel":"^4.5.12","@vue/cli-plugin-router":"^4.5.12","@vue/cli-plugin-vuex":"^4.5.12","@vue/cli-service":"^4.5.12","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.3","concurrently":"^6.0.0","core-js":"^3.10.0","cz-conventional-changelog":"^3.3.0","eslint":"^7.23.0","eslint-plugin-vue":"^7.8.0","jest":"^26.6.3","monaco-editor":"^0.23.0","monaco-editor-webpack-plugin":"^3.0.1","nock":"^13.0.11","nodemon":"^2.0.7","sass":"^1.32.8","sass-loader":"^10.1.1","semantic-release":"^17.4.2","socket.io-client":"^4.0.1","vue":"^2.6.12","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.12","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"ed2e018e654b7b9091d792693bc28a2deb053752","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.10","_nodeVersion":"14.16.0","_npmVersion":"7.8.0","dist":{"integrity":"sha512-iw/o21VLiFef1Ly+JIfXArb3Pw8T+hIZEXmDlHyJb7VfHGqkP9V2gYk7XW10OsLUHo8VyWPMsG63QizuuIfRGQ==","shasum":"05d01f936c255f8a86e26271c19aa6c71cf55344","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.10.tgz","fileCount":172,"unpackedSize":42810349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaiymCRA9TVsSAnZWagAA2rEP/27MGxaQ9gV38uOf1d5H\naax0ZErIHTDnTvfZC9ky1oUf772Y/nOOUaIdC5O38/ocqz8bwcg/uPqhUh6M\nqlzvOJgtnaXUPBRhAnuCUfxKb6rs7BWYTnXP5e5FxXwg+Oi7n4swyov/f0Cx\nACAU9/FZXgXADEQ0raUjJ+fM2AZRyIicC3DN4zSEsHBZw+u9jHSGcTqjHXsa\nu9xaeG7/7eJtms8wsaWHjp1+j4dnUVrW+LvGn/GzushfdZkFJODD9HuMljCa\n5lXGbDTOAoE1IrjnEBh5X9CNysCKIHAvvXBGG2YthzzJYWiSSJwv7h/HyGnN\nE16i9pM3VRjCsCQI0tg71rnTIvm6DyepvkhMK48tFrKaUHHh8404FCkn0Kw3\nmELlF98yhgqd2oRIObK8pAWlKWyl8a4ZtGpA/iYFgQRVYSdUJbFeOSllXrwQ\nqhh4DaudxssIzZYAXFKO6tVSNTuhQu1kblBni65ZgS1wfq+i6qOMKxLuv/05\nry+NpRm/Wb6rylkOqomZFOgybS1ZFEf0i1HlVFBRCDf2c4S4I+xRjWOUg/xf\noVL3lSy2lLLq72AN8AUBQrrSfoFtuAu8YJbDvOQkMnGG95/qywDj6i4rQ5Dz\nW8R5eGz313EE3yqnWiQ4FArXlzfwuXjE4a2AoAlVJZQk+j5oLRNfdi+rUQ8j\n5YTu\r\n=niDz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgcoDGxXTd/QzE6w8F6WxFhBeWv8CKWz5S9wTz99ySjAIgRgzftWP+QVJV+9nk1W3wyQ5iOuzDocIiIvLqA3Qrm44="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.10_1617570982030_0.256836022732855"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.11":{"name":"hijacker","version":"0.4.0-beta.11","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.2.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.27.0","route-matcher":"^0.1.0","socket.io":"^4.1.2","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.2.9","@storybook/vue":"^6.2.9","@vue/cli-plugin-babel":"^4.5.13","@vue/cli-plugin-router":"^4.5.13","@vue/cli-plugin-vuex":"^4.5.13","@vue/cli-service":"^4.5.13","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.4","concurrently":"^6.2.0","core-js":"^3.13.1","cz-conventional-changelog":"^3.3.0","eslint":"^7.27.0","eslint-plugin-vue":"^7.10.0","jest":"^27.0.4","monaco-editor":"^0.24.0","monaco-editor-webpack-plugin":"^3.1.0","nock":"^13.1.0","nodemon":"^2.0.7","sass":"^1.34.1","sass-loader":"^10.1.1","semantic-release":"^17.4.3","socket.io-client":"^4.1.2","vue":"^2.6.13","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.13","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"424529f31cfb56214f54ea462392dab64f5bf69c","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.11","_nodeVersion":"14.17.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-h5VXhEBTrK2gx5Mniib6UL74eGjc+15ikkise29hswyAXYbLvVVOVEpn31x2K0mx24l6s8KMxY1rvsITMMmcAA==","shasum":"c6dde2f25bd0983bf4252e029f1c6b5a2eb243c2","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.11.tgz","fileCount":178,"unpackedSize":42576481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguZMNCRA9TVsSAnZWagAAQWsQAJ9EDyuHFUo9j0MF2B6a\ngb3HeI/kdm/ntPGS4PnwInkT26o1i74Z/36DXKzkuMGFlrCBlrELrcTc0D+b\n4Ijw5FEyD6qfmqIvS7D8oWKBFu/hH1zBCQeasqhs44eQd199mP6Yejp4WgPq\nh6tY6DJA0U70FRUpjPpmQFnbwDTwAbV28USQknqC0MDIaWTlF16QXcm9ehFI\n0vNi4W+bfpzrlWPB3e2GNSX4VUx4qJXLhXn2WSkwTcaXC5XL32GIr6xE+2U0\nPiWMIk8z0KVj6IlIXoP2H7vsEGcybxAthshV/OJ2YXjfHSmiGPAFPp4I20rv\nUpmu2i7C9gBExI5wapJk6yz2+oszu4/3XVNAzlPXcRKjW4KaYAg830MlyeBT\n8nM7eC5aYW6x89WAMNZlzjebJbLiAlO57p2XCrOAXkBPfnfYsOUx1nn5JYqR\nRUW9LFXV2O84Xb+RSAF0ld49qOiYXv03aQL4wHyKzRzOotCjDXHBO/tCiywV\n1xpLvniTSopALqLKG/2vjxttxQjY/FWQ+BRg8Nky9bPyCAhiTkhooyObMOWo\n5UFGU/mYCuquh+Ie9m+psx1j35fLpNeOl7tDnEFLX+3W+fFo11tfuz1dD14h\nHJyNDz6LOQrykRvlVDCJHOYSIm7HkQGlCy6gSjTbkWcaPm5ls6CzgtAoGNe1\nF7dr\r\n=1GGp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgzJENplFETcglmy/HzumRdxm6awh6LtshBV//Uqf2XAIhAIJEKLJnFTg8TEU6T+35BhEMwJCipci1MuiL3uL3V0tM"}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.11_1622774540676_0.5864330505672981"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.12":{"name":"hijacker","version":"0.4.0-beta.12","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.2.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.27.0","route-matcher":"^0.1.0","socket.io":"^4.1.2","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.2.9","@storybook/vue":"^6.2.9","@vue/cli-plugin-babel":"^4.5.13","@vue/cli-plugin-router":"^4.5.13","@vue/cli-plugin-vuex":"^4.5.13","@vue/cli-service":"^4.5.13","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.4","concurrently":"^6.2.0","core-js":"^3.13.1","cz-conventional-changelog":"^3.3.0","eslint":"^7.27.0","eslint-plugin-vue":"^7.10.0","jest":"^27.0.4","monaco-editor":"^0.24.0","monaco-editor-webpack-plugin":"^3.1.0","nock":"^13.1.0","nodemon":"^2.0.7","sass":"^1.34.1","sass-loader":"^10.1.1","semantic-release":"^17.4.3","socket.io-client":"^4.1.2","vue":"^2.6.13","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.13","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"f85e784b6bd40cc09dab1a6a89c90b5a22a81f5d","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.12","_nodeVersion":"14.17.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-YtxTYu2knVuICQBJoKAk0KvE1lDrFhD1N4gOe28RQmm+IT2Vn7byND6oyhru+S7fNHIVg4g7hOCglnMgdfWbtw==","shasum":"9c6b56183e2c4255ce7368ab37b8524358ee78a7","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.12.tgz","fileCount":178,"unpackedSize":42576481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguZWCCRA9TVsSAnZWagAAp/oP/1gdgPApunj6eX3Nl4vD\nDW9NlcKlV9kFiYztpQPo+eAv9xKieru2jdC1WJ8iTDfkk2gCkok4/8gIwmmK\nqRUrANdHfOQJO924ZzskFNIfOEG+etc1PRZSsnXDwTLwuo/eMJJPDVIPozei\nbDc4rbHnVsJDvCVi235foPGqP67WoMsmkDrq9WrWCgXTw/06YIwl1tubW/FU\nRF7Wa5tIGyZ1xTqBvV+zvdZi5pG5TqLtRy6/aTKOs3SUgg+tp/mketlHVaMY\nw0iGiv2ITkXnBERSc19Geoyfn3eWvjY18PKIsbRrjb2kZ+wKkNvMizusQJYh\nn4Kado7RK9TnUdrnN0RjtNxysQgyTRC+FxR2ZUlPTuY4d5wBP4fcKAsk+Gkc\nLOP4YJlMLGIXUchi3fF6gml4wmdLUvSr5OvnOAIbcaLg3ux+AWL7mHLwKrny\npNuApYE7OhnWNkad01ZflCR7qRWqYpLNRGNBuBh8QTNwbDq2IHvy8q2WnqVC\nMIaIXi7F23D0X+sTKrPace2whJc/2VPK4TgtSauTnv3Axr/OHKmagjNuJe9H\ngXcoP3VNkliADnKGXSSHTQ/Qz6xNL1Hkf03QZYDGAyHjVDg5ti21FQ3+oPt0\niVpK1xHFpdzvvmi8FdxDWqqk3hnXoYcX6o7fiFiJvYzeQoXIS3p9YeuGjiHG\nKewO\r\n=f1am\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzEmbLmFoQPggvn9thQJ3emEYmzLhTEKv1y1rFggrD5AIhAKmMiUtYz1ICOXd6/QxvJGPxL8HYoiJbkF+YmFyw+Oc8"}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.12_1622775169859_0.14097623562325268"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.13":{"name":"hijacker","version":"0.4.0-beta.13","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^7.2.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.27.0","route-matcher":"^0.1.0","socket.io":"^4.1.2","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.2.9","@storybook/vue":"^6.2.9","@vue/cli-plugin-babel":"^4.5.13","@vue/cli-plugin-router":"^4.5.13","@vue/cli-plugin-vuex":"^4.5.13","@vue/cli-service":"^4.5.13","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.4","concurrently":"^6.2.0","core-js":"^3.13.1","cz-conventional-changelog":"^3.3.0","eslint":"^7.28.0","eslint-plugin-vue":"^7.10.0","jest":"^27.0.4","monaco-editor":"^0.24.0","monaco-editor-webpack-plugin":"^3.1.0","nock":"^13.1.0","nodemon":"^2.0.7","sass":"^1.34.1","sass-loader":"^10.1.1","semantic-release":"^17.4.3","socket.io-client":"^4.1.2","vue":"^2.6.13","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.13","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"12ea84bad00e8f7ded4dd2fb791da8ed33a4f557","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.13","_nodeVersion":"14.17.0","_npmVersion":"7.16.0","dist":{"integrity":"sha512-fG6XvPJ6IN9OSfAxy0FxBqcPadR5zcCLRlCAwvsHkD3grAZEvbCkRy5H12475ZHMGMO/kFRh1RG5RUYnqh11yw==","shasum":"243bb483749b96dbc15b26190eda3baffd53f4aa","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.13.tgz","fileCount":178,"unpackedSize":42576481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgutmrCRA9TVsSAnZWagAA8HMP/RZX4IXob0yeUNgESXMk\nfPIvtr6xZV1Kk6cqIS3Nd24cOYMPvIfTfXJgmC/GHZaRXskmfitG2LSABU/w\nwdIb03ECISpPxOKUC4thrV64AFqZzxeFS7R+CH/gymd9KrqIhb10Hjam2yqH\n4l2owzTJFjWYj24tHPZ1Ycw0vv7mB2DWnrWjdFU3AbDCiHJv/hF7n4xSXqhJ\nXPdRdbKifVAL8NVmlVmYkThit/U828LB+z7ULlbuxHP6woymozoQBj5jXwtz\nG9Zv3mPMgMSUI4DDEnmgYvcwIX4STASHIUUeeGOOZNq19GuBsmX7WRTKRAjP\ntLobws5rYnhNS00woh5g0jrq1rqBXgNX/uaGnpB78R3KF49wgLi98JEMsm/F\nXatTNj9XGl+oJ/1E/W4ddeneCZK8cx/j4B5gcuobXzqZ+Ew4zLD3NzEBwCfD\nasXTxo9cdySnLwLVuqYmtgNvO0WPHE5+kxAIA86VK0l9oG94+PUEtRtmwoH1\nAb/Z4r9HcGOjtwJvEqukl6PjGShY7Huu7BzBa3Nr4Y9YB9YaaVsL+1YW5yda\na8amkPR2oQUPwR25htsgl8aFdVfr9a722EtKRktMiGHwXCvd9We4DyZFc/uU\n1f2KRXr0k8eEl6cYAPNWeVT7MZ5ItJ3HXonaRgYGb0t4oNRyjWai/D+/zTLL\nILFN\r\n=YBni\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEkzecixeLXMCxwDWnj8LQS0FBJEbJN+qAi5oeUEqfTAIgKm8A2+9sPbXx11dKOLQ/HOFnF5Nk0pPIeNi6dCB4wio="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.13_1622858155502_0.4787245507390081"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.4.0-beta.14":{"name":"hijacker","version":"0.4.0-beta.14","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^8.1.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.27.0","route-matcher":"^0.1.0","socket.io":"^4.1.2","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.3.7","@storybook/vue":"^6.3.7","@vue/cli-plugin-babel":"^4.5.13","@vue/cli-plugin-router":"^4.5.13","@vue/cli-plugin-vuex":"^4.5.13","@vue/cli-service":"^4.5.13","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.4","concurrently":"^6.2.1","core-js":"^3.14.0","cz-conventional-changelog":"^3.3.0","eslint":"^7.32.0","eslint-plugin-vue":"^7.16.0","jest":"^27.0.6","monaco-editor":"^0.25.1","monaco-editor-webpack-plugin":"^4.0.0","nock":"^13.1.1","nodemon":"^2.0.12","sass":"^1.35.1","sass-loader":"^10.1.1","semantic-release":"^17.4.4","socket.io-client":"^4.1.2","vue":"^2.6.14","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.14","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"fbeafd9d5755ff84b8316d679a0a5fa472cc6b10","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.4.0-beta.14","_nodeVersion":"14.18.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-bY85gq7MmaE0JK/HxR6KZJmErO2dgRi9+upotETU1DX0wD6tRB9mQDEUdDdLb/BrdNo+VkwDFLPT4zWbs9gk5Q==","shasum":"1053dc8c545826983555c9a354e2e6f083930c49","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.4.0-beta.14.tgz","fileCount":178,"unpackedSize":43555352,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcQPuYNWb9GmegN2Ut+4xghEZFfPB57VQyH7Nm+pPwgQIgU/HHLCmNpPvjHnQrzRNQQZe8Mkx4ubVbJcLy7+CPC30="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.4.0-beta.14_1636428658073_0.05013415124352916"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"0.3.0":{"name":"hijacker","version":"0.3.0","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"},"scripts":{"build":"vue-cli-service build","lint":"npm run lint:front && npm run lint:back","commit":"git-cz","dev:back":"nodemon bin/hijacker.js","dev:front":"vue-cli-service serve","lint:back":"eslint --ext .js lib/ test/","lint:front":"eslint --ext .js --ext .vue src/","semantic-release":"semantic-release","start":"concurrently \"npm run dev:front\" \"npm run dev:back\"","storybook:build":"vue-cli-service storybook:build -c config/storybook","storybook:serve":"vue-cli-service storybook:serve -p 6006 -c config/storybook","test":"jest --coverage"},"main":"lib/hijacker.js","dependencies":{"body-parser":"^1.19.0","commander":"^8.1.0","express":"^4.17.1","express-xml-bodyparser":"^0.3.0","got":"^11.8.2","luxon":"^1.27.0","route-matcher":"^0.1.0","socket.io":"^4.1.2","uuid":"^8.3.2","winston":"^3.3.3"},"devDependencies":{"@storybook/addon-essentials":"^6.3.7","@storybook/vue":"^6.3.7","@vue/cli-plugin-babel":"^4.5.13","@vue/cli-plugin-router":"^4.5.13","@vue/cli-plugin-vuex":"^4.5.13","@vue/cli-service":"^4.5.13","axios":"^0.21.1","babel-eslint":"^10.1.0","commitizen":"^4.2.4","concurrently":"^6.2.1","core-js":"^3.14.0","cz-conventional-changelog":"^3.3.0","eslint":"^7.32.0","eslint-plugin-vue":"^7.16.0","jest":"^27.0.6","monaco-editor":"^0.25.1","monaco-editor-webpack-plugin":"^4.0.0","nock":"^13.1.1","nodemon":"^2.0.12","sass":"^1.35.1","sass-loader":"^10.1.1","semantic-release":"^17.4.4","socket.io-client":"^4.1.2","vue":"^2.6.14","vue-cli-plugin-storybook":"^2.0.0","vue-router":"^3.5.1","vue-template-compiler":"^2.6.14","vuex":"^3.6.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","nodemonConfig":{"ignore":["test/*","src/*"]},"repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"gitHead":"f21dda53bc9511037399158e32cf6adf2f648c5c","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@0.3.0","_nodeVersion":"14.18.1","_npmVersion":"7.24.2","dist":{"integrity":"sha512-DayfRATOqW9q08P+Bsje+Sldwi5OrUBDRpdRqLfbBYo1qWrVP2XmOVYdQhegJFT06xAS5RJIS9bLxMyektjP6w==","shasum":"b523ff43f72c12a2a5714ae0ea3d073c41bcb72c","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-0.3.0.tgz","fileCount":178,"unpackedSize":43555344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2tUfCRA9TVsSAnZWagAAbaIQAJdpn4q1YA0gwm9DlAcQ\nxFsoSccm8wSqpouk2al0Ea2FYb5CtorAT5lTD/m63eaa9vUd09CW4pZH/4Je\nLP26XTVUOCdwLO5oPfSRjuddTaXaQOu57zQ6myM2/ZGz8JqSyY6oFTtvDp/g\nrQ6cPJCdLT8y3+wh+jUGilaVtQXbaNTak3iHcRkDqq2CSD56Ac/+AH+97JX8\n707sM0Ne+nMgpa+87AEUQyZd0OvxXuvU0SnjnViUuS5VmfmXEZIhlMA67xvR\n2BIfUVRQPHcWjRSl+EeUa7KlXK+agKdfiuf8shhQRt+kY7L0gZvhzjY447Z2\nEo+nEza9p414sz8wkxoVpgWeleRXZD3m1L/QkHxvZZsOO47H5XIco7jYgpX3\nDizqzsZXGYQtRmqFo3O0/IuFEr8Vr9twPAjdTppkI+6i7r+/JdQPaumOIlTl\n1wlqnBH0c77t+fnwZn6gCwDcZo3bQSv1MD2wcHj8GYiZG7VHIQPec4WLklD5\nn4ire5/YjjdjR+BoifWodC9Ibbc8+Ekgqn9zc1PAvw1TYUuAkjK1ieBeM3By\nMKgZ+2Ftm06JSR2GJpc1S49EApOZApU5VIcZkdOr86t1lHmJqSikO9z1njDd\nY+FT1v60OLWGy30OJEc4k/OHo73grmOGB4YFTgenTVMrYezb2lXw3GzJmCbS\nBFCJ\r\n=hrQQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCll0YaF0TvvIbIlHJSfT/TTuTO/bF1Uwzsk2StkUUCoQIgaOaMdVVSBIOPsUBbdDOCdMhIkY3fJF658OBLxKncaUg="}]},"_npmUser":{"name":"travis-w","email":"travis@thetravisw.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@thetravisw.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_0.3.0_1636430246849_0.93095693971264"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.1":{"name":"hijacker","version":"1.0.0-beta.1","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node dev-server.cjs","commit":"git-cz","dev":"node dev-server.cjs --dev","lint":"eslint src/ dev-server.cjs vitest.config.ts","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","c8":"^7.11.3","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"949b14a540510ee5778d966e800aff557cf88b71","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.1","_nodeVersion":"14.19.3","_npmVersion":"8.12.1","dist":{"integrity":"sha512-7FgZNDIvZ5+nraKqrCLaH4PW0O3xgGK9WcqbVBFhfbn4CxjrsJegNynsyuMyj2vwsnYEiHUleSbthYbtFWeRGA==","shasum":"42c331bd8bbc3055745dd36d3ba408db7e01a565","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.1.tgz","fileCount":14,"unpackedSize":1036185,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCl+tQiAoEDhlNjTFkx8vuBGutZx+zzMPFEjPiwGnsTpgIgSY8lk7KqV4W9w3Pu7+TH4FGgi2YoU45j9Rounq99VIU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqA7BACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+5w/9HTcGSY4iujK679PoD/QsobDM1+01Jf1Xy4bWOx1FsRH5QT/P\r\nBnXc7yUO3sbE9uahXXATV2IAt3yf7nuelxXYVLmaX7QHY5HVv9nPt/23LxiR\r\nBJL4hhujTu1gzfOOiO/7RVdfSa/6WDUUaNZwGDKEKP3Dxe+TYSJami1h0zqv\r\n5rpQpkBLeeuEfY5Gm7UJuGxKi/Av4XQgpLY95j7OJv4VWRrwjMlinoBpNKbd\r\n6Jt26qhJlVQnRYaHzeARScHKRnsDk82W0DMJFQoSL8SIg7Y8fDQIVSDurjsZ\r\nwM/pUTi+85HW1+ZznU2kORzx+gKN/tKeGBj6E4uwWXas4XiAolWZ0/9cGcFf\r\nNdcKOe3IXBAEtp8lOnNX5ruRDFofWZdtCWYMHkrUR9//M4yFrS2GP2QSlPOw\r\nsK65p7TnJB+E00VgNo06L47nYtyBWguZLgBysGl6wdZjLP9raPm5+E62sr9u\r\ngAfLxj3zNb6+mpCpr0Ph/j4t5FffUSbq7K4LO6g40PTz4fpWwnzWL7ZgtdKW\r\nN6H+HwwI6CZkYBVbE3WN+9SHrXqUBqdN/JMDtW37rveXDyJpNF9s4I1BCUp7\r\nhwktg/9Ugm9cfKua+Xjch8DVan0RbGdLbjss5uT5FR2/JfCMTvZxcvn9JF5z\r\neGvuxQgt2n93OAeKjPC0p2flTZc0P3g7kMA=\r\n=X3kh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.1_1655180993108_0.44758541703732124"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.2":{"name":"hijacker","version":"1.0.0-beta.2","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"9bd26e56951ac49815921662e8c8347d0d9c8328","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.2","_nodeVersion":"14.19.3","_npmVersion":"8.13.2","dist":{"integrity":"sha512-mBG1BmNiTbZSvMKzBQLCRakLbiEatzz+phu85HoJdSFDa1V6pz6+NBHizgSj4Hb7P3US6KfRJwU+HuRN2tlIqg==","shasum":"f4d0838cc819ca71db56847cacde07dc6ff5826f","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.2.tgz","fileCount":15,"unpackedSize":22291,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYG11uXfTmy6iVTwyVri1K/nH5/B/lpXgJngjDDQdQ3AIhAMSzZB7rV9jQ71APMVgll7HwGipYXvBPN1s1zjbBATOW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizO7LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/bg//ROmEiuhhHDquPLEZavqRT207fnW28V4DqFBopdsER4PFtg39\r\nyBC4m2PE1GpmdE1jMpDCkjECmFQ3PiRuOhRFrAV5U/7G96l1rFth6m+3JXCV\r\n7ng7bA4W1/nvdetnKhRdniLhg1tmc5NjBxn7juBxbretXMiChY5fNbZh7nFs\r\nEL8XPS03APU3IXGTrQweHGXwi+VAS6lxVtrNCtQCx1FX7N00bh4frwuXEVu9\r\nILc9nV4KGxqybL/hmqMI1EX054do8HJRpcrEaf0qKbbJemn4ZVmGQlHFPvZ2\r\njkdHm7C+QGCWQufbMbcCellmoQqXtB4CLMATlegX2s3rs+6F2Pe54L0L0f6m\r\nG0WdWqUHsc2Ss6+QflgALCgJFhhcXR1SCw65sSDfa4f3OXunuz46p2DL0eKb\r\nChClqqkhQgkT8je8gIwMaMi7Tbc2QGol/eXvLyj9ajTX7LegA/Wp4eTqrthN\r\nDY9GMZwAHFHPn0DhnxkLGqMygxKhckGrD30MbBY+HziZeSrkgXPlHYxQQaxe\r\nOs1uBjdfbWNZihstRwHbMuA9FWyisZ/00P08Hl+hnZYkUHvmz6BHUN6nsgHU\r\nt1D/ecAXKPUCBBBGavCHYnYXiVwU5pCEVw7u13dTgSardz50uSxui6b9LIaF\r\nhdt5akBA/kWPKumF4IWtxWT1O6Xe007xFEY=\r\n=cLvl\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.2_1657597643466_0.03488305628072341"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.3":{"name":"hijacker","version":"1.0.0-beta.3","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"794b4f579d66a5b59b006dae70dbeb7a11097dbf","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.3","_nodeVersion":"14.20.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-jN1MwM5GEQ8I4o/+qtZc/0i4CjJbSQ2pYKaBUdgH04bWIqTECnPvCaxy2wfM6u0buxdCwzwIVzMqqzNCjfnyEA==","shasum":"86a5c947a22ffb3dedf4436747284c8142cc9e1b","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.3.tgz","fileCount":15,"unpackedSize":21616,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgjVvHrNK9COr2F1YMIsltJgPOBrCAsvidbB6k5mgStAiALliMwpNnWuQzsqX4xLDhRjvYfhWKpSoo68I0aOMGoyg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiziDeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqybw/+Ip5VAaO39/H1N3SqN8733RyLmLTSTA176A/tHS5HBHb1vMpW\r\ndytRmpCcW3wCN5VUdKBmE5T+mB8WBW1xVvI0pf7gydpluCy1E/mk3rcPZm4E\r\nftqB8duVIiuGb012gIRcvidLyMLeDwMOUZV5B7sihQJQtJb8zx2pDaDfiUnK\r\nhasZVIgtOqGgAqZPX5AU0OaU26WL4n3/KOD7+o7WNNRHwfLqEcUa86qN8AxM\r\nzq9d+KikNNXjRCDkGiFlnbyJTk6pOLtN74eGjcuHIzAGf76ETnqhuHpuESwe\r\nx7SoUB8x/bC2z1VA/90n5QTgoPsKZIKjmYJh7QnAHrntszC+nnId3yC/VQK4\r\nmwYtfe0ZxKwgYRMAiisq8rSdrTXOKTizq6wZ5lpJJDJdp81zEjSx45CyAoS5\r\nY4fwHG+XJ4d9b4NCsLz/trI3OrbkyEldU5tSCkHMRUb96AsKu+C2K+EO4hnx\r\nJen1SuCyHg5/Y5WBNMBGync5JgeQA3qWvDM/i1tFce+b4jjB8xnNtU7mfR5z\r\ngd05V81TB4XtzoEZy9pDZIPYq0P6hXrYYLO/sahUQysDvOB/r4jX4NzS10ax\r\n0Nv7zTpbPqdrfnk+AK4F+d8eoWAHQWTyzFMsS8hgkh66DoBQSzc49Ioyzg+t\r\nGxVwaGRNr+QDOpnlF18k8Y9nNUMu1zjbQM4=\r\n=LJWK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.3_1657675997936_0.9786983390005697"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.4":{"name":"hijacker","version":"1.0.0-beta.4","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"58c70ee1ffee5ca6ef13160fc2bd43ae27a3d3d6","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.4","_nodeVersion":"14.20.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-wqc6IFCRGBOlfQ3s1u+MnAscMHFh0sZh3mI1BgSxG+fsx+ACjsD7rin1wcRsQJiiFcaMmPmEi4aLWbLmZESTVw==","shasum":"cda94abe6cc380a41384adc4dd14fc478ab1dd0c","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.4.tgz","fileCount":17,"unpackedSize":2502767,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICRtEv4i/v9LynV3bz0ONj60UwObcJxHKhAGtQp6sV0UAiEA7cR+efXd0oo1obSlOkVBdCnhgOb2c7xNbU5qvtOuXyY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizjIgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOOg/6A7TEt7JUftdRoN7fPF4rFOi+uOIe6IWbOBiUBImASG5S1gC4\r\nGdHaWqlKWiYLhDFYgYqKqcbcUeQAyCW49dYXqUrFQvJpKqyiSKvml0ZUSQqZ\r\ne6ZsJ2bqRPmvJvyZJjsdzk+Ttzzc70ofkquqqUobyuF9nt8n6UkAQYj440wG\r\n0ghtTVRt07mHcOcEOBRoJLZ3lIDxhcNgvRP/9JRPJ2cqNJOPj83h0kCQCqM2\r\nPcn1dSzqM3f3I3w68F0aIOS/C4JtXnt3jIAT11c8/UyEdHejsd7GNqjjmzJT\r\n+0ij/1EijFrnYP69gIqtJH3e/Rjuf9LFGz4WvteckFfF7B8QkXM/Pq0oX2It\r\nU12pj8UeYMuWC6c8DDzjh54xRKy7fF6LkOsx2v7gWhvdwrOMlFSZjmpFQ2yT\r\nz6NlpYFEdxj7YicfqUc6v4BvKLxIMvrSRnLtfJKizQmk7/Y81ROeJIWJ4014\r\nze8M6kxCe8ZXD5Loig1OmD4uh+vZixoogvysnTk3O7h0p0W0VfF6GyEDgPRq\r\nu5zhcc90jZBqgRTpyyS55AOX8yg17/5wjeZbW5n24Gq3rTKC7BA7CMTDxm4J\r\nMyWEEOebNx4V5c1MknkrqBzAwQALWKweferyAERzcTBUZ3bV1uSJHhqPPk/k\r\nUfzInW1zPHf6VsUsOQVVs/E2iexLRCqpr+A=\r\n=DkMz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.4_1657680416266_0.312573486831766"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.5":{"name":"hijacker","version":"1.0.0-beta.5","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"ae1b636535a3e8237c7c44d0a019aef876bcb023","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.5","_nodeVersion":"14.20.0","_npmVersion":"8.14.0","dist":{"integrity":"sha512-m5uGWcLVfL30USOVKWDYOA49CgufIY8LKosHfRM6KpUumbUvn4RRgIiSvGpRmnAAP5E9f7gmiJF5wDS2IElu3A==","shasum":"629fe7b04dc64ae3663c31b8d57794ed8147d244","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.5.tgz","fileCount":17,"unpackedSize":2518957,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHs37pRh5eZm2N1M3yEgQtyKRI3Nm99/icaNrS7f3HrPAiEApFHsMP+jx4JOl37qjUwVxaI1A8+gsuup9eRfY1PkeoM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1hGsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGCA/+PkzVfGh4+pDGDhhk/+RgP4QRsuH+SdgMMHnX0hd+rRHiRKl9\r\nA3+vIQMu3u1kwju6J/DCYr/tC2QExp10eyrKI7ihdoHCp6yAmINRX4sa79Yj\r\nk4h0ZquLtj3kxDPOPCkjoOOOJIEzCxHzItiKjyZo27ewRbHExE5qwUJ4Mrxt\r\n1kSXBQscHmG0VVwd3/l/+XVhxpF7y0ycVU3r2RGu28bpIQhJQK2HK5ra3kG9\r\nY6yAHI1uetGM11nKqc3+yKh4AlJuQ5bQmitRMdLVmx8bdOnqwIie3pU2JvYx\r\n9WDx3Y9GVKt77SpMTGz2dKa2xDtOw0R7R4O/DEk/kP42wxmrKUo5Rd9J+/Tn\r\nBVG43rDSY5t0PIKIsJgGmwbA5bA64h9/tg8m3m7d56G7DDLZZ0QM/Yvbic2G\r\nQqPFuEqGAvAx/rZud0EdVYQeNAbiMIHWoG9xGdITwxjuu1ZRn7eAFhyQ9kfe\r\n0UbopGXQKQJ5mmRACbJTVzXKtVCpXdQl00BIZArhG7B0+rqWLwbH/c9LxGCh\r\nxJYbaA57XlCaWHiwGO37RQp1ZdDPsuYkbIvErHS9xQ/nY31deFlT0CKOT0LH\r\neObBOPmw0hW52B1/jLYbqyleJnOtuNZuNbSg7ZMPocrer/fWvyCoTkaPXicO\r\nL9h68JBJjYC2Q4KD+HcPWZ6n8FM6YIcPqIc=\r\n=ZVJ/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.5_1658196396065_0.634918946085048"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.6":{"name":"hijacker","version":"1.0.0-beta.6","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"49874b368bf61f14882365facf2c9f9b240f6685","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.6","_nodeVersion":"14.20.0","_npmVersion":"8.14.0","dist":{"integrity":"sha512-W8Z+POBiVSw7RzGFCeAzoLFzQklevFYvvZT/axa1OMMhtwPTJigovhryaRPwAbP1K35MBEA4WTmTEtigqNuMkw==","shasum":"563965b56c1c5da5e783df4ea5470b1fce7baa31","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.6.tgz","fileCount":17,"unpackedSize":2518979,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5CobcCDZDk56agdtWsj4XaaN4pRv+mum4eWMcIJQQTAIgbFv0W73zgqEGIgy/jq/7/rRuJKmD/j6ZXf1KzAm/5Is="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1jarACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRzRAAjAU1OZ3PkjICdZx3m26a3pWW1E/8C9aEokuXe4Hc0/1aQI3+\r\nrxaiTpT8ivV5b8OKpr595XcTqkTp08KhHRa2LKf15Xvg/UqG+PcMB/irIZTt\r\nILiksZ3cyUyzZq4hBSrhNo/H3OgbcYyaKkpuXSYQ6rz91et8GIs8xxeUEvBa\r\nE82cxUHSPq1Se1vxo7UUjoT0eosA7nJ4iiyC4kPUkGt5LFHiUTR6nkx6ty+y\r\nWzeYJSpKVZHpjnBj16GJ0D3iNwrJQsCg3E42NWABcWgbaX0lNAMEWvDezlgV\r\naOlf1DyWa87vYhh8rVr6gfy+mEgIUTppw6+3BtwpZ5QFdDx+kMB4gDcIdypX\r\nRAyiPqM1o5Ro9WNe8opyADijEnqvzZicdTBtp+tz0jHFItPRfnuRq/JiYBGM\r\nZFh3GEOs4wfJdC4vUimRkCnaJ7UThuqIdlllvjotiSWx6LKQNEz170XTBxxp\r\nyvJDnK6mFbqM25VA51AwfhJsmSfrx73c5MtXltgjAc8NTyRwAmWnQW/KcEOL\r\nDoxjX4E73tL62nEhp25JwMI6ZRD54WGqsh8ZR9atgFL/ON6X4uA+Qpm6mS1E\r\nhwPPL+sWpEJpRDqQkoN5nj3XrRLMjsS7dD3RmuNODjS31oy3Crbiggd+siwR\r\n1CmZYrKauruiHBuLG6wm8bptHUsNsfxXuys=\r\n=x8FB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.6_1658205866798_0.030941044463724143"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.7":{"name":"hijacker","version":"1.0.0-beta.7","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"292a0076658672a9ed5067299b89792599f53444","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.7","_nodeVersion":"14.20.0","_npmVersion":"8.14.0","dist":{"integrity":"sha512-/e4TGpg9jCG91rypI4e0cWp6CxVL3PvUyXtcB+QBDEE6avRv8V5ETIAc7ZUglm+r3s9GchdO1jVYzjdcwwr1hw==","shasum":"38c650898214aa097ae7e26868f7efa7d70439a5","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.7.tgz","fileCount":18,"unpackedSize":2520129,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDRiapWqnXRnvjwb7wYwmKgQC2YwUG5C24i6Z/j2Ox41AiAdFN8HWiWHEdzFouqMpVS7uBwzBV7JePy4RsSwQuSoJQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi14C5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq61w//cI2PEuvMUxbfS1CvS2HV2jJVsWvt+6QsSDLSyQtlia/Bx66A\r\nv+zJ3tiomWssgYV39VYQLY/XBXXXMv75R4t6BMwnXX5Tvj15NHYDXXs11yRO\r\nZ874Eh2fAoAqCLWrAVW9yQW5F1D8z66HscVA2uJkYXlB+z3Qn0Nn9sC1sPlB\r\ntTaJ+f+4uCZk5vdw+sRa8rz5RcWSaYwRY5hLfRgQYoimSiFKFNgqeNrVA/EK\r\nxgnFujX+b08I1NwIDboyIEdrb0eMvRk/ZsIAPRnymXQo1/GtwGINxsWUSd4F\r\nzIGI4iE/M/N5wVoVqK0ywMd96wu5gGmvz7X8ZTUZxr4dZE2/uXOYUYOlicRc\r\nUX6jPRUQnbRj27QVjhzP6Z4SaBhNCNq5CgWhS9telRHBNvf51hzh5uCr9Ncd\r\nrmC71vzwAl6Y/aRytq9qUd9RGrQnP4Qfld2twVNNDNW/oi0tiV9BHfQ+ONYj\r\nOr+aNWT1vG9d5YvLK1/xhCrZUMFJg7aU3sp8q2fSPl4qjOClPHNFpfRKkNET\r\no2OQ8V+/K1GTZyxARFyKPQ0AzAlk6oBSlTQx2aOpDCuVlEohwd/OV5it9YBt\r\nyG8NDSXrG2mdejRGEw1ZET4bApfF2CL0eWWQL8yKH3ThQCqAmBHNByqXR+dG\r\nRCT1x/yEt73JOz9xp8M9UQ5tS5GW6uy9on4=\r\n=waNL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.7_1658290361226_0.4114451410196125"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.8":{"name":"hijacker","version":"1.0.0-beta.8","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.17","commander":"^9.3.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.1.0","graphql":"^16.5.0","luxon":"^2.4.0","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2","winston":"^3.7.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.9.3","@emotion/styled":"^11.9.3","@ladle/react":"^1.1.1","@mui/icons-material":"^5.8.4","@mui/material":"^5.8.4","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.12","@types/react-dom":"^18.0.5","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.27.1","@typescript-eslint/parser":"^5.27.1","@uiw/react-codemirror":"4.10.4","c8":"^7.11.3","codemirror":"^6.0.0","commitizen":"^4.2.4","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.43","eslint":"^8.17.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.0","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.6","react":"^18.1.0","react-dom":"^18.1.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.3","vitest":"^0.14.2"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://travis-ci.org/travis-w/hijacker.svg?branch=master)](https://travis-ci.org/travis-w/hijacker)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker can be used as an API relay to assist with front end development. It can intercept requests and responses between the client and the API server.\n\n*NOTE:* Hijacker is in early development and subject may break config files from update to update.\n\n### NPM\nHijacker can be found on npm [here](https://www.npmjs.com/package/hijacker)\n\n## Getting Started\nHijacker is designed to be used alongside of an existing API so setting up a project is as simple as letting Hijacker know your API url and a list of rules you would like to intercept and then pointing your client to the Hijacker server instead of your API server.  If no rule is provided for a given route, it will return the response from the API server, so Hijacker can be used with out any rules, and your application should function as if Hijacker is not there.\n\n### Installing\nTo install Hijacker, you can either install it to a specific project:\n\n```\nnpm install hijacker\n```\n\nOr you can install it globally to allow use of the `hijacker` command in your terminal:\n\n```\nnpm install -g hijacker\n```\n\n### Setup\nTo set up a project for use with Hijacker a hijacker.conf.json file should be added to your project root. The file should be structured similar to below:\n\n```\n{\n  \"base_url\": \"http://api.base.com\", // (REQUIRED) Base URL for API to intercept (without trailing backslash) requests for\n  \"port\": 3000,  // Port to run the hijacker server on (Default: 3005)\n  \"rules\": []    // List of rule objects for intercepting requests (Default: [])\n}\n```\n\n#### Example:\nHere is an basic config file that defines a rule for the route `/cars`. Every other route will make a request to https://jsonplaceholder.typicode.com[route] and return the given response.\n```\n{\n  \"base_url\": \"https://jsonplaceholder.typicode.com\",\n  \"port\": 3000,\n  \"rules\": [\n    {\n      \"path\": \"/cars\",\n      \"skipApi\": true,\n      \"body\": {\n        \"Hello\": \"World\"\n      }\n    }\n  ]\n}\n```\n\n### Running\nOnce you have have your config file set up in your project you can start the Hijacker server in the following ways:\n\n#### Global Install\nIf you installed Hijacker globally, to start the server, all you need to do is run the following command in a directory that contains a configuration file:\n\n```\nhijacker\n```\n\n#### Local Install\nIf you installed Hijacker to a specific npm project you can run the following command in a directory with a configuration file:\n\n```\n./node_modules/.bin/hijacker\n```\n\n#### package.json Setup\nIn either installation case, you can add a command similar to the following to the scripts section of the package.json file of a project.\n\n```\n\"scripts\": {\n  \"hijacker\": \"hijacker\"\n}\n```\n\nAnd then you can run the following command in your node project to start the server:\n```\nnpm run hijacker\n```\n\n### Route Rule Object\nBelow are parameters that can be used in a route rule. Optional parameters will default to values from the original request/response.\n\n| Parameter         | Default    | Description                                                  |\n| ----------------- | ---------- | ------------------------------------------------------------ |\n| body              | (optional) | Body object to send back to client in response               |\n| disabled          | false      | Flag to allow disabling a rule without deleting from list    |\n| interceptRequest  | false      | Ability to intercept request from client before sent to api  |\n| interceptResponse | false      | Ability to intercept response from api before sent to client |\n| keepHeaders       | []         | List of headers to forward to api server                     |\n| path              | (required) | Apply rule to requests to paths that match                   |\n| skipApi           | false      | Skip call to api server and send predefined response         |\n| method            | All        | HTTP method to apply the rule to                             |\n| statusCode        | (optional) | Status code to send back to the client                       |\n\n\n## Future Work\nHijacker is currently under development with the following features planned:\n- Dashboard to configure Hijacker rules\n- Request/Response Breakpoints (Editing requests before they are sent to the API server and responses before they are sent back to the client) (Implemented but needs dashboard)\n- More advanced route rules\n  - Match paths with regex\n  - Modify responses/requests w/ functions rather than replacing with object\n- Support for multiple API's for a project\n- Better CLI\n- Allow use without an existing API server\n","readmeFilename":"README.md","gitHead":"3c8cba30969d6c1b36996222439c5f78c4873224","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.8","_nodeVersion":"14.20.0","_npmVersion":"8.16.0","dist":{"integrity":"sha512-19b+q4L5SEDMQuWhhBUvLbt7Y5gmaBBUDLeOx8WZAYR409KI3e3xP2IILixToET+F6dF93yXsubzR814x6E2qw==","shasum":"fdeebce1b611004702072e39451ce950b82d9f1e","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.8.tgz","fileCount":20,"unpackedSize":2566984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCf36AoYMOOPSMBigihZ8e7Oo/dCFJ/V55Uu/l4OiLdzQIgZVHprKfOvhHq6W/gogwu7rSaRFEr//JmdObgKAL7HwY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7eqBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqaWg/+KtG/uuVMzEJQp29zXyvke/Ug/R8vdGHFYRCIorM/ls/SAWOO\r\nsrUDQv33U604VJxhIi+0nQR9PfO00fzJTym2Y1N2g5JJhryGFV9n1f39R+KT\r\nGsczTFAgO5gnPnoeJjahYyOsHDLEAqhlKhnUhHxYWojhb18aKRuqaypBjYmj\r\nw9kq9mbcZITdJ/GxU9BxfDB7JR8H8qzeIO5O+a2q2MWdVkx0mwipXaGL48tl\r\nx8Nzxjr7NkSE58q1Du706udnUQ+Br6NtGa1xBfuFdo7T/X6SsbhqGhlvaKeG\r\nusY5sNO+zkTgu4lFna24M72U6RuBRSGjCK3J4jptxFgvYjrfy9cUBG8GSL/s\r\nnjmyYJy4p8m+0sLBIHFdxjWAoO3waPe5krs3YDv2flxr4zDtXwpfOZFyLZV5\r\nbfNQWaIeSR9GzzbTk0RgwTeHC925jkLgf6w2vAjDeE6bceNrb0chaWGhp14P\r\n9tuHKDWxPBALLRsIDytg3t9k1V6AAaKCsPbTvFY0mShWxiQbG+O79sq71AYv\r\nnslTFt708Rsrd2U907AXMP/3y4Rl4/P9avawglCu31NbXbM3Cia7ZcxIIFWB\r\nscdOVzChTv8hMKj2iiYEOUrTq3mLwqePR1M78UWM3YGoAxR935bmvOhxIlL5\r\n3LwxKWdz/YujSt6O+tGVr7eEdKfzVIazFco=\r\n=Gp+S\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.8_1659759232915_0.1656967398767486"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.9":{"name":"hijacker","version":"1.0.0-beta.9","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.19","commander":"^9.4.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.3.1","graphql":"^16.5.0","luxon":"^3.0.1","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.10.0","@emotion/styled":"^11.10.0","@ladle/react":"^2.1.0","@mui/icons-material":"^5.8.4","@mui/material":"^5.9.3","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.182","@types/react":"^18.0.15","@types/react-dom":"^18.0.6","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.32.0","@typescript-eslint/parser":"^5.32.0","@uiw/react-codemirror":"4.11.4","c8":"^7.12.0","codemirror":"^6.0.1","commitizen":"^4.2.5","cz-conventional-changelog":"^3.3.0","esbuild":"^0.14.53","eslint":"^8.21.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.1","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.9","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.3","socket.io-client":"^4.5.1","typescript":"^4.7.4","vitest":"^0.21.0"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml/badge.svg)](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker is a develoment too meant to proxy to an existing API while being able to mock and modify specific requests via rules.\n\n- [Get Started](#get-started)\n  - [Install](#install)\n  - [Create Config](#create-config)\n  - [Run](#run)\n- [Config](#config)\n  - [Config](#config-1)\n  - [Rule](#rule)\n  - [Base Rule](#base-rule)\n  - [Rule Types](#rule-types)\n  - [Logger](#logger)\n- [Extending Hijacker](#extending-hijacker)\n  - [Custom Rule Type](#custom-rule-type)\n  - [Hooks](#hooks)\n- [Contributing](#contributing)\n\n## Get Started\n\n### Install \n\n#### Locally\n```shell\nnpm i -D hijacker\n```\n\n#### Globally\n```shell\nnpm i -g hijacker\n```\n\n### Create Config\nCreate config file named `hijacker.config.js` with the following:\n```javascript\nmodule.exports = {\n  port: 3000,\n  baseRule: {\n    baseUrl: '<YOUR_API_URL>'\n  },\n  rules: []\n}\n```\nView [Config](#config) for more information.\n\n### Run\nAdd a `hijacker` script to your `package.json` file:\n`\"hijacker\": \"hijacker\"`.\n\nThen run the following command in the directory with your config file:\n```shell\nnpm run hijacker\n```\nYour hijacker instance should now be running at `http://localhost:3000` with the interface available at `http://localhost:3000/hijacker`.\n\n## Config\n\n### Config\n| Property | Descripton | Type | Required | Default |\n| -------- | ---------- | ---- | -------- | ------- |\n| `port` | Port that you want the hijacker instance to run on | `number` | `yes` |\n| `baseRule` | Base rule that other rules will inhert from. See [Base Rule](#base-rule) | `Partial<Rule>` | `yes` | |\n| `rules` | Array of hijacker rules. See [Rule](#rule) | `Partial<Rule>[]` | `yes` | |\n| `logger` | Logger configuration options. See [Logger](#logger) | `LoggerOptions` | `no` | |\n\n### Rule\nA tells hijacker how to handle certain requests. If no matching rule is found, hijacker will proxy the request to the API server.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `name` | Rule name. Used for display purposes only | `string` | `no` | |\n| `disabled` | If rule is disabled it can't be matched | `boolean` | `no` | `false` |\n| `type` | Rule type. Used to determine which RuleType to use for matching and handling the request | `string` | `rest` |\n| `baseUrl` | Base URL for API you want to point hijacker at for specific rule | `string` | `no` | |\n\n### Base Rule\nThe base rule allows you set default values for the  \n\n### Rule Types\nBy default hijacker includes Rest and a GraphQL rule types. Each rule type can have additional properties that build upon the base rule properties. Each rule will be merged with the Base Rule and use it's values unless overridden in the rule.\n\nThe base rule has the same values as [Rules](#rule). The only difference is that `baseUrl` is required so that requests that have no matching rule will be able to be proxied.\n\n#### Rest Rule\nThe rest rule type is meant for REST APIs, and will be used for rule's where `type` is set to `rest`. The rest rule type has the same properties as the [Rule](#rule), as well as the following:\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `skipApi` | | `boolean` | `no` | `false` |\n| `method` | HTTP method of the request to match on. | `GET` \\| `HEAD` \\| `POST` \\| `PUT` \\| `DELETE` \\| `OPTIONS` \\| `TRACE` \\| `PATCH` \\| `ALL` | `no` | `ALL` |\n| `body` | Response body to send back when a rule matches | `any` | `no` | `undefined` |\n| `path` | URL path of request to match on. | `string` | `yes` | |\n| `statusCode` | Status code you would like hijacker return for a request | `number` | `no` | |\n| `routeTo` | Path to redirect request to at the API url | `string` | `no` | |\n\n#### GraphQL Rule\nThe GraphQL rule type expands on the Rest Rule but adds matching that works for GraphQL queries. Right now the GraphQL rule type only matches on the operation name. \n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `operationName` | Operation to match in graphql query | `string` | `yes` | |\n\n__Example__:\n```graphql\nquery TestQuery {\n  posts {\n    name\n    id\n  }\n}\n```\nFor the above query, `TestQuery` is the `operationName` that should be used to match query in a rule.\n\n### Logger\nSettings for built in logger. This may eventually get changed to accepting a custom logger.\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `level` | Max log level that you wan't logged to the console. | `SILLY` \\| `DEBUG` \\| `HTTP` \\| `INFO` \\| `WARN` \\| `ERROR` \\| `NONE` | `no` | `INFO` |\n\n## Extending Hijacker\nHijacker was made with extensibility in mind. There are a couple ways Hijacker can be extended: Custom Rule Types and Hooks.\n\n### Custom Rule Type\n\n### Hooks\n\n\n## Contributing","readmeFilename":"README.md","gitHead":"4d97854d8381ef148bee7b2478a1ff358ef5b3f9","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.9","_nodeVersion":"14.20.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-OyO9J8IgCPFk/rWMxbP72OdBNDK7EYozVzO/QvSbP4mV3GpG0S173OowM8KY8Yq1r55HR+uQRPxD5RZVCK1rBQ==","shasum":"b17348dad5ac27fe098e12d6cae6bea554f2e1ac","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.9.tgz","fileCount":21,"unpackedSize":2568206,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGwtceWW8tW7gEj4p+u1zMt7ehCL8Eh8rqXVirSsGp0gIgSKiiQwb04bIvphrcbpnDXuSDpE4w3PV8kLF4/dKUWc4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBFeaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoMcg//S5KusaeiFJdm3VWgN5wXvl82/wnvsEUPQrGhuoPd7eKlG6AS\r\ntGs7AXzJe+Ru2UGjV/EpCopFpddV99JusH6k0yXWTLoZ1fJ9lD92bt674lUU\r\n8cjfHa4u0NlouEG3t80MgmXfc0IYBB+5L2Qn0lmnaFO/xDcCsS4MtZ3unmrL\r\nBmIV+46aPXZKbAZnxY7hmW7NDXLX7M/V8JJGjf8YcHrrwRhczjqBlC0yBEzX\r\nfNATwiq7/gZBFYgMZ3WdLEK7FmW84TCVkH3QXFzKPVkyaJxaWfyD0fLovo5o\r\nsXXvUZjwy/wc+JXXnIHjG3vkPNl47xP5KRFoZu6yYpiZkPFFmMHgCwy8NRJ3\r\n2gfNGdSSl5O+JaSUk2TReJgtYksTpIvtka4libyHvhxg7eCqwBsvROn++TP7\r\niw/FF4Bs8Fi8ZvA9Trlqvdh9GVSCnEw20mohM3BJGN6wb7RW4lleoX0bK4J+\r\nATckIn8gqDX+1rCXwb0wdJLX2EPYbnEr9ZVIHGn9eOs1aRtXIY9KzffCgnkM\r\nd+VyL2qcq09OM7W/lGKE+GCygYh6x5uvx7J2baCYsI/iyqs9CFcRIiIWwEVI\r\nUGaDd+LKevR1q8gffV29CsvrpAbbSHiKg/WTn0YwXYWQwKgd3zav171VPh/h\r\noDWVhTt7wgiE5GYqBD31s8/M2aFUeKiTf04=\r\n=ErWR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.9_1661228954546_0.192110401637418"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.10":{"name":"hijacker","version":"1.0.0-beta.10","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.19","commander":"^9.4.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.3.1","graphql":"^16.6.0","luxon":"^3.0.1","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.10.0","@emotion/styled":"^11.10.0","@ladle/react":"^2.1.2","@mui/icons-material":"^5.8.4","@mui/material":"^5.10.1","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.184","@types/react":"^18.0.17","@types/react-dom":"^18.0.6","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.34.0","@typescript-eslint/parser":"^5.34.0","@uiw/react-codemirror":"4.11.5","@vitest/coverage-c8":"^0.22.1","c8":"^7.12.0","codemirror":"^6.0.1","commitizen":"^4.2.5","cz-conventional-changelog":"^3.3.0","esbuild":"^0.15.5","eslint":"^8.22.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.1","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.9","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.4","socket.io-client":"^4.5.1","typescript":"^4.7.4","vitest":"^0.22.1"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml/badge.svg)](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker is a develoment too meant to proxy to an existing API while being able to mock and modify specific requests via rules.\n\n- [Get Started](#get-started)\n  - [Install](#install)\n  - [Create Config](#create-config)\n  - [Run](#run)\n- [Config](#config)\n  - [Config](#config-1)\n  - [Rule](#rule)\n  - [Base Rule](#base-rule)\n  - [Rule Types](#rule-types)\n  - [Logger](#logger)\n- [Extending Hijacker](#extending-hijacker)\n  - [Custom Rule Type](#custom-rule-type)\n  - [Hooks](#hooks)\n- [Contributing](#contributing)\n\n## Get Started\n\n### Install \n\n#### Locally\n```shell\nnpm i -D hijacker\n```\n\n#### Globally\n```shell\nnpm i -g hijacker\n```\n\n### Create Config\nCreate config file named `hijacker.config.js` with the following:\n```javascript\nmodule.exports = {\n  port: 3000,\n  baseRule: {\n    baseUrl: '<YOUR_API_URL>'\n  },\n  rules: []\n}\n```\nView [Config](#config) for more information.\n\n### Run\nAdd a `hijacker` script to your `package.json` file:\n`\"hijacker\": \"hijacker\"`.\n\nThen run the following command in the directory with your config file:\n```shell\nnpm run hijacker\n```\nYour hijacker instance should now be running at `http://localhost:3000` with the interface available at `http://localhost:3000/hijacker`.\n\n## Config\n\n### Config\n| Property | Descripton | Type | Required | Default |\n| -------- | ---------- | ---- | -------- | ------- |\n| `port` | Port that you want the hijacker instance to run on | `number` | `yes` |\n| `baseRule` | Base rule that other rules will inhert from. See [Base Rule](#base-rule) | `Partial<Rule>` | `yes` | |\n| `rules` | Array of hijacker rules. See [Rule](#rule) | `Partial<Rule>[]` | `yes` | |\n| `logger` | Logger configuration options. See [Logger](#logger) | `LoggerOptions` | `no` | |\n\n### Rule\nA tells hijacker how to handle certain requests. If no matching rule is found, hijacker will proxy the request to the API server.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `name` | Rule name. Used for display purposes only | `string` | `no` | |\n| `disabled` | If rule is disabled it can't be matched | `boolean` | `no` | `false` |\n| `type` | Rule type. Used to determine which RuleType to use for matching and handling the request | `string` | `rest` |\n| `baseUrl` | Base URL for API you want to point hijacker at for specific rule | `string` | `no` | |\n\n### Base Rule\nThe base rule allows you set default values for the  \n\n### Rule Types\nBy default hijacker includes Rest and a GraphQL rule types. Each rule type can have additional properties that build upon the base rule properties. Each rule will be merged with the Base Rule and use it's values unless overridden in the rule.\n\nThe base rule has the same values as [Rules](#rule). The only difference is that `baseUrl` is required so that requests that have no matching rule will be able to be proxied.\n\n#### Rest Rule\nThe rest rule type is meant for REST APIs, and will be used for rule's where `type` is set to `rest`. The rest rule type has the same properties as the [Rule](#rule), as well as the following:\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `skipApi` | | `boolean` | `no` | `false` |\n| `method` | HTTP method of the request to match on. | `GET` \\| `HEAD` \\| `POST` \\| `PUT` \\| `DELETE` \\| `OPTIONS` \\| `TRACE` \\| `PATCH` \\| `ALL` | `no` | `ALL` |\n| `body` | Response body to send back when a rule matches | `any` | `no` | `undefined` |\n| `path` | URL path of request to match on. | `string` | `yes` | |\n| `statusCode` | Status code you would like hijacker return for a request | `number` | `no` | |\n| `routeTo` | Path to redirect request to at the API url | `string` | `no` | |\n\n#### GraphQL Rule\nThe GraphQL rule type expands on the Rest Rule but adds matching that works for GraphQL queries. Right now the GraphQL rule type only matches on the operation name. \n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `operationName` | Operation to match in graphql query | `string` | `yes` | |\n\n__Example__:\n```graphql\nquery TestQuery {\n  posts {\n    name\n    id\n  }\n}\n```\nFor the above query, `TestQuery` is the `operationName` that should be used to match query in a rule.\n\n### Logger\nSettings for built in logger. This may eventually get changed to accepting a custom logger.\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `level` | Max log level that you wan't logged to the console. | `SILLY` \\| `DEBUG` \\| `HTTP` \\| `INFO` \\| `WARN` \\| `ERROR` \\| `NONE` | `no` | `INFO` |\n\n## Extending Hijacker\nHijacker was made with extensibility in mind. There are a couple ways Hijacker can be extended: Custom Rule Types and Hooks.\n\n### Custom Rule Type\n\n### Hooks\n\n\n## Contributing","readmeFilename":"README.md","gitHead":"8069b25bc9d3251806545e6f26ee0453484bf326","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.10","_nodeVersion":"14.20.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-ZmZCwwGFhp8rFbQinHSqjuP8QAtv3tYeqhmt/Hn0C6JQuiVZWzdM1JIcSU4TsIbz46ol5x+3LmutnK+VLIVX8w==","shasum":"da32956194026e432eeaaa92b17d27d0447446c2","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.10.tgz","fileCount":21,"unpackedSize":2568361,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5v/nOpVo3WjvnJIhSGw+fjPH980qMWjC9HvLphhO7DAiEAse7qJYBL43bNjOvkTES46WZr4q+IPh4tYDSYU7DEiUg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBFxJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo+JA/9F3dY0eu4wzN9BOvXH2F7QAKkGWrluFD5AH/QCdVnW4Qg1bQE\r\nQiXtcN5yBdAocfatpBsboXyOQn44sDEE3G328m5PAbFgqlcJomjsg4oZYekQ\r\n1I6Ihpa5+ZItoy/jsY0yUUdYjyS+WL7lYvuY+vuBwlVIpiW+HWsvgsVc7wN9\r\nfqdPi6MCexaern1noZ6PvbmyXBUPf1kKwvvHYkWM0LKfKID7ex4jAC4kYyPu\r\nDANV/AXPvuaW3jh3VbL/iEO2ESVX1nI+7hYfOuAcyAVlXj0tqXeGSxJeQE65\r\nNzok7BJO2E5Y7h3+fTfZciAgwdqrV5meBnVa8UAdAWzAwMIHDUu9b75v6HNA\r\nJsqS/HFJaMEMp8yYGAwUGfU8iaHWTKxN9s6+hUQb5lcBagdEHPBkJFRs+uh0\r\n3rRwYN7gnHH2O4X/NFGpFwDF1p3ZxuxxKl1A1OZfQ5+wo2Rnn0JmZruzu2iJ\r\n2aIJAviLI6mRD/BaohDCz6sfguzrqiRCv6Gnvxg/n458Spk24fRjvIgXnoui\r\ntrP5fRlrW8znvXR0KnQhajdy7u5oz7XMv1FgaJecvHk/Bt0u3lwOgrTG3+Le\r\nR8TYwHmrWr9OgJPAMeddiTvcw75B8rhvWxfZEuMMDtI1tPgsTpucvJDKMPul\r\nPdS6R+ay9T9snlXvvv595hxppKj8CwCDM1M=\r\n=l1SG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.10_1661230153049_0.7043689603618468"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.11":{"name":"hijacker","version":"1.0.0-beta.11","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.19","commander":"^9.4.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.3.1","graphql":"^16.6.0","luxon":"^3.0.1","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.10.0","@emotion/styled":"^11.10.0","@ladle/react":"^2.1.2","@mui/icons-material":"^5.8.4","@mui/material":"^5.10.1","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.184","@types/react":"^18.0.17","@types/react-dom":"^18.0.6","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.34.0","@typescript-eslint/parser":"^5.34.0","@uiw/react-codemirror":"4.11.5","@vitest/coverage-c8":"^0.22.1","c8":"^7.12.0","codemirror":"^6.0.1","commitizen":"^4.2.5","cz-conventional-changelog":"^3.3.0","esbuild":"^0.15.5","eslint":"^8.22.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.1","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.9","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.4","socket.io-client":"^4.5.1","typescript":"^4.7.4","vitest":"^0.22.1"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml/badge.svg)](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker is a develoment too meant to proxy to an existing API while being able to mock and modify specific requests via rules.\n\n- [Get Started](#get-started)\n  - [Install](#install)\n  - [Create Config](#create-config)\n  - [Run](#run)\n- [Config](#config)\n  - [Config](#config-1)\n  - [Rule](#rule)\n  - [Base Rule](#base-rule)\n  - [Rule Types](#rule-types)\n  - [Logger](#logger)\n- [Extending Hijacker](#extending-hijacker)\n  - [Custom Rule Type](#custom-rule-type)\n  - [Hooks](#hooks)\n- [Contributing](#contributing)\n\n## Get Started\n\n### Install \n\n#### Locally\n```shell\nnpm i -D hijacker\n```\n\n#### Globally\n```shell\nnpm i -g hijacker\n```\n\n### Create Config\nCreate config file named `hijacker.config.js` with the following:\n```javascript\nmodule.exports = {\n  port: 3000,\n  baseRule: {\n    baseUrl: '<YOUR_API_URL>'\n  },\n  rules: []\n}\n```\nView [Config](#config) for more information.\n\n### Run\nAdd a `hijacker` script to your `package.json` file:\n`\"hijacker\": \"hijacker\"`.\n\nThen run the following command in the directory with your config file:\n```shell\nnpm run hijacker\n```\nYour hijacker instance should now be running at `http://localhost:3000` with the interface available at `http://localhost:3000/hijacker`.\n\n## Config\n\n### Config\n| Property | Descripton | Type | Required | Default |\n| -------- | ---------- | ---- | -------- | ------- |\n| `port` | Port that you want the hijacker instance to run on | `number` | `yes` |\n| `baseRule` | Base rule that other rules will inhert from. See [Base Rule](#base-rule) | `Partial<Rule>` | `yes` | |\n| `rules` | Array of hijacker rules. See [Rule](#rule) | `Partial<Rule>[]` | `yes` | |\n| `logger` | Logger configuration options. See [Logger](#logger) | `LoggerOptions` | `no` | |\n\n### Rule\nA tells hijacker how to handle certain requests. If no matching rule is found, hijacker will proxy the request to the API server.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `name` | Rule name. Used for display purposes only | `string` | `no` | |\n| `disabled` | If rule is disabled it can't be matched | `boolean` | `no` | `false` |\n| `type` | Rule type. Used to determine which RuleType to use for matching and handling the request | `string` | `rest` |\n| `baseUrl` | Base URL for API you want to point hijacker at for specific rule | `string` | `no` | |\n\n### Base Rule\nThe base rule allows you set default values for the  \n\n### Rule Types\nBy default hijacker includes Rest and a GraphQL rule types. Each rule type can have additional properties that build upon the base rule properties. Each rule will be merged with the Base Rule and use it's values unless overridden in the rule.\n\nThe base rule has the same values as [Rules](#rule). The only difference is that `baseUrl` is required so that requests that have no matching rule will be able to be proxied.\n\n#### Rest Rule\nThe rest rule type is meant for REST APIs, and will be used for rule's where `type` is set to `rest`. The rest rule type has the same properties as the [Rule](#rule), as well as the following:\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `skipApi` | | `boolean` | `no` | `false` |\n| `method` | HTTP method of the request to match on. | `GET` \\| `HEAD` \\| `POST` \\| `PUT` \\| `DELETE` \\| `OPTIONS` \\| `TRACE` \\| `PATCH` \\| `ALL` | `no` | `ALL` |\n| `body` | Response body to send back when a rule matches | `any` | `no` | `undefined` |\n| `path` | URL path of request to match on. | `string` | `yes` | |\n| `statusCode` | Status code you would like hijacker return for a request | `number` | `no` | |\n| `routeTo` | Path to redirect request to at the API url | `string` | `no` | |\n\n#### GraphQL Rule\nThe GraphQL rule type expands on the Rest Rule but adds matching that works for GraphQL queries. Right now the GraphQL rule type only matches on the operation name. \n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `operationName` | Operation to match in graphql query | `string` | `yes` | |\n\n__Example__:\n```graphql\nquery TestQuery {\n  posts {\n    name\n    id\n  }\n}\n```\nFor the above query, `TestQuery` is the `operationName` that should be used to match query in a rule.\n\n### Logger\nSettings for built in logger. This may eventually get changed to accepting a custom logger.\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `level` | Max log level that you wan't logged to the console. | `SILLY` \\| `DEBUG` \\| `HTTP` \\| `INFO` \\| `WARN` \\| `ERROR` \\| `NONE` | `no` | `INFO` |\n\n## Extending Hijacker\nHijacker was made with extensibility in mind. There are a couple ways Hijacker can be extended: Custom Rule Types and Hooks.\n\n### Custom Rule Type\n\n### Hooks\n\n\n## Contributing","readmeFilename":"README.md","gitHead":"bf23f33baadbc7c8a5fdb23dd0599a73bfd7006f","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.11","_nodeVersion":"14.20.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-s+cAYg0bewrJNNjB+BWDWFIFjdscT4IH3Gx6p8VSuE9f81pU3sSO4Rdl8oZKJLhvHGIavJLxG9T8FFxuvCQpPg==","shasum":"5c20600af9d44f1880b4782cec8394854c5d0c5e","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.11.tgz","fileCount":21,"unpackedSize":2573244,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGYF3QNUgev/tzlD+5QeBRJZcfTEvZlg0AI0Fi/R16PQIhAL3+y2cpyogb7u1sEjYgmZJI9OtRiBczTgaJ3MNHVTvJ"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCYNjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoF/Q/9HMT+rcN8zxc7YMrwqmfSusyzrt3DrbnLWgoDjx2S9sPNDKMP\r\nTb9LtVsJWn9EkDtnbqBsVsG8mBaheEeLFzspwKuLPSlCe49EtzZIr5TiPNmm\r\n2r/aGJ2nyL/eyR3FMGfm4uW8UIlTFYVhUZusosCtXKhXQ+Jn66dvgSnOr1oP\r\ni4T4nrH7evCXAvJ4pv2U6yCVU90iIfuSP5xlsi64SyBpmiPWPD+6jL9QdRJe\r\nMF1Wm4mVrSdif215O9jw573DiE/ZB82LhAOO1SjUEeUij3I+oRnl0BDYUdDb\r\nk7XnDPeBphFYDg4YDDUBGKeqHEyP7GzI50ilJyggaR0b3Xn1ZQpOAbNDhQ+F\r\nTN+Fo7qYuaEpt5Ik1LyE/pM1Ml2QuEi+nPN+SAg5MfIPCfy3knUpKlSFU/Vm\r\ngNgwQbEpd04NkjSNp5fxhj3ieXzt/CIBhS2G4me1X4W87xNbgSOHC1N0HuAn\r\nMOZPMwFf0C5/fQ9K4lQVy8FQTBNAsO3qHE9+qLl6uXKsJq/ltY1YwwQNiZ+v\r\norCQScCE7Z6QeKwAqqVe6hmiKx1buatIvrPrehGEGxvbtqi1mbzRnPkG65FA\r\nBKx3mKVfHJ/8fwxOU7ytbin4L3y1neSx/QmathnhuKT+HeHDRL1ss5bOPYIq\r\nrIxYMmj8CnX+2yain/q1HayJ1NsbjfSvr1M=\r\n=4iN6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.11_1661567842754_0.9291863057820051"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"},"1.0.0-beta.12":{"name":"hijacker","version":"1.0.0-beta.12","description":"Frontend development tool for intercepting and mocking api requests","author":{"name":"Travis Weidenbenner","email":"travis@weidenbenner.com"},"scripts":{"build":"node build/dev-server.cjs","build:types":"tsc --declaration --emitDeclarationOnly","commit":"git-cz","dev":"node build/dev-server.cjs --dev","lint":"eslint src/ build/","ladle:serve":"ladle serve --config config","semantic-release":"semantic-release","start":"npm run dev","test":"vitest --coverage --config config/vitest.config.ts"},"type":"module","main":"dist/hijacker.js","dependencies":{"body-parser":"^1.20.0","class-validator":"^0.13.2","colorette":"^2.0.19","commander":"^9.4.0","express":"^4.18.1","express-xml-bodyparser":"^0.3.0","got":"^12.3.1","graphql":"^16.6.0","luxon":"^3.0.1","route-matcher":"^0.1.0","socket.io":"^4.5.1","uuid":"^8.3.2"},"devDependencies":{"@codemirror/lang-json":"^6.0.0","@codemirror/lint":"^6.0.0","@emotion/react":"^11.10.0","@emotion/styled":"^11.10.0","@ladle/react":"^2.1.2","@mui/icons-material":"^5.8.4","@mui/material":"^5.10.1","@types/express":"^4.17.13","@types/express-xml-bodyparser":"^0.3.2","@types/lodash":"^4.14.184","@types/react":"^18.0.17","@types/react-dom":"^18.0.6","@types/uuid":"^8.3.4","@typescript-eslint/eslint-plugin":"^5.34.0","@typescript-eslint/parser":"^5.34.0","@uiw/react-codemirror":"4.11.5","@vitest/coverage-istanbul":"^0.22.1","codemirror":"^6.0.1","commitizen":"^4.2.5","cz-conventional-changelog":"^3.3.0","esbuild":"^0.15.5","eslint":"^8.22.0","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.30.1","glob":"^8.0.3","lodash":"^4.17.21","nock":"^13.2.9","react":"^18.2.0","react-dom":"^18.2.0","react-router-dom":"^6.3.0","semantic-release":"^19.0.4","socket.io-client":"^4.5.1","typescript":"^4.7.4","vitest":"^0.22.1"},"browserslist":["> 1%","last 2 versions"],"bin":{"hijacker":"dist/bin/hijacker.js"},"config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"homepage":"http://hijacker.io","license":"MIT","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"types":"./dist/hijacker.d.ts","readme":"# Hijacker\n[![npm](https://img.shields.io/npm/v/hijacker.svg)](https://www.npmjs.com/package/hijacker)\n[![Build Status](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml/badge.svg)](https://github.com/travis-w/hijacker/actions/workflows/workflow.yml)\n[![Coverage Status](https://coveralls.io/repos/github/travis-w/hijacker/badge.svg?branch=master)](https://coveralls.io/github/travis-w/hijacker?branch=master)\n\nHijacker is a develoment too meant to proxy to an existing API while being able to mock and modify specific requests via rules.\n\n- [Get Started](#get-started)\n  - [Install](#install)\n  - [Create Config](#create-config)\n  - [Run](#run)\n- [Config](#config)\n  - [Config](#config-1)\n  - [Rule](#rule)\n  - [Base Rule](#base-rule)\n  - [Rule Types](#rule-types)\n  - [Logger](#logger)\n- [Extending Hijacker](#extending-hijacker)\n  - [Plugins](#plugins)\n  - [Custom Rule Types](#custom-rule-types)\n  - [Hooks](#hooks)\n\n## Get Started\n\n### Install \n\n#### Locally\n```shell\nnpm i -D hijacker\n```\n\n#### Globally\n```shell\nnpm i -g hijacker\n```\n\n### Create Config\nCreate config file named `hijacker.config.js` with the following:\n```javascript\nmodule.exports = {\n  port: 3000,\n  baseRule: {\n    baseUrl: '<YOUR_API_URL>'\n  },\n  rules: []\n}\n```\nView [Config](#config) for more information.\n\n### Run\nAdd a `hijacker` script to your `package.json` file:\n`\"hijacker\": \"hijacker\"`.\n\nThen run the following command in the directory with your config file:\n```shell\nnpm run hijacker\n```\nYour hijacker instance should now be running at `http://localhost:3000` with the interface available at `http://localhost:3000/hijacker`.\n\n## Config\n\n### Config\n| Property | Descripton | Type | Required | Default |\n| -------- | ---------- | ---- | -------- | ------- |\n| `port` | Port that you want the hijacker instance to run on | `number` | `yes` |\n| `baseRule` | Base rule that other rules will inhert from. See [Base Rule](#base-rule) | `Partial<Rule>` | `yes` | |\n| `rules` | Array of hijacker rules. See [Rule](#rule) | `Partial<Rule>[]` | `yes` | |\n| `logger` | Logger configuration options. See [Logger](#logger) | `LoggerOptions` | `no` | |\n\n### Rule\nA tells hijacker how to handle certain requests. If no matching rule is found, hijacker will proxy the request to the API server.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `name` | Rule name. Used for display purposes only | `string` | `no` | |\n| `disabled` | If rule is disabled it can't be matched | `boolean` | `no` | `false` |\n| `type` | Rule type. Used to determine which RuleType to use for matching and handling the request | `string` | `rest` |\n| `baseUrl` | Base URL for API you want to point hijacker at for specific rule | `string` | `no` | |\n\n### Base Rule\nThe base rule allows you set default values for the  \n\n### Rule Types\nBy default hijacker includes Rest and a GraphQL rule types. Each rule type can have additional properties that build upon the base rule properties. Each rule will be merged with the Base Rule and use it's values unless overridden in the rule.\n\nThe base rule has the same values as [Rules](#rule). The only difference is that `baseUrl` is required so that requests that have no matching rule will be able to be proxied.\n\n#### Rest Rule\nThe rest rule type is meant for REST APIs, and will be used for rule's where `type` is set to `rest`. The rest rule type has the same properties as the [Rule](#rule), as well as the following:\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `skipApi` | | `boolean` | `no` | `false` |\n| `method` | HTTP method of the request to match on. | `GET` \\| `HEAD` \\| `POST` \\| `PUT` \\| `DELETE` \\| `OPTIONS` \\| `TRACE` \\| `PATCH` \\| `ALL` | `no` | `ALL` |\n| `body` | Response body to send back when a rule matches | `any` | `no` | `undefined` |\n| `path` | URL path of request to match on. | `string` | `yes` | |\n| `statusCode` | Status code you would like hijacker return for a request | `number` | `no` | |\n| `routeTo` | Path to redirect request to at the API url | `string` | `no` | |\n\n#### GraphQL Rule\nThe GraphQL rule type expands on the Rest Rule but adds matching that works for GraphQL queries. Right now the GraphQL rule type only matches on the operation name. \n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `operationName` | Operation to match in graphql query | `string` | `yes` | |\n\n__Example__:\n```graphql\nquery TestQuery {\n  posts {\n    name\n    id\n  }\n}\n```\nFor the above query, `TestQuery` is the `operationName` that should be used to match query in a rule.\n\n### Logger\nSettings for built in logger. This may eventually get changed to accepting a custom logger.\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `level` | Max log level that you wan't logged to the console. | `SILLY` \\| `DEBUG` \\| `HTTP` \\| `INFO` \\| `WARN` \\| `ERROR` \\| `NONE` | `no` | `INFO` |\n\n## Extending Hijacker\nHijacker was made with extensibility in mind. There are a two ways Hijacker can be extended: custom rule types and hooks.\n\n### Plugins\nPlugins are how hooks and rule types are packaged up to be added to a config for a hijacker user to use.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `name` | Name of plugin | string | `yes` | |\n| `initPlugin` | Function called to initialize plugin and pass HijackerContext | `(context: HijackerContext) => void` | `no` | |\n| `hooks` | Array of hook names that the plugin allows to be hooked into | `string[]` | `no` | |\n| `handlers` | List of hook handlers for plugin | `Record<string, function>` | `no` | |\n| `ruleTypes` | Array of [custom rule types](#custom-rule-types) | `RuleType[]` | `no` | |\n\n### Custom Rule Types\nIt is possible to create custom rule types, that allow for request matching and handling. You can view [RestRule](src/rules/RestRule.ts) and [GraphqlRule](src/rules/GraphqlRule.ts) for examples.\n\n| Property | Description | Type | Required | Default |\n| -------- | ----------- | ---- | -------- | ------- |\n| `type` | Rule type used to match rules | `string` | `yes` | |\n| `createRule` | Create rule object used for the handler | `(rule: Partial<Rule<T>>) => Rule<T>` | `yes` | |\n| `isMatch` | Used to determine if request matches a rule | `(request: HijackerRequest, rule: Rule<T>) => boolean` | `yes` | |\n| `handler` | Request handler for rule type | `(request: Request<T>, baseRule: Partial<Rule<T>>, context: HijackerContext) => Promise<HijackerResponse>` | `yes` | |\n\n### Hooks\nHooks allow plugins to listen and modify objects at specific points in the request lifecycle. Hook handlers are passed an object that they can modify and return an object of the same shape. Right now Hijacker has hooks for the following events:\n\n| Hook Name | Type | Description | Synchronous |\n| --------- | ---- | ----------- | ----------- |\n| `HIJACKER_START` | `Config` | Executed when hijacker starts up and allows modifying the hijacker config | `yes` |\n| `HIJACKER_REQUEST` | `HijackerRequst` |  Begining of request. Called before rule matched | `no` |\n| `HIJACKER_RESPONSE` | `HijackerResponse` | Called after request handler, before response returned to client | `no` | \n\nPlugins are able to add additional hooks using the HookManager which allow other plugins to modify their functionality.","readmeFilename":"README.md","gitHead":"a6438a1ec2927631e28a6866445217158a8ec4a9","bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"_id":"hijacker@1.0.0-beta.12","_nodeVersion":"14.20.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-92TAOnbQsPBvUnKkx+emZfpHZztSTydjw+y+d76oRHIfLt8+cdx7nTYRt/rP1TKn+Ng63dFqA0uzchq1D2d/sg==","shasum":"835c2a205f24a9a3d5918a5f9827b23120450a1f","tarball":"https://registry.npmjs.org/hijacker/-/hijacker-1.0.0-beta.12.tgz","fileCount":37,"unpackedSize":2584117,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGAPgjprXTOfp0rs+rDg1+EgU9jhjWe51SbCKNteWoLYAiEA0rE3D6uy/YRSEJGeSLspUFyeSy4XvFzgzrywpeoh+Jw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCriOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTwg/9FjlJrpl5CCohryAdRKBHGl+tDBh2fXlTdXECXUatwCARIkHn\r\n35hU+Ni8XUsFxcJqNKBqIqu8jx4PRz9vFvypzZib0esg9/Plx44Jg++Jgcn2\r\n3FrExhW8KoDGqxrjmP1Zoch6jlK8k0pOrcD+I4WgkI2XppTQMMA9jrdLjUHc\r\n6lOGJAj4pdTNUM+2vad1lmKMYdRgMFWt1eEtHIAXfUKeolOp7hYrxULV0wJb\r\n2B/deHwQHeeDv3+CokFfIBxc+xs4fuCVfgGZoJiIyfwk+f2szCG017iEAzLt\r\nNhfTH/VJ4WUGPHo0nMzpqsZXmudvWHNs1rPE6zkOUnphOomyvFNgS10GO9Cr\r\nxRjI7khzhOqsukJ/tQsB7u7llc82wqG2WDg/8ncWuTy58Ex0o+WWhQPyyEgk\r\nBE3U8K+eu/GlIXZDhroHz2gCnFG8oOx2waBkvwHPyYFRZfi2KCFCBOUU5Ca4\r\nZdANEHCu6iy+qbm1Hnarz59K2v72hOZMSiUimab8schOAhlmMBVKZfCJEzwX\r\nGD8Jc6xdUgVp0CoA4wLpQC1SiNxfMaI23rFzT7l2gxJA5R94K0I5Kzcr0zES\r\nqmuY4PmZQI0FbJcYGksmsY/ensA6J55S1qE++paocHgao7F6mbuHJZfrcpil\r\nB0tXmQw/bnYIko+h/5KrUpi2LUgms7jIOhI=\r\n=Wto7\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"travis-w","email":"travis@weidenbenner.com"},"directories":{},"maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/hijacker_1.0.0-beta.12_1661646990494_0.35496695987128746"},"_hasShrinkwrap":false,"deprecated":"hijacker has moved to https://www.npmjs.com/package/@hijacker/core"}},"readme":"","maintainers":[{"name":"travis-w","email":"travis@weidenbenner.com"}],"time":{"modified":"2022-08-30T03:43:20.261Z","created":"2017-07-25T22:37:44.316Z","0.1.0":"2017-07-25T22:37:44.316Z","0.1.1":"2017-07-25T23:12:15.330Z","0.1.2":"2017-07-27T03:17:21.664Z","0.1.3":"2017-08-17T03:29:18.689Z","0.1.4":"2017-08-18T02:29:09.485Z","0.1.5":"2017-08-30T22:25:48.490Z","0.1.6":"2017-08-31T17:39:45.145Z","0.2.0":"2017-12-22T03:55:52.993Z","0.2.1":"2017-12-22T04:30:26.810Z","0.2.2":"2017-12-24T02:40:02.355Z","0.2.3":"2017-12-27T23:31:39.253Z","0.3.0-beta.1":"2019-07-08T23:58:41.849Z","0.3.0-beta.2":"2019-07-21T15:15:30.517Z","0.3.0-beta.3":"2019-07-23T03:48:02.622Z","0.3.0-beta.4":"2019-10-04T04:42:39.745Z","0.3.0-beta.5":"2019-10-06T00:55:53.614Z","0.3.1-beta.2":"2019-12-11T01:14:35.241Z","0.3.1-beta.3":"2020-02-27T05:11:52.518Z","0.3.1-beta.4":"2020-04-16T22:31:20.922Z","0.3.1-beta.5":"2020-04-16T22:55:49.292Z","0.3.1-beta.6":"2020-04-17T20:53:03.556Z","0.3.1-beta.7":"2020-04-17T22:20:46.903Z","0.4.0-beta.1":"2020-04-24T03:04:24.014Z","0.4.0-beta.2":"2020-04-25T03:47:10.922Z","0.4.0-beta.3":"2020-05-21T16:21:58.185Z","0.4.0-beta.4":"2021-01-17T02:13:35.822Z","0.4.0-beta.5":"2021-01-18T04:12:14.506Z","0.4.0-beta.6":"2021-01-20T04:57:21.286Z","0.4.0-beta.7":"2021-01-22T03:03:09.379Z","0.4.0-beta.8":"2021-01-29T03:21:17.891Z","0.4.0-beta.9":"2021-02-14T02:09:10.205Z","0.4.0-beta.10":"2021-04-04T21:16:22.335Z","0.4.0-beta.11":"2021-06-04T02:42:21.741Z","0.4.0-beta.12":"2021-06-04T02:52:50.249Z","0.4.0-beta.13":"2021-06-05T01:55:55.912Z","0.4.0-beta.14":"2021-11-09T03:30:58.457Z","0.3.0":"2021-11-09T03:57:27.371Z","1.0.0-beta.1":"2022-06-14T04:29:53.302Z","1.0.0-beta.2":"2022-07-12T03:47:23.649Z","1.0.0-beta.3":"2022-07-13T01:33:18.216Z","1.0.0-beta.4":"2022-07-13T02:46:56.667Z","1.0.0-beta.5":"2022-07-19T02:06:36.329Z","1.0.0-beta.6":"2022-07-19T04:44:27.112Z","1.0.0-beta.7":"2022-07-20T04:12:41.468Z","1.0.0-beta.8":"2022-08-06T04:13:53.185Z","1.0.0-beta.9":"2022-08-23T04:29:14.777Z","1.0.0-beta.10":"2022-08-23T04:49:13.436Z","1.0.0-beta.11":"2022-08-27T02:37:23.061Z","1.0.0-beta.12":"2022-08-28T00:36:30.780Z"},"homepage":"http://hijacker.io","repository":{"type":"git","url":"git+https://github.com/travis-w/hijacker.git"},"bugs":{"url":"https://github.com/travis-w/hijacker/issues"},"license":"MIT","readmeFilename":"","users":{"jrtnq514":true},"author":{"name":"Travis Weidenbenner","email":"travis@travisw.dev"}}