{"_id":"jquery-mockjax","_rev":"38-563149479425fc60eaa0f47785c04a56","name":"jquery-mockjax","dist-tags":{"beta":"3.0.0","latest":"3.0.1"},"versions":{"1.5.3":{"name":"jquery-mockjax","version":"1.5.3","keywords":["ajax","mock","unit"],"author":{"url":"http://jdsharp.com/","name":"Jonathan Sharp"},"_id":"jquery-mockjax@1.5.3","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"}],"homepage":"http://github.com/appendto/jquery-mockjax","bugs":{"url":"http://github.com/appendto/jquery-mockjax/issues"},"url":"http://code.appendto.com/plugins/jquery-mockjax/","dist":{"shasum":"bba43e8f6a5021a9efc4508632d116cdc778360a","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-1.5.3.tgz","integrity":"sha512-2jK9tS6rQj9FhKw+y7s9WmjzmduDfIEd9rzjbv0Mna0Oq87BGdImSpd4kcQb2Gj9tNBq9q1F1RSE5T/BUv/92g==","signatures":[{"sig":"MEUCIB0qYsWrYzxyO4DupsWIST8TFu55bLUjLZi50FltYpjAAiEAnabpDY+xamhdTEjLT4GMCcAy/7oxfdjKRF+ouUne+Lg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"_from":".","_npmUser":{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},"licenses":[{"url":"http://appendto.com/open-source-licenses","type":"MIT"},{"url":"http://appendto.com/open-source-licenses","type":"GPLv2"}],"deprecated":"Version 1.x of Mockjax is no longer supported. Please upgrade to @latest","repository":{"url":"http://github.com/appendto/jquery-mockjax.git","type":"git"},"_npmVersion":"1.4.5","description":"Mockjax. The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"repositories":[{"url":"http://github.com/appendto/jquery-mockjax.git","type":"git"}]},"1.6.1":{"name":"jquery-mockjax","version":"1.6.1","keywords":["ajax","mock","unit","testing"],"author":{"url":"http://jdsharp.com/","name":"Jonathan Sharp"},"_id":"jquery-mockjax@1.6.1","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"8e2b0ab8afb436d41dbc39562b92e45a4b4601e7","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-1.6.1.tgz","integrity":"sha512-icBo35taSdVUtF1gu6Q5xE9RccRjtUxnnPW7HeNuECIqcP6Qjv15pPxYnErvWehEhYAUu3c2lTwH9PUviNC5Dw==","signatures":[{"sig":"MEQCICuBB5j1oITx2oanb8CDaswH4wFnF06vW0EGAmv0fnmiAiBn1ap+ni4wZZurvXbiMrYpHX8cpkrjUoTRJxmuPam7RQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"jquery.mockjax.js","_from":"./","_shasum":"8e2b0ab8afb436d41dbc39562b92e45a4b4601e7","gitHead":"e4969fd891a50f259e65a2f61a646038d773f2c1","scripts":{},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"deprecated":"Version 1.x of Mockjax is no longer supported. Please upgrade to @latest","repository":{"url":"https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"1.4.14","description":"Mockjax. The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"repositories":[{"url":"https://github.com/jakerella/jquery-mockjax.git","type":"git"}]},"1.6.2":{"name":"jquery-mockjax","version":"1.6.2","keywords":["ajax","mock","unit","testing"],"author":{"url":"http://jdsharp.com/","name":"Jonathan Sharp"},"_id":"jquery-mockjax@1.6.2","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"570df58ad13e634e1a9cfd75e5cf44a9cc03dacf","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-1.6.2.tgz","integrity":"sha512-VuT6fGkO1IBQE2xf6QCHsunqUZfPvJMIKIgw1FWTSVnenyGffcBt+sTSyZVF5K8ngHKQxSgESKVYbvjB+bCoVQ==","signatures":[{"sig":"MEUCIGkMbgq/Pw2E+sZmR6IiO5IfhwAfWFa6vQRlavLU5a9MAiEAtgFkYZT/qM6Dc9iOOE+AXKJEChYkC7pPK30CCz7fA7Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"jquery.mockjax.js","_from":".","_shasum":"570df58ad13e634e1a9cfd75e5cf44a9cc03dacf","gitHead":"e718591fafa9c7a6d5fe4b65f12e3d23c51bbf86","scripts":{},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"2.5.1","description":"Mockjax. The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"0.12.0","deprecated":"Version 1.x of Mockjax is no longer supported. Please upgrade to @latest"},"2.0.1":{"name":"jquery-mockjax","version":"2.0.1","keywords":["ajax","mock","unit","testing","jquery-plugin"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.0.1","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"025061dde556bd0890bcdc8064c7c6ee04999f13","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.0.1.tgz","integrity":"sha512-mrkrgLMT/pVBA2e+oFlYtDi4WY1DUGoM+QAur6O7b0qUMJra15U9Mahy1UayDV/KQD8IzYJsMYHAtB9jIwE+UA==","signatures":[{"sig":"MEYCIQDpA/YPvDGWN7yeR8/w6wehZ44LbjpFfEavd0k69mMQjAIhAIku9AJCn5A7dSWcWMeqldBiz6/Ed8/xedMVRk1/s8bY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","_from":".","title":"jQuery Mockjax","_shasum":"025061dde556bd0890bcdc8064c7c6ee04999f13","gitHead":"44793bf599e7821dfe0a9a6e40c10523168c130e","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"2.10.1","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"0.12.4","dependencies":{"jquery":"^2.1.3"},"devDependencies":{"grunt":"^0.4.5","jsdom":"^4.2.0","mocha":"^2.2.4","xmlhttprequest":"^1.7.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^0.5.2","grunt-contrib-watch":"^0.6.1","grunt-contrib-concat":"^0.5.0","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.6.0"}},"2.1.0":{"name":"jquery-mockjax","version":"2.1.0","keywords":["ajax","mock","unit","testing","jquery-plugin"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.1.0","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"b67fbf71cb9cac37378c450450948a17c158efe9","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.1.0.tgz","integrity":"sha512-MDgAx/cOI82dJs05RvsOBYQ+FnUz7//xfzKCeDpLU5pj/+VjLTfyYrhf0RpY3YiOy98ZDmMKh92yT69RbPzPAQ==","signatures":[{"sig":"MEUCIQCc4Xf1oHeIB6brz3C/9GedmgUScr9MhI2/aMViWbutjQIgW3L4hw5FsNBIyM/mwVT7OA5HASdiysgwvRmQ5Kp/0oU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","_from":".","title":"jQuery Mockjax","_shasum":"b67fbf71cb9cac37378c450450948a17c158efe9","gitHead":"f641a73786b4fc2f9bc12a1a0e0b44a50085caab","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"2.14.7","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"4.2.1","dependencies":{"jquery":"^2.1.3"},"devDependencies":{"grunt":"^0.4.5","jsdom":"^4.2.0","mocha":"^2.2.4","xmlhttprequest":"^1.7.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^0.5.2","grunt-contrib-watch":"^0.6.1","grunt-contrib-concat":"^0.5.0","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.6.0"}},"2.1.1":{"name":"jquery-mockjax","version":"2.1.1","keywords":["ajax","mock","unit","testing","jquery-plugin"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.1.1","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"60e411e8bb308584b26f8ea13d855e9cd161d58b","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.1.1.tgz","integrity":"sha512-f+l44509nFtAiIB4fZwgUjzKm9IUtV+XGfPf9SRQNHD9Rn8oYgaAvg2Vb5Rw6P+PhDm7AjMjzjAwsmBr+fdfRw==","signatures":[{"sig":"MEUCIFSBFrR6UaS3DxGxJG2aBYBrvlnGtvWiQBxd8Wbzu2aUAiEA6SsYJT6eyu/bEqR/2NpSi1Xqjdcrw3r5hf46kICotdw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","_from":".","title":"jQuery Mockjax","_shasum":"60e411e8bb308584b26f8ea13d855e9cd161d58b","gitHead":"8f9981dd673d2a1bf99e5b8bac58a43b1a9633f6","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"2.14.7","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"4.2.1","dependencies":{"jquery":"^2.1.3"},"devDependencies":{"grunt":"^0.4.5","jsdom":"^4.2.0","mocha":"^2.2.4","xmlhttprequest":"^1.7.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^0.5.2","grunt-contrib-watch":"^0.6.1","grunt-contrib-concat":"^0.5.0","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax-2.1.1.tgz_1454885849927_0.8746173505205661","host":"packages-9-west.internal.npmjs.com"}},"2.2.0":{"name":"jquery-mockjax","version":"2.2.0","keywords":["ajax","mock","unit","testing","jquery-plugin"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.2.0","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"89779ba1876ff9d6a8fb51273027fd8d40b5ff13","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.2.0.tgz","integrity":"sha512-utfkK/sDq6pbpAT2hV5eJ/QvIAP4rcZSfzxMfWTga/klI1SAl3EgsBzgnbQ7AKjYyuK6Ui/Eh/tHMg8m8fqZDg==","signatures":[{"sig":"MEUCIQDElH76J1MAuI0+pZ1zcA/hv3Km9ncOMt/4jdMWStpkzAIgR06xPCdSAGGDmbWg1/gkk28latpSZotcZEicVfC2+q8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","_from":".","title":"jQuery Mockjax","_shasum":"89779ba1876ff9d6a8fb51273027fd8d40b5ff13","gitHead":"65b556a7c41e884600a8c3dc42b8f9c4c00d58a3","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"2.14.12","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"4.3.2","dependencies":{"jquery":"^2.1.3"},"devDependencies":{"grunt":"^0.4.5","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","xmlhttprequest":"^1.7.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^0.5.2","grunt-contrib-watch":"^0.6.1","grunt-contrib-concat":"^0.5.0","grunt-contrib-jshint":"^0.10.0","grunt-contrib-uglify":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax-2.2.0.tgz_1465933098355_0.9280015453696251","host":"packages-12-west.internal.npmjs.com"}},"2.2.1":{"name":"jquery-mockjax","version":"2.2.1","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.2.1","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"c79cdc59dbb2153971a66e533e713017034154ac","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.2.1.tgz","integrity":"sha512-BZHDMPVqpaOKdlDt9CBJRO8dTkheTaLXTdwV/xHhz4Os4vUrmJHViogMydW1urmyZnL7D46wzggUoM2ICrzOVw==","signatures":[{"sig":"MEUCIGYEstQsEwnMykogWMhY9g43B9NLSaRNK6JLZNL+0crCAiEA7CKYsUVcaOpSOwhigSb+nsMWCZtFZIM+xcv4PhGfCSI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","_from":".","title":"jQuery Mockjax","_shasum":"c79cdc59dbb2153971a66e533e713017034154ac","gitHead":"5c971d1f0db3b5e385bafbd3bd205ae6bccf81f0","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"3.9.3","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"6.2.1","dependencies":{"jquery":">=1.5.2"},"devDependencies":{"grunt":"^0.4.5","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","browserify":"^13.1.0","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^0.5.2","grunt-contrib-watch":"^0.6.1","grunt-contrib-concat":"^0.5.0","grunt-contrib-jshint":"^0.12.0","grunt-contrib-uglify":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax-2.2.1.tgz_1473972045540_0.6084301769733429","host":"packages-16-east.internal.npmjs.com"}},"2.2.2":{"name":"jquery-mockjax","version":"2.2.2","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.2.2","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"9c7d2b103a44cf61c99cc78a9ee7878504b60907","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.2.2.tgz","integrity":"sha512-stVgUln5bo7g14KjeU45c31nAYlBHAUVBo4JbdoDYIJ3i6Nzlu8mkjKcAviwad9AU1dBEHHpuzA7R6mKcWgvZA==","signatures":[{"sig":"MEUCIEw1+IfyCToLSYg6LvqpT6BSpQCA/qQNy5mLtFVfFi4kAiEA+5XMx8Xb5HXJUK4bkh9NmjGACyvD7KJfLaQRhcelq5I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"e8eee6b7e65e4b698342c1a75a6e5f8942fd364f","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"5.0.3","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"6.10.3","dependencies":{"jquery":">=1.5.2"},"devDependencies":{"grunt":"^1.0.1","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","browserify":"^13.1.0","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^1.2.0","grunt-contrib-watch":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^1.1.0","grunt-contrib-uglify":"^2.0.0","grunt-contrib-connect":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax-2.2.2.tgz_1497890242585_0.8806374066043645","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"jquery-mockjax","version":"2.3.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.3.0","maintainers":[{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"e55eb65626d44bf35b3990dc56ef94a64c6b5c1f","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.3.0.tgz","integrity":"sha512-ur5YhwDwT2P+zz4RJedV/ldC+4lZQQoU3/nNKRbK521jTTGvnrzmx4PZJM4Dquk1r2OlIER4sK5ZaxunMbaB7w==","signatures":[{"sig":"MEUCIFskTKGLcYkkVOradi8IAyIc+ueLAccWF48dPOKTK2uNAiEAjHXI4z+Na8oKPMXqrWCT2ioltfOxiVx0yuZaIeHY83k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"47be29e88b167398f81577b6fb89d0a02311975f","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"5.0.3","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"6.10.3","dependencies":{"jquery":">=1.5.2"},"devDependencies":{"grunt":"^1.0.1","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","browserify":"^13.1.0","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^1.2.0","grunt-contrib-watch":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^1.1.0","grunt-contrib-uglify":"^2.0.0","grunt-contrib-connect":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax-2.3.0.tgz_1515351869005_0.14888733508996665","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"jquery-mockjax","version":"2.4.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.4.0","maintainers":[{"name":"appendto","email":"github@appendto.com"},{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"d95d32f985d1652b716670af31a5e2dfbac44c50","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.4.0.tgz","fileCount":104,"integrity":"sha512-ZLJ5Wi804tHqhQaE7HIE+4gh+RBw8FXjAzzJJMK/HFBMo6bZOD744JevE8RY44CaTsOGzW91kMpJ8sqsDGkB9g==","signatures":[{"sig":"MEQCIGTp8HEyoaSw6OjBJhzeQbAGYT1g6nZjCST9IPiFAGuwAiAvWhog5UjxW1caIU2dZNQ2Fy7WygDx8K8QK8diSC/nVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5026449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJvA4CRA9TVsSAnZWagAA0DEP/28qMe91RhKu8KaJFy9F\nCSUCbAGul4PIYJtuB7tA1XZBm8/tO03XAbj9Udq9x3bBExMhfdNXT2uQzqcD\neQgWVfz6DDhgOQtgyb3bkoCquMRtqoj1yHtzzX8/cNbZwf0DGrYDXNgKVDua\nerq0hLWS//Qt4YjpZSLvj6NDeOfAsFWTDsnlCEYs6+d7aBBhHypxO4NtsXNR\nvDuOJl7ePAZ2GSKEXIANh5Cer1LyktvZjAqrSdJ5fLrW7I5bAMBiFRQ4zT6O\nI4+DiCb2gG/3cnuLcupcAiS1T0gp7DuRA1WgjCU7HNTHrBWa0tHmqHEBGdvt\nYeI3QgQIKAlNTfCj73uLIgtHuP1VFG09uzd0zkrgvrzWxbtrJoucmzjRYQ0I\npx5eDnXvcwSMk0vIZkULctsWOSO0OCuqTD3QTfWjwN+F1mQawKPDuw0eplgK\nvtzVIVrIrk9e6wZmjf39NzdVRiH2DmaQUqBciSBMyuRIp9d9MC3ku8t3yLeA\n5k5/09oyJXSa2+PhkmbI36veyb1cUatK5NQtNl1DbUMFr09nJNgN0JtsdwIQ\nCG4bhtvL858dgR5n9aU6Ep8MiW6nXrJEzTBDkQTg5vsCwEv1/YHO97q8g/8v\nkOEpavRxSzynx7bld0g6ApOX5z+sZJjK78fHqQ+3SJPKhmAkZc9MvLDhl/15\n6aSM\r\n=DGBF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"6ef8655784f1e286d722d51ff8e3d7dfebab8cc3","scripts":{"test":"grunt test:all"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"5.6.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"jquery":">=1.5.2"},"_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.0.1","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","puppeteer":"^1.1.1","browserify":"^13.1.0","http-server":"^0.11.1","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","grunt-contrib-qunit":"^1.2.0","grunt-contrib-watch":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^1.1.0","grunt-contrib-uglify":"^2.0.0","grunt-contrib-connect":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.4.0_1529278518661_0.33389266415857066","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"jquery-mockjax","version":"2.5.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.5.0","maintainers":[{"name":"appendto","email":"github@appendto.com"},{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"d9c553d26e8ee849884b8d290be0776e21cd9801","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.5.0.tgz","fileCount":110,"integrity":"sha512-mmQ/A0ktyJnrJVAoJEYzJk1selYOKrRTmvfrx7p1V/l8eF56Pw1CnIero4sKrKEXADg1/wWvA53DU5H5P0bnYg==","signatures":[{"sig":"MEUCIQCS705i2TDW4PoDZF7Dwh8YlGnh8SOXbFcAFUwPUKj0ggIgVgLVJ5KWcz8pNp8y1D7Ca6vq5BoU0N4Il7x8b/tLr88=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5036195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXgrbCRA9TVsSAnZWagAAOsYP/RrJM1xQllglVcGp/Gh9\nneC46yi6yvGNq9LY4xn2L/kPyQrRPFchhX2bpsAf2tjYTPwaW+PI580jjSkk\n+yMmBMIgr1ID94+IlkBItq5/ZN2x/PXlpt3KwRPr3Pevscu0LmP+qeq0S2bj\nbUG1pw8o7ipWxnypWGbPTnrOcA7WiCZLEASPs72VOraQF2kt8r2Efh7GDRkk\neEWmt32PH32Hb9/SKK5lns9oifCGMH+2HVzCTAv8Bhq091Byu8bjL3wRCue8\nvbfzHRKMY7EZ6FSzdKfZpIEP1g8nV8wQUoskoKj5rE9NAgo5RRZ4c29aT0Z/\nNFzwkLlvm1wbdxeKnExB57cYTrR3emRk/dgwYuHfadlSXgy/ftk9KhEdEzKI\nKBrQNZQO47dDh+6/6gClpPUYMb0gDMNw90oWmGGUNKy17H9UzjcYvjdJ/8HR\n4HKPkBNroPyseNDgHqy+4/Hi2C7a7vjm3fHrcXKIedv7FCODejZXgFkXfu+X\n5ilFzv+w284ZsccWcoIqpKdH/gazrTZfk6pxNKnDWAd47zOmeRMUa5Ua2tjr\njWk81D7tZlRjwZIhvos9lJxfgLsksVEycBF4oVPif3s9DJj1M3BzQM8W/dPs\najCGVt8OmeWsZEJ+dZIF3rpgS1898cd0x0FwBNhMMX9f55xfXg4/8S7HhjEO\nfp4O\r\n=8Woo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"6b29cbdf98fae2a5900f0830e13f8ea1cf93b716","scripts":{"test":"grunt test:all && node browserstack.js"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"5.6.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"jquery":">=1.5.2"},"_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.0.1","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","puppeteer":"^1.1.1","browserify":"^13.1.0","http-server":"^0.11.1","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","browserstack-runner":"^0.7.0","grunt-contrib-qunit":"^1.2.0","grunt-contrib-watch":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^1.1.0","grunt-contrib-uglify":"^2.0.0","grunt-contrib-connect":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.5.0_1532889819131_0.12746171078747537","host":"s3://npm-registry-packages"}},"2.5.1":{"name":"jquery-mockjax","version":"2.5.1","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.5.1","maintainers":[{"name":"appendto","email":"github@appendto.com"},{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"49c122d585fa848d503258dc32108116241b77a1","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.5.1.tgz","fileCount":111,"integrity":"sha512-VObCYFUWI0i14GjhFyqd/9fYz3LyB2iqcMLxJNTH1H2sLpTSgmfty1JMwtql9Dnd744yss1jxwKO1kM0eNrMrA==","signatures":[{"sig":"MEYCIQDz0Xh22Gs7SdWm11rp+yiCJ2HSYlBapZPbzlctjzp8PwIhAOScdNHwtITDqYJARscwuiaqresoiMPowUn9/WUgue7x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5316848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegh7wCRA9TVsSAnZWagAAjP0P/Atesyj++zQceFH9wYzJ\nfrraTIwG/b8RzMcQFNnuVqska1l1g1PFaRkmaGsBhfYjgNhKnVjszIrrC18U\nSeH3nmzyq85laY3VzgwRAcaETtCNcHdM56tb28p7eLFp7L0sjNvXYI/KiD4H\ndLg2pspoDJiArxL8ljkja5R4aeW8VIN+LoUWKEv/lwLenAyFfADLMnSwtV/0\nY9Rv4tgZZj1BMu9bWfM6LpkegfaxMECXHXlgg1w9lO02BUQ9mB5ve0VAe13U\nT0ca28qykxX+ly5UXrSa5Ngf94x41xoSjwiBYC4hkw8TPpQk1MHzdCLzgo9C\nrVp5RnOWn2iQhKo8re4H825vq5dil4z7nLqzNpcaGcHdu1QWJLf4n2a6wz01\nCj0HH+K422bcOquReNM/lYg/0Usu75SU1dbDCdym8fhEAg3whT9FeXJM+rZK\nxa329zllZPjwQq7PLgcajyX7WsLOgxwg4fMZb9H/fPaOCbPKVAdqS0gbJv06\nagSu39hvidI1EcOe4C2Wnyt9n+bcpmQu+1DMyjpcu97n2lK6aviYUOTBSW0S\nq61UHAKq7XYxeZvrRGnlClZg7V2iUG2l0dFYU7ZkQ0VAnrAdoJVEi585cymP\nN4xi0mdCJN8bUnc+1U3uGVn7cukXPJxAAoKckueo5cZKvb3LyNAYe9aaxtrW\nTCv4\r\n=5z/o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"21c171e3c4fd666083de61600e630f7aa17a3089","scripts":{"test":"grunt test:all && node browserstack.js"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"6.9.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"10.16.3","dependencies":{"jquery":">=1.5.2"},"_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.0.1","jsdom":"~4.2.0","mocha":"^2.2.4","sinon":"^1.17.4","puppeteer":"^1.1.1","browserify":"^13.1.0","http-server":"^0.11.1","xmlhttprequest":"^1.7.0","grunt-browserify":"^5.0.0","grunt-mocha-test":"^0.12.7","load-grunt-tasks":"^0.6.0","browserstack-runner":"^0.7.0","grunt-contrib-qunit":"^1.2.0","grunt-contrib-watch":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^1.1.0","grunt-contrib-uglify":"^2.0.0","grunt-contrib-connect":"^1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.5.1_1585585904231_0.04115868274021506","host":"s3://npm-registry-packages"}},"2.6.0":{"name":"jquery-mockjax","version":"2.6.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jdsharp.com","name":"Jonathan Sharp"},"_id":"jquery-mockjax@2.6.0","maintainers":[{"name":"appendto","email":"github@appendto.com"},{"name":"dirkbonhomme","email":"dirk@bytelogic.be"},{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"name":"Jordan Kasper"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"e96737d7c312965f2514b97ce9662db36b7d5ef4","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.6.0.tgz","fileCount":111,"integrity":"sha512-KNlIYbC5m+dr6t5ZQJSW+9cZf6wMiAc2XiJXAywBjvxnfRWTF+qaZLLk2mTc8NGXbPE0RQsfYu+mbS83ScALhg==","signatures":[{"sig":"MEUCIDZqmCq67pT3hudDxkhEjrdhG5GwYzROW2s9s6LTR2xhAiEAxzyzl6VQsNMZXtEUVXGUEoKXlDTP7oyUZcK9mZWm6G8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5611710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQV1HCRA9TVsSAnZWagAAk+IP/i04aMtSbqoDGeLDHNCN\n8b/PJJKxGJ8ZPlh5cnwHOFBlc4hYjvv3a++Jhe30PWcimGdNpHqwCPeRMc1j\nOCI0uRvZDNKWYE2ipsaFHYBM4ZNFA/1dfYqIuaMknVHfnm4nblsnnzMtRvLf\n3/1ryQkNkYgw5daSZaYyf3RkB6MEF4Sh6SH29Nl3ty+ltitYyXXqO9pesn6S\nZW3jbk2GFZLPEWS8nVzA/K+quQE/s5Nxe8WunAvloQCpORZTzleVA/BGtoc0\nvj7OldqrdWrzcktlh/VI5WHxQ+q8EeQz47FY+qzRbMkaniSQk4KWtW/nj+x7\nHag8lvZbRtuL/2XtBOwgQ4pcEMHpWWtsX4L+KL1kt9fqu/V5Pnp2xE7v8QVO\noow0IGnVPrTOc/IjsiYn1D7mtAhnZOOz3OZCEbZhrqB1G9SeAbhOUj9QakQ4\n0siEqOVUAEyKApU3SULk+cRDlmUiDkiN5XI1jwOhP/A3KDCzkq1NXLNFsmkX\nHnFSDUAP0aD7WrRnc4XjMjBSC+Y/2u9hh8f5ssaM4NUtVTBDcuO74WKlXSZs\n5lPv8lnW9Fj8mirucCxLkTL90LeNa5VuZRFhKto73M+PnhyBVMKsQ4CIGR2b\nG3NDVF2M6gFYJqAtNt15jXNugy0BalUcWog744w1mK2CuqqzTs2WlWuu13hW\nvmWi\r\n=syar\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"2a143bc79bb075c81aa748361a4a7fe91af0f4ad","scripts":{"test":"grunt test:all && node browserstack.js"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"},{"url":"http://www.gnu.org/licenses/gpl-2.0.html","type":"GPLv2"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"6.9.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"10.16.3","dependencies":{"jquery":">=1.5.2"},"_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.3.0","jsdom":"^16.4.0","mocha":"^8.1.1","sinon":"^9.0.3","puppeteer":"^5.2.1","browserify":"^16.5.2","http-server":"^0.12.3","xmlhttprequest":"^1.8.0","grunt-browserify":"^5.3.0","grunt-mocha-test":"^0.13.3","load-grunt-tasks":"^5.1.0","browserstack-runner":"^0.9.3","grunt-contrib-qunit":"^4.0.0","grunt-contrib-watch":"^1.1.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-jshint":"^2.1.0","grunt-contrib-uglify":"^5.0.0","grunt-contrib-connect":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.6.0_1598119238737_0.29221974269255857","host":"s3://npm-registry-packages"}},"2.6.1":{"name":"jquery-mockjax","version":"2.6.1","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"_id":"jquery-mockjax@2.6.1","maintainers":[{"name":"appendto","email":"github@appendto.com"},{"name":"jakerella","email":"jordan@jordankasper.com"},{"name":"dirkbonhomme","email":"dirk@bytelogic.be"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"16482c8d65a9c4ecfe172e7a110b58595ff130f8","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.6.1.tgz","fileCount":92,"integrity":"sha512-ZCjH3bgBhTt4dAIFx9PmCH+Ff03KqWanwnMCSC+DCmkjGCBB8+f0UiTFqEhkfD1S7ujCe7AgU6PwnLsd95y6bw==","signatures":[{"sig":"MEQCIEgy3DvY6Zuo+aV68RkWlhk1QYZRPVPVMMSsMEyHxqVXAiAlhnp9R7XqXjscA+W6sPbiRfMhK/1SOmDdNZFaLxmDzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1127874},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"f01014384cb1a536ab4b332ffc62b58afab09b4d","scripts":{"test":"grunt test:all && node browserstack.js"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"8.15.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"18.7.0","_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.6.1","jsdom":"^24.0.0","mocha":"^10.3.0","qunit":"^2.20.1","sinon":"^17.0.1","jquery":"^3.7.1","puppeteer":"^22.1.0","browserify":"^17.0.0","http-server":"^14.1.1","xmlhttprequest":"^1.8.0","grunt-browserify":"^6.0.0","grunt-mocha-test":"^0.13.3","load-grunt-tasks":"^5.1.0","browserstack-runner":"^0.9.4","grunt-contrib-qunit":"^8.0.1","grunt-contrib-watch":"^1.1.0","grunt-contrib-concat":"^2.1.0","grunt-contrib-jshint":"^3.2.0","grunt-contrib-uglify":"^5.2.2","grunt-contrib-connect":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.6.1_1708210621277_0.8031826218689944","host":"s3://npm-registry-packages"}},"2.7.0-beta.0":{"name":"jquery-mockjax","version":"2.7.0-beta.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"_id":"jquery-mockjax@2.7.0-beta.0","maintainers":[{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"e2be93d74799a5640e3d9e903bcfafd9bae0a9d4","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.7.0-beta.0.tgz","fileCount":93,"integrity":"sha512-qn/RJijeLj1GNeMLLAGkZG9sha5muKCoj/e61bRKjXJZ6xKypq5K0hW/qxfQ2xDgyj5KwIRcLEpAomOsLa+qTQ==","signatures":[{"sig":"MEUCIQD1AwXmJxFW906Juv11zfAi0s8HcZ8NZ+HlW8lDhDDDhAIgTvASVRq54E+n8k0Zvi9W9w+P4QLVxxbTiCc+qTSV9eA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1385962},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"204eb93796e721f6d248996bf0dd6e415b030384","scripts":{"test":"grunt test:all && node browserstack.js"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"8.15.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"18.7.0","_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.6.1","jsdom":"^24.0.0","mocha":"^10.3.0","qunit":"^2.20.1","sinon":"^17.0.1","jquery":"^3.7.1","puppeteer":"^22.1.0","browserify":"^17.0.0","http-server":"^14.1.1","xmlhttprequest":"^1.8.0","grunt-browserify":"^6.0.0","grunt-mocha-test":"^0.13.3","load-grunt-tasks":"^5.1.0","browserstack-runner":"^0.9.4","grunt-contrib-qunit":"^8.0.1","grunt-contrib-watch":"^1.1.0","grunt-contrib-concat":"^2.1.0","grunt-contrib-jshint":"^3.2.0","grunt-contrib-uglify":"^5.2.2","grunt-contrib-connect":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.7.0-beta.0_1725922584039_0.6079042858421178","host":"s3://npm-registry-packages"}},"2.7.0":{"name":"jquery-mockjax","version":"2.7.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"_id":"jquery-mockjax@2.7.0","maintainers":[{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"f3c0a3bcfce32c85d421728f4bfd05dbb0430dd5","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-2.7.0.tgz","fileCount":94,"integrity":"sha512-ZSRetfM6XhHRnHoD3rLkQ8g8aQb78guagKDp3DVokvlAWdu8YgMxY13ajmTv5ktOVW+G11nD84nx0d7Ot4Y7Yw==","signatures":[{"sig":"MEYCIQCJ9OCtIukIrG+Y4P+7rdo44SMluVhB67jawOXcHKzbaQIhAIYVT4s7uKBqXGgyQ7xXrYXo1DTR4d2fmpC++ylNqu7Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1386494},"main":"./src/jquery.mockjax.js","title":"jQuery Mockjax","gitHead":"de3d7b93ae6e11e201c3c3d423585fad7ad69724","scripts":{"test":"grunt test:all","build":"grunt build"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"licenses":[{"url":"http://opensource.org/licenses/MIT","type":"MIT"}],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"11.10.1","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"grunt":"^1.6.1","jsdom":"^24.0.0","mocha":"^10.3.0","qunit":"^2.20.1","sinon":"^17.0.1","jquery":"^4.0.0","puppeteer":"^22.1.0","browserify":"^17.0.0","http-server":"^14.1.1","xmlhttprequest":"^1.8.0","grunt-browserify":"^6.0.0","grunt-mocha-test":"^0.13.3","load-grunt-tasks":"^5.1.0","browserstack-runner":"^0.9.4","grunt-contrib-qunit":"^8.0.1","grunt-contrib-watch":"^1.1.0","grunt-contrib-concat":"^2.1.0","grunt-contrib-jshint":"^3.2.0","grunt-contrib-uglify":"^5.2.2","grunt-contrib-connect":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_2.7.0_1771974199924_0.26902441451953174","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"jquery-mockjax","version":"3.0.0","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"license":"MIT","_id":"jquery-mockjax@3.0.0","maintainers":[{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"cb1396211a78880016805c749368c2a1de61f4cf","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-3.0.0.tgz","fileCount":18,"integrity":"sha512-oCUwlqL1ZQFTKNEo+vjhVYtGlbgT6xq6BNhG6k3qDphTvJ/UL0LALlTKUvu1KZjVpD/3MLiVmKCkfCqfXapdZQ==","signatures":[{"sig":"MEYCIQDb/KWGOighZFRGCNh9VIoeST4aUINJUv/fCfFojwORhgIhAOMKkvoePMRnWe/W1RYYTVk3z2TMRBsXS0upNes8A8wu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266097},"main":"./dist/jquery.mockjax.js","title":"jQuery Mockjax","watch":{"build":{"delay":1500,"patterns":["src","webpack.config.mjs","webpack.custom-umd.mjs"],"extensions":"mjs,cjs,js"},"test:unit":{"delay":1500,"patterns":["src","test"],"extensions":"mjs,cjs,js,json,html"}},"module":"./src/attach.mjs","gitHead":"93ccdbc2bdb29b9ce7e692ae2ce7284084c42f84","scripts":{"lint":"npx eslint","test":"npm run test:unit","build":"npx webpack --mode production --config webpack.config.mjs","style":"npx prettier --write 'src/**/*.mjs'","coverage":"npx c8 npm run test:unit","lint:fix":"npx eslint --fix","test:all":"npm run test:unit && npm run test:integration:all && npm run test:nodejs && npm run test:requirejs","test:unit":"npx qunit --reporter ../../../../test/qunit-reporter.cjs test/unit/test-*","build:dist":"npm run style && npm run lint && npm run coverage && npm run build && npm run test:integration:all && npm run test:nodejs && npm run test:requirejs","watch:test":"npx npm-watch test:unit","style:check":"npx prettier --check 'src/**/*.mjs'","test:nodejs":"npx qunit --reporter ../../../../test/qunit-reporter.cjs test/nodejs/test-*","watch:build":"npx npm-watch build","test:requirejs":"node test/requirejs/runner.mjs","test:integration":"npm run test:integration:latest","test:browserstack":"node test/browserstack.mjs","test:integration:all":"node test/integration/runner.mjs all","test:integration:latest":"node test/integration/runner.mjs latest"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"11.9.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^11.0.0","jsdom":"^28.1.0","qunit":"^2.25.0","sinon":"^21.0.2","eslint":"^10.0.3","webpack":"^5.105.4","prettier":"^3.8.1","npm-watch":"^0.13.0","puppeteer":"^24.39.0","@eslint/js":"^10.0.1","http-server":"^14.1.1","webpack-cli":"^6.0.1","xmlhttprequest":"^1.8.0","browserstack-runner":"^0.9.4","eslint-plugin-jsdoc":"^62.8.0","jsdoc-tsimport-plugin":"^1.0.5","terser-webpack-plugin":"^5.4.0","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"jquery1":"npm:jquery@^1.12.4","jquery2":"npm:jquery@^2.2.4","jquery3":"npm:jquery@^3.7.1","jquery4":"npm:jquery@^4.0.0"},"optionalDependencies":{"requirejs":"^2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_3.0.0_1777411271927_0.6524495746206029","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"jquery-mockjax","version":"3.0.1","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"license":"MIT","_id":"jquery-mockjax@3.0.1","maintainers":[{"name":"jakerella","email":"jordan@jordankasper.com"}],"contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"homepage":"https://github.com/jakerella/jquery-mockjax","bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"url":"https://github.com/jakerella/jquery-mockjax","dist":{"shasum":"a7563fc3f00d97e82729443b47af95e468243e12","tarball":"https://registry.npmjs.org/jquery-mockjax/-/jquery-mockjax-3.0.1.tgz","fileCount":18,"integrity":"sha512-dY2w9/eRns/nBcK0L+ruHcadp/XEJ4JZX7HZKPZGBwRUgIaFDRXW/97OTNlPJsc9kGypdYTy8CIbdOs63jPtUQ==","signatures":[{"sig":"MEQCIFIMNjmRWvMK7TWlit4YTfM2JzNiyk78mRBWykMPquKOAiAEvf6opu1Xle7UB95aY1em/l6iETQiqRs4pE3qgfJ7eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266213},"main":"./dist/jquery.mockjax.js","title":"jQuery Mockjax","watch":{"build":{"delay":1500,"patterns":["src","webpack.config.mjs","webpack.custom-umd.mjs"],"extensions":"mjs,cjs,js"},"test:unit":{"delay":1500,"patterns":["src","test"],"extensions":"mjs,cjs,js,json,html"}},"module":"./src/attach.mjs","gitHead":"7c869b4bb158bbb72da41c7c0916df36d3a0c2a2","scripts":{"lint":"npx eslint","test":"npm run test:unit","build":"npx webpack --mode production --config webpack.config.mjs","style":"npx prettier --write 'src/**/*.mjs'","coverage":"npx c8 npm run test:unit","lint:fix":"npx eslint --fix","test:all":"npm run test:unit && npm run test:integration:all && npm run test:nodejs && npm run test:requirejs","test:unit":"npx qunit --reporter ../../../../test/qunit-reporter.cjs test/unit/test-*","build:dist":"npm run style && npm run lint && npm run coverage && npm run build && npm run test:integration:all && npm run test:nodejs && npm run test:requirejs","watch:test":"npx npm-watch test:unit","style:check":"npx prettier --check 'src/**/*.mjs'","test:nodejs":"npx qunit --reporter ../../../../test/qunit-reporter.cjs test/nodejs/test-*","watch:build":"npx npm-watch build","test:requirejs":"node test/requirejs/runner.mjs","test:integration":"npm run test:integration:latest","test:browserstack":"node test/browserstack.mjs","test:integration:all":"node test/integration/runner.mjs all","test:integration:latest":"node test/integration/runner.mjs latest"},"_npmUser":{"name":"jakerella","email":"jordan@jordankasper.com"},"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"_npmVersion":"11.14.0","description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","jsdom":"^28.1.0","qunit":"^2.25.0","sinon":"^21.0.2","eslint":"^10.0.3","webpack":"^5.105.4","prettier":"^3.8.1","npm-watch":"^0.13.0","puppeteer":"^24.39.0","@eslint/js":"^10.0.1","http-server":"^14.1.1","webpack-cli":"^6.0.1","xmlhttprequest":"^1.8.0","browserstack-runner":"^0.9.4","eslint-plugin-jsdoc":"^62.8.0","jsdoc-tsimport-plugin":"^1.0.5","terser-webpack-plugin":"^5.4.0","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"jquery1":"npm:jquery@^1.12.4","jquery2":"npm:jquery@^2.2.4","jquery3":"npm:jquery@^3.7.1","jquery4":"npm:jquery@^4.0.0"},"optionalDependencies":{"requirejs":"^2.3.8"},"_npmOperationalInternal":{"tmp":"tmp/jquery-mockjax_3.0.1_1778165422820_0.2776266470991562","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2014-04-17T08:19:28.238Z","modified":"2026-05-07T15:13:47.500Z","1.5.3":"2014-04-17T08:19:28.238Z","1.6.1":"2014-12-15T20:37:00.058Z","1.6.2":"2015-04-08T14:05:18.852Z","2.0.1":"2015-06-11T14:49:36.976Z","2.1.0":"2016-01-23T23:32:34.764Z","2.1.1":"2016-02-07T22:57:33.689Z","2.2.0":"2016-06-14T19:38:21.504Z","2.2.1":"2016-09-15T20:40:47.169Z","2.2.2":"2017-06-19T16:37:24.447Z","2.3.0":"2018-01-07T19:04:30.853Z","2.4.0":"2018-06-17T23:35:18.814Z","2.5.0":"2018-07-29T18:43:39.323Z","2.5.1":"2020-03-30T16:31:44.421Z","2.6.0":"2020-08-22T18:00:38.948Z","2.6.1":"2024-02-17T22:57:01.469Z","2.7.0-beta.0":"2024-09-09T22:56:24.282Z","2.7.0":"2026-02-24T23:03:20.141Z","3.0.0":"2026-04-28T21:21:12.058Z","3.0.1":"2026-05-07T14:50:23.008Z"},"bugs":{"url":"http://github.com/jakerella/jquery-mockjax/issues"},"author":{"url":"http://jordankasper.com","name":"Jordan Kasper"},"license":"MIT","homepage":"https://github.com/jakerella/jquery-mockjax","keywords":["ajax","mock","unit","testing","jquery-plugin","ecosystem:jquery"],"repository":{"url":"git+https://github.com/jakerella/jquery-mockjax.git","type":"git"},"description":"The jQuery Mockjax Plugin provides a simple and extremely flexible interface for mocking or simulating ajax requests and responses.","contributors":[{"name":"Doug Neiner"},{"name":"Jonathan Creamer"},{"url":"http://jdsharp.com","name":"Jonathan Sharp"}],"maintainers":[{"name":"jakerella","email":"jordan@jordankasper.com"}],"readme":"# jQuery Mockjax: Ajax request mocking\n\njQuery Mockjax provides robust HTTP request & response mocking during front end testing for the $.ajax() method.\n\nThere are some **major breaking changes in v3**, so if you need an older version, please check the [v2.x](https://github.com/jakerella/jquery-mockjax/tree/v2.x) branch or the list of [releases](https://github.com/jakerella/jquery-mockjax/tags) in GitHub.\n\n> Please note that this is a tool for **testing** your front end code without a server. It is not intended for use in a production environment!\n\n## Your first mock\n\nInclude the `jquery.mockjax.js` file in your tests, then before your test cases, register your HTTP mocks. For example, if you have an API endpoint at `/api/products` that returns an array of products for sale, you could mock that out like so:\n\n```javascript\n$.mockjax({\n  url: '/api/products',\n  responseText: [\n    { id: 13, name: 'rubber duck' },\n    { id: 42, name: 'house plant' }\n  ]\n})\n```\n\nNow, when your test harness runs your source code and it in turn runs `$.ajax('/api/products')`, the mock response will be provided to your application instead of hitting a live server!\n\n\n## Documentation Table of Contents\n\n* [Basic Usage](#basic-usage)\n  * [Core Principles](#basic-principles)\n  * [Public API Methods](#public-api-methods)\n  * [`MockHandler` Object](#mockhandler-object)\n  * [Global Mockjax Settings](#global-mockjax-settings)\n  * [`MockjaxRequestSettings` Object](#mockjaxrequestsettings-object)\n* [Detailed Request Matching](#detailed-request-matching)\n  * [Matching on the URL](#matching-on-the-url)\n  * [Matching on the Data](#matching-on-the-data)\n  * [Matching on the Request Headers](#matching-on-the-request-headers)\n  * [Matching on the HTTP Method](#matching-on-the-http-method)\n  * [Registering Multiple Handlers](#registering-multiple-handlers)\n* [Detailed Response Definition](#detailed-response-definition)\n  * [Inline Responses](#inline-responses)\n  * [Using a Proxy](#using-a-proxy)\n  * [Dynamic Response Functions](#dynamic-response-functions)\n    * [Capturing URL parameters](#capturing-url-parameters)\n* [Advanced Mocking Techniques](#advanced-mocking-techniques)\n  * [Simulating Response Time and Latency](#simulating-response-time-and-latency)\n  * [Simulating HTTP Response Statuses](#simulating-http-response-statuses)\n  * [Setting Additional HTTP Response Headers](#setting-additional-http-response-headers)\n  * [Dynamically Generating Mock Responses](#dynamically-generating-mock-responses)\n  * [Forced Simulation of Server Timeouts](#forced-simulation-of-server-timeouts)\n  * [Using Other Data Types](#using-other-data-types)\n    * [Mocking JSONP](#mocking-jsonp)\n  * [Performing Actions After Request Completion](#performing-actions-after-request-completion)\n  * [Setting a Global URL Namespace](#setting-a-global-url-namespace)\n  * [Globally Defining Match Order](#globally-defining-match-order)\n  * [Managing Mockjax Data](#managing-mockjax-data)\n* [Miscellaneous Information](#miscellaneous-information)\n  * [About Mockjax and Its History](#about-mockjax-and-its-history)\n  * [jQuery Version Support](#jquery-version-support)\n  * [Browsers Tested](#browsers-tested)\n  * [Using Mockjax in Other Ways](#using-mockjax-in-other-ways)\n  * [Logging](#logging)\n    * [Implement a custom logger](#implement-a-custom-logger)\n  * [Release History](#release-history)\n  * [License](#license)\n  * [Contributing](#contributing)\n\n\n## Basic Usage\n\n### Core Principles\n\nThis library is intended to help test front end code by mocking out your back end server. So long as every HTTP request your front end code makes is via `$.ajax()`, you can mock out your entire back end using Mockjax.\n\nWe accomplish this by replacing the stock jQuery `ajax` method with our own version, intercepting every HTTP request and comparing it to the mock handlers you have registered beforehand. If there is a match, we send back your mock response instead of executing a real XMLHTTPRequest. Don't worry, we replicate all of the functionality of an ajax call, so your callbacks will all still execute as expected.\n\nLet's say you have some code in your application that calls the back end to retrieve the current set of products for sale when someone clicks on a button.\n\n```javascript\nfunction getProducts() {\n  $.ajax('/api/items', {\n    dataType: 'json',\n    error: (err) => { showErrorMessage(err) },\n    success: (data) => {\n      data.forEach(item => {\n        $('ul.products').append(`<li id='item-${item.id}'>${item.name}</li>`)\n      })\n    }\n  })\n}\n$('button.get-products').click(getProducts)\n```\n\nNow we want to test the `getProducts` function in isolation. The problem is we would need to spin up a whole API server just to test this out. Instead, our front end engineer can write a test themself using Mockjax to create a fake API server just for the test.\n\nLet's assume they're using [QUnit](https://qunitjs.com/) as the testing framework. They could create the test like so:\n\n```javascript\nQUnit.test('Load products into page', function(assert) {\n  const done = assert.async()\n\n  $('ul.products').html('')\n\n  $.mockjax({\n    url: '/api/items',\n    responseText: [{ id: 13, name: 'rubber duck' }, { id: 42, name: 'house plant' }],\n    onAfterSuccess: () => {\n      const items = $('ul.products li')\n      assert.equal(items.length, 2, 'Both items were added')\n      assert.equal(item[0].text(), 'rubber duck', 'The rubber duck is the first item')\n      assert.equal(item[0].attr('id'), 'item-13', 'The rubber duck has the correct id attribute')\n      done()\n    }\n  })\n\n  getProducts()\n})\n```\n\nIn the code above, we first clear out any HTML elements inside the `<ul>` with the class of \"products\" so that we're starting from a clean slate. Then we create our mock handler. Notice that we set the `url`, which will match our `$.ajax()` call in the application code. We then set the `responseText` that we want to be returned. It's okay that it's an object, but we could also pass in a JSON string.\n\nNext, we set our `onAfterSuccess` callback. This is where we will perform our test assertions. This callback will fire _after_ the `success` callback in our application source code, and with the same arguments. There are other ways to test this, for example, the `getProducts` function could return the Deferred object (a jQuery Promise) so that our test could hook into that.\n\nLastly, we call the `getProducts()` function to initiate our test. Note that we call QUnit's `done` callback inside the `onAfterSuccess` so that the test harness knows when the test is complete.\n\n### Public API Methods\n\nMockjax has one primary interface: the `$.mockjax()` method which is added to the `window` object's jQuery instance automatically. In addition, Mockjax **overwrites `$.ajax()`** with its own version, so in essence, every time you call `$.ajax()` you are calling a Mockjax interface. There are a number of other public methods, all documented below.\n\nNote that the main data types (and method options) are listed below the method descriptions.\n\n`{UUID|Array<UUID>} $.mockjax({MockHandler|Function|Array<MockHandler|Function>} options)`\n\nRegisters one or more new mock ajax handlers and returns the handler's UUID. If an array is provided, an array of UUID's is returned. Note that at least one matching mechanism must be provided in the options (`url`, `method`, `requestHeaders`, or `data`) if you provide an object. If you provide a function, it will be called on every `$.ajax()` request and must return an object representing a `MockHandler` if a match occurs, and `null` if not.\n\nSee the [MockHandler](#MockHandler-object) section below for all options and properties of a Mockjax handler.\n\n`{Array<MockHandler>} $.mockjax.handlers({?Array<string>} uuids)`\n\nReturns an array of mock handler object _clones_ for the provided `UUIDs`, or _all_ mock handlers if no array is provided. Each one will have a `clear()` method on it for easy clean up. Note that since these are cloned objects, altering them will not change the operation of request mocking and response generation. If you want to alter a mock handler, first clear it using `$.mockjax.clearById()`, then register the new handler.\n\nSee the [MockHandler](#MockHandler-Object) section below for all options and properties of a Mockjax handler.\n\n`DEPRECATED {MockHandler} $.mockjax.handler({string} uuid)`\n\nUse `handlers([UUID])` instead. As of v3.x, this method is a passthrough to `handlers()` above.\n\n`{number} $.mockjax.clearById({string} uuid)`\n\nUnregisters a single mock handler matching the provided UUID. If the UUID is not that of an existing handler, then nothing happens. Returns the count of mock handlers cleared (in this case 0 or 1). This will also clear any retained ajax calls that have been mocked using this handler.\n\n`{number} $.mockjax.clearByUrl({string|RegExp} url)`\n\nUnregisters any mock handlers matching the provided URL. If the argument is a string, it will only match mock handlers that have a `url` property that exactly matches the argument. If the provided URL is a regular expression _and_ the mock handler `url` property is a regular expression, then this code will compare the String versions of those regular expressions to determine a match. If the provided URL is a regular expression and the mock handler `url` property is a string, this code will execute the provided RegExp on that mock handler's `url` property to determine a match. Returns the count of mock handlers cleared (which may be 0). This will also clear any retained ajax calls that have been mocked using this handler.\n\n`{number} $.mockjax.clearAll()`\n\nUnregisters **all** mock handlers and returns the count of mock handlers cleared. This will also clear any _mocked_, retained ajax calls (but will retain non-mocked ajax calls).\n\n`DEPRECATED {number} $.mockjax.clear({?string | RegExp} mechanism)`\n\nUse the appropriate `clearByXx()` method above. As of v3.x, this method will attempt to determine what to clear using the provided \"mechanism\" and call the appropriate method. If no mechanism is provided, this method will call `clearAll()`. If the mechanism matches one of the known mock handler IDs, that one handler will be cleared. Otherwise this method will assume this is a `clearByUrl()` and pass the argument through to that method.\n\n`{Array<MockHandler>} $.mockjax.unfiredHandlers()`\n\nReturns an array of mock handler object _clones_ that have **not** yet been matched to a live `$.ajax()` request. Each one will have a `clear()` method on it for easy clean up. Note that since these are cloned objects, altering them will not change the operation of request mocking and response generation.\n\nSee the [MockHandler](#MockHandler-object) section below for all options and properties of a Mockjax handler.\n\n`{Array<MockjaxRequestSettings>} $.mockjax.mockedAjaxCalls()`\n\nReturns an array of all ajax call settings that have been mocked by Mockjax. Each entry will be a `MockjaxRequestSettings` Object, which a wrapper around jQuery's [ajax settings object](https://api.jquery.com/jQuery.ajax/). Note that if the global `retainAjaxCalls` setting is set to a positive integer, only that many _total ajax calls_ (mocked or unmocked) will be retained, and Mockjax operates a first-in-first-out (FIFO) cache of these. If `retainAjaxCalls` is set to `0`, no calls will be retained and this method will always return an empty array.\n\nSee the [MockjaxRequestSettings](#MockjaxRequestSettings-Object) section below for more info.\n\n`{Array<MockjaxRequestSettings>} $.mockjax.unmockedAjaxCalls()`\n\nReturns an array of all ajax call settings that have **not been mocked** by Mockjax. Each entry will be a `MockjaxRequestSettings` Object, which a wrapper around jQuery's [ajax settings object](https://api.jquery.com/jQuery.ajax/). Note that if the global `retainAjaxCalls` setting is set to a positive integer, only that many _total ajax calls_ (mocked or unmocked) will be retained, and Mockjax operates a first-in-first-out (FIFO) cache of these. If `retainAjaxCalls` is set to `0`, no calls will be retained and this method will always return an empty array.\n\nSee the [MockjaxRequestSettings](#MockjaxRequestSettings-Object) section below for more info.\n\n`{number} $.mockjax.clearRetainedAjaxCalls({?Array<string>} mockUUIDs)`\n\nRemove any retained ajax calls that have been mocked by the provided mock handler UUIDs. If no array is provided, _all_ retained ajax calls will be removed. The number of removed ajax calls will be returned.\n\n### `MockHandler` Object\n\nThis is the main object used to do request matching and provide response details for a mock. It also contains a few internal properties. Other than the internal properties at the bottom of this section, all of these are options that can be provided when registering a new mock handler.\n\n#### Options Used for Matching (one or more must be provided)\n\nIf more than one of these is provided **all** of them must match to mock out an ajax request, but at least one is required. (Note that `namespace` does not match on its own.)\n\n* `url {string | RegExp}` Specifies the url of requests to match to this mock. If it is a string and contains any asterisks (`*`), they will be treated as a wildcard for any valid URL characters. Note that this is NOT a full glob pattern, just a simple wildcard replacement. If it is a regular expression, it will be executed against the request URL.\n* `namespace {string}` Acts as a prefix for request URLs during matching on this handler (and thus this only works in conjunction with a `url` matching property). This will override the global `namespace` setting for this handler only. Making this `null` will remove the global `namespace` for this handler only.\n* `method {string}` Specify what HTTP method to match for this mock, case-insensitive.\n* `type {string}` DEPRECATED, use `method` instead.\n* `requestHeaders {Object<string, string}` Specifies request headers to match to an ajax request. A request with _more_ headers will still match this mock so long as all headers in the registered mock match. Note that header names are case-insensitive.\n* `data {Object<string, *> | function}` Specifies data parameters to match to an ajax request. A request with _more_ data params will still match this mock so long as all data properties in the registered mock match. You can also pass in a function which will be executed when any request is made. The function will be given the ajax data and must return `true` or `false`.\n\n#### Options Used for Response Simulation:\n\nNote that any response options not provided here will be gathered from the global `mockjaxSettings` object as needed.\n\n* `status {number | Array<number>}` An integer (or array of integers) between 100 and 599 that specifies the server HTTP status code to send back in the response. If an array, a random selection is made for each matching request.\n* `statusText {string | Array<string>` Specifies the server response status description. If an array, the `status` property must also be an array of the same size and a corresponding `statusText` will be chosen when a random `status` is chosen.\n* `responseText {string | object}` Specifies the text, or an object literal that will be \"stringified\", for the mock response.\n* `responseXML {string | Document}` Specifies the mock XML response (as a string or Document node) for the request. Note that this is only used when the `dataType` for the ajax request is `xml`.\n* `response {function}` A function to call to modify or generate the response properties. It will be sent 2 arguments: the request settings and a callback function. In addition, the context for the function (the value of `this`) will be the mock handler. This function **must execute the callback** provided after updating the mock handler with the appropriate response fields such as `status`, `responseText`, etc. Note that this function does not _override_ the other response properties. It provides the developer a chance to alter them based on the specific request settings.\n* `responseHeaders {Object<string, string>}` Headers to be added to the simulated response for matched requests.\n* `headers`: [Object] DEPRECATED Use `responseHeaders`\n* `proxy {string}` Specifies a URL to a resource, the contents of which will be used as the `responseText` for the mocked request.\n* `proxyMethod {string}` Specifies the HTTP method to use to retrieve the proxy data.\n* `proxyType {string}` DEPRECATED USe `proxyMethod`\n* `responseTime {number}` An integer that specifies a simulated network / server latency (in milliseconds). Setting this to `0` will minimize the simulated latency, but keep the call asynchronous. Note that this setting is _ignored_ for non-asynchronous calls - that is, calls where `async: false` is provided to `$.ajax()`.\n* `isTimeout {boolean}` Determines whether or not the mock will force a timeout error on the ajax request.\n* `contentType {string}` Specifies the content type for the response (otherwise this is automatically determined, if possible).\n* `urlParams {Array<string>}` If provided - and the `url` property is a regular expression - matched group values from the expression will be assigned to an object called `urlParams` in the request settings with each property named by the strings in this array, and the values of those properties matching the group matches in the URL regular expression. This can be combined with a dynamic `response` function to change the response based on the URL path.\n* `lastModified {String}` A date string specifying the mocked \"last-modified\" time for the request. This is used internally by jQuery to determine if the requested data is new since the last request, and thus caching.\n* `etag {string}` Specifies a unique identifier referencing a specific version of the requested data. This is used internally by jQuery to determine if the requested data is new since the last request. (see [HTTP_ETag](http://en.wikipedia.org/wiki/HTTP_ETag))\n\n#### Optional Callback Methods\n\nSometimes you need to perform assertions or other actions after the source code ajax request is complete, but in situations where the source code does not return a Promise or provide a callback argument. For these situations, you can use the callbacks below.\n\n* `onAfterSuccess {function}` Will be called after the original ajax call's \"success\" callback has completed, and with the same arguments.\n* `onAfterError {function}` Will be called after the original ajax call's \"error\" callback has completed, and with the same arguments.\n* `onAfterComplete {function}` Will be called after the original ajax call's \"complete\" callback has completed, and with the same arguments.\n\n#### Mockjax Properties and Methods\n\nThe following properties (and a method) are added by Mockjax. You should not alter them, but obviously may find them helpful.\n\n* `id {string}` A UUID for this handler, auto-generated and assigned by Mockjax after registration.\n* `fired {boolean}` Whether or not this handler has been matched to a real ajax call.\n* `registeredAt {number}` The timestamp when this handler was registered with Mockjax.\n* `clear {function}` When you call `handlers()` or `unfiredHandlers()` Mockjax will add this method to the returned (cloned) handler object so that you can clear that one handler easily.\n\n\n### Global Mockjax Settings\n\nThe global Mockjax settings include all \"response simulation\" options from the [`MockHandler` object](#MockHandler-Object), plus some additional settings found below. For the response simulation settings, we only provide the default values, refer to the section above for descriptions. To overwrite a particular setting, you can call `$.mockjax.getSettings()` and then set the value directly. (Note that the `$.mockjaxSettings` object is still there, but should be avoided in favor of `getSettings()`.)\n\n```javascript\n$.getSettings().responseTime = 200  // overwriting the default global setting\n```\n\n#### Response Simulation Defaults\n\n* `status` defaults to `200`\n* `statusText` defaults to `\"OK\"`\n* `responseTime` defaults to `500`\n* `isTimeout` defaults to `false`\n* `contentType` defaults to `\"text/plain\"`\n* `response` defaults to `null`\n* `responseText` defaults to `\"\"`\n* `responseXML` defaults to `\"\"`\n* `responseHeaders` defaults to `{}`\n* `proxy` defaults to `null`\n* `proxyMethod` defaults to `null`\n* `lastModified` defaults to time of request\n* `etag` defaults to `\"IJF@H#@923uf8023hFO@I#H#\"`\n\n#### Other global settings\n\nThese settings affect the global operation of Mockjax. With the exception of `namespace`, none of them can be overridden by a single mock handler.\n\n* `namespace {?string}` A global URL namespace which will prefix all mock handler URLs. (default: `null`)\n* `throwUnmocked {boolean}` Should Mockjax throw an `Error` if an ajax request goes unmocked? (default: `false`)\n* `retainAjaxCalls {number}` How many ajax call settings should be retained? (default: `-1`, or all of them)\n* `matchInRegistrationOrder {boolean}` Essentially, should Mockjax select the first mock handler a request matches to? Switch this to `false` to reverse the order. (default: `true`)\n* `followRedirects {boolean}` Should Mockjax follow 3XX status code redirects? (default: `true`)\n* `logLevel {number}` How much to log to the console (default: `2`, set to `-1` to log nothing)\n* `logger {Object<string, function>}` An object that has `debug`, `log`, `info`, `warn`, and `error` methods for handling log messages. \n\n\n### `MockjaxRequestSettings` Object\n\nWhenever you receive the settings for the original ajax request, you will actually receive a Mockjax wrapper for those settings. This wrapper will have three additional properties on it (see below), but otherwise will be the same as [jQuery's ajax settings object](https://api.jquery.com/jQuery.ajax/).\n\n* `mocked {boolean}` Whether or not this ajax call was mocked.\n* `mockHandlerId {?string}` If this call was mocked, this will be the UUID of the matching mock handler, otherwise it will be `null`.\n* `timestamp {number}` The timestamp when this ajax call was initiated.\n\n\n## Detailed Request Matching\n\nMockjax can match requests using their URL, request data, HTTP method, or request headers - or any combination of these. The library is able to handle and parse `Text`, `HTML`, `JSON`, `JSONP`, `Script` and `XML` data types, allowing you to mock many different types of ajax calls. And there is always the dynamic request matching (and response generation) mechanism.\n\n### Matching on the URL\n\n```javascript\n$.mockjax({\n  url: \"/api/foo/bar\"\n})\n```\n\n> Only matches the exact URL: \"/api/foo/bar\"\n\n#### Using a Wildcard\n\nUsing the `*` as a wildcard will match any valid URL character:\n\n```javascript\n$.mockjax({\n  url: \"/api/user/*\"\n})\n```\n\n> Matches any URL path under \"/api/user/\" such as \"/api/user/13\" or \"/api/user/13/edit\" or \"/api/user/jordan\". It will NOT match the base path (before the wildcard): \"/api/user/\"\n\n#### Using a Regular Expression\n\n```javascript\n$.mockjax({\n  url: /^\\/api\\/(author|book)\\/\\d+$/i\n})\n```\n\n> Matches \"/api/author/42\" or \"/api/book/13\" (or any other number)\n\n### Matching on the Data\n\nYou can also match against the `data` option of the ajax call:\n\n```javascript\n$.mockjax({\n  data: { action: \"foo\" }\n})\n\n$.ajax(\"/api\", {\n  method: \"POST\",\n  data: { action: \"foo\" },\n  ...\n})\n```\n\nThe mock above will match if all of the _mock_ data attributes exist. It doesn't matter if there are more data attributes in the actual request. For example:\n\n```javascript\n// This ajax call will still match the mock above\n$.ajax(\"/api\", {\n  method: \"POST\",\n  data: { user: 123, action: \"foo\", anotherField: \"batbaz\" },\n  ...\n})\n```\n\nFor `GET` requests, the `data` attribute is converted to a query string, but Mockjax will work either way:\n\n```javascript\n$.mockjax({\n  data: { foo: \"bar\", bat: \"baz\" }\n})\n\n$.ajax({\n  url: '/api/query',\n  data: 'foo=bar&bat=baz'  // Matched!\n})\n```\n\nThat said, if the query data in the ajax call is placed in the `url` directly, then the `data` option in the mock handler will not match it:\n\n```javascript\n$.mockjax({\n  data: { foo: 'bar' }  // NO MATCH for ajax call below\n})\n\n$.ajax({\n  url: '/api/query?foo=bar'\n})\n```\n\nIn order to match query data in the `url` of the ajax call, you need to use a URL matcher in your mock handler:\n\n```javascript\n$.mockjax({\n  url: '/api/query?foo=bar'  // Will match\n})\n```\n\nYou could also use a wildcard to only match the query string:\n\n```javascript\n$.mockjax({\n  url: '*?foo=bar'  // Will match\n})\n```\n\n#### Using a Data Matcher Function\n\nThe data option may be a custom matching function returning `true` of `false` whether the data is expected or not:\n\n```javascript\n$.mockjax({\n  data: function(data) {\n    return data.foo === \"bar\" && Number.isInteger(data.count) && data.count > 0\n  }\n})\n```\n\nYou can use the data function of the mock as a place for assertions. Return `true` and let a testing framework of choice do the rest:\n\n```javascript\nconst expected = { foo: \"bar\", count: 3 }\n$.mockjax({\n  data: function (data) {\n    assert.deepEqual(data, expected)  // QUnit example\n    return true\n  }\n})\n```\n\n### Matching on the Request Headers\n\nYou can also match on the headers in the request:\n\n```javascript\n$.mockjax({\n  requestHeaders: {\n    Authorization: 'user-api-key'  // \"authorization\" also works here\n  },\n  responseText: 'You are authorized!'\n})\n```\n\nNote that request headers must be simple objects with string keys and string values. Also, similar to the data matching option, only the headers specified in the _mock_ must match. Additional headers in the request may be present, but will be ignored.\n\n> Request header **names** are treated as case-insensitive, but not the values!\n\n### Matching on the HTTP Method\n\nYou can match ajax requests based on the HTTP method used as well, although you likely want to combine that with one of the other three methods (see below).\n\n```javascript\n$.mockjax({\n  method: 'POST'\n})\n```\n\nThe mock handler above would match **all** HTTP `POST` requests (which likely isn't what you want to do).\n\n### Matching on Multiple Elements\n\nIn many cases you will want to match on multiple aspects of the ajax call.\n\n```javascript\n// match only GET requests to URL \"/api/user/13\" (or similar URLs)\n$.mockjax({\n  url: /\\/api\\/user\\/\\d+/,\n  method: 'GET'\n})\n```\n\n```javascript\n// match a POST request to URL \"/api/user\" when the username is \"jakerella\"\n$.mockjax({\n  url: '/api/user',\n  method: 'POST',\n  data: { username: \"jakerella\", name: \"jordan\", role: \"maintainer\" }\n})\n```\n\n```javascript\n// match DELETE requests to \"/api/*\" endpoints with a valid API key\n$.mockjax({\n  url: '/api/*',\n  method: 'DELETE',\n  requestHeaders: { Authorization: \"my-api-key\" }\n})\n```\n\n### Registering Multiple Handlers\n\nSince version 2.2 you can register several mock handlers at once by providing an array to the primary `$.mockjax([...])` method:\n\n```javascript\nconst handlerUUIDs = $.mockjax([\n  {url: '/api/users', method: 'GET', responseText: 'the user list...'},\n  {url: '/api/user', method: 'POST', data: { ... }, responseText: 'a new user'}\n])\n```\n\n## Detailed Response Definition\n\nThere are two many portions of a mock handler definition: the [matching criteria](#detailed-request-matching) (described above) and the response fields, described in this section. The two main options you will be dealing with are `responseText` and `responseXML`. These two fields tell Mockjax what to return when a request is matched. There are three different patterns for specifying the response: Inline, Proxy, and as a Function.\n\n### Inline Responses\n\nA simple text response might look like this:\n\n```javascript\n$.mockjax({\n  url: \"/api/time\",\n  method: \"GET\",\n  responseText: \"The time is one o'clock in the afternoon.\"\n})\n```\n\nIn other words, any time a `GET` ajax request is sent to \"/api/time\", Mockjax will intercept it and instead of calling the server, it will respond with the `responseText` string above. Your jQuery success handler would then receive that response and keep processing as if it had hit the server.\n\nYou can put JavaScript objects in the `responsetext` field (despite its name) and Mockjax will ensure it gets stringified and sent to the calling ajax code correctly:\n\n```javascript\n$.mockjax({\n  url: \"/restful/api\",\n  responseText: { \"foo\": \"bar\" }\n})\n```\n\nThe `responseXML` is similar: you can either pass in a string of XML text or an actual `Document` object. Mockjax will send it to your source code appropriately.\n\n```javascript\n$.mockjax({\n  url: \"/restful/api\",\n  responseXML: \"<document><quote>Hello world!</quote></document>\"\n});\n```\n\nAs you might imagine, if you have a significant amount of data being mocked, this process becomes unwieldy. So that brings us to the next pattern: the proxy.\n\n### Using a Proxy\n\nIn the example below, Mockjax will intercept `GET` requests for \"/api/users\", retrieve the data from a live server running at: \"/mocks/user-data.json\", and return the contents of that file as if it came from \"/api/users\".\n\n```javascript\n$.mockjax({\n  url: \"/api/users\",\n  method: \"GET\",\n  proxy: \"/mocks/user-data.json\"\n})\n```\n\nThe \"/mocks/user-data.json file can have any valid JSON content you want, and allows you to separate and reuse that mock data.\n\nIt doesn't have to be a static file, either. In the example below, Mockjax will intercept `POST` requests to \"/api/user\" and then make a different POST request (presumably a live request) to a test server to get the mock data. Note that the `data` option in the mock \nhandler here will get passed through to the proxy endpoint for you to use in determining what mock data to send back.\n\n```javascript\n$.mockjax({\n  url: \"/api/user\",\n  method: \"POST\",\n  proxy: \"https://mocks.testserver.local/user/data\",\n  proxyMethod: \"POST\",\n  data: { username: \"jakerella\", name: \"jordan\", role: \"maintainer\" }\n})\n```\n\n> Note: If you're testing your code with a poxy, you likely need to run a local web server for the tests. Simply loading `mocks/user-data.json` from the file system may result in the proxy file not being loaded correctly. We recommend using something like the [`http-server` npm module](https://www.npmjs.com/package/http-server).\n\n### Dynamic Response Functions\n\nIn the final response pattern, we define a function as the `response` option on our mock handler. That function will receive the entire ajax settings object as its first argument and its context (the value of `this`) will be the mock handler. The function should set the `responseText` or `responseXML` property as needed (and any other response options).\n\n```javascript\n$.mockjax({\n  url: \"/api/user\",\n  method: \"POST\",\n  data: { username: \"jakerella\", name: \"jordan\", role: \"maintainer\" },\n  response: function(settings) {\n    if (!settings.data.username) {\n      this.status = 400\n      this.responseText = { error: \"Please provide a username\" }\n    } else {\n      this.status = 201\n      this.responseText = { id: \"13\", username: \"jakerella\" }\n    }\n  }\n})\n```\n\nThe default version of the `repsonse` function is synchronous; however, if you specify a second parameter, Mockjax will provide you an asynchronous callback function to execute when your response handler is done.\n\n```javascript\n$.mockjax({\n  url: \"/api/user\",\n  method: \"POST\",\n  data: { username: \"jakerella\", name: \"jordan\", role: \"maintainer\" },\n  response: function(settings, done) {\n    const handler = this\n    addMockUser(settings.username)\n      .then((data) => {\n        handler.status = 201\n        handler.responseText = data\n        done()\n      })\n  }\n})\n```\n\n> Note that because the `response` function is given the mockHandler as its context, you **cannot use an arrow function** here. Arrow functions will not have `this` defined.\n\n#### Capturing URL parameters\n\nYou easily capture named URL parameters for use in the `response` function versus having to extract that data yourself. To do so, use a regular expression for your URL matcher, and provide a `urlParams` array to indicate, ordinally, the names of the parameters that will be captured.\n\n```javascript\n$.mockjax({\n  url: /\\/user\\/([\\d]+)\\/book\\/(\\w+)/,\n  method: \"GET\",\n  urlParams: [\"authorID\", \"bookTitle\"],\n  response: async function (settings, done) {\n    const authorData = await getAuthorData(settings.urlParams.authorID)\n    const bookData = await getBookData(settings.urlParams.bookTitle)\n    this.responseText = {\n      author: authorData,\n      book: bookData\n    }\n    done()\n  }\n})\n```\n\n## Advanced Mocking Techniques\n\n### Simulating Response Time and Latency\n\nSimulating network and server latency for a mock is as simple as adding a `responseTime` property to your mock definition:\n\n```javascript\n$.mockjax({\n  url: \"/api/time\",\n  responseTime: 750,\n  responseText: \"A delayed response\"\n})\n```\n\nYou can also use a range for `responseTime` to randomize latency:\n\n```javascript\n$.mockjax({\n  url: \"/api/time\",\n  responseTime: [500, 1500],\n  responseText: \"A randomly delayed response\"\n})\n```\n\n### Simulating HTTP Response Statuses\n\nAs you;ve seen, you can simulate different response statuses other than 200 (the default for Mockjax) by simply adding a `status` property:\n\n```javascript\n$.mockjax({\n  url: \"/api/oops\",\n  status: 500,\n  responseText: \"There was an error\"\n})\n```\n\nBut you can also provide an array of possible response statuses and have Mockjax randomly select one at the time of interception:\n\n```javascript\n$.mockjax({\n  url: \"/api/errors\",\n  status: [400, 401, 403, 404]\n})\n\n// Randomly fail (with a preference towards success)\n$.mockjax({\n  url: \"/api/random\",\n  status: [200, 400, 200, 500, 200]\n})\n```\n\nThese forced error status codes will be handled just as if the server had returned the error. That is, the `error` callback on your `$.ajax()` call will get executed with the proper arguments.\n\n### Setting Additional HTTP Response Headers\n\nAdditional HTTP Response Headers may be provided by setting key-value pairs in the `responseHeaders` option of the mock handler:\n\n```javascript\n$.mockjax({\n  url: \"/api/hello\",\n  responseText: \"hello world\",\n  headers: {\n    \"X-Powered-By\": \"Mockjax\"\n  }\n})\n```\n\n### Dynamically Generating Mock Definitions\n\nIf all of your ajax calls are based upon a complex URL schema, you can use Mockjax's dynamic mocking ability to specify whether or not to match any single request. Your function must either return a mock handler object with various response options filled in, or `null`. If you return `null`, Mockjax will keep processing other mock handlers looking for a match, or allow the ajax call to proceed if no match is found. Below is an example that rewrites ajax requests to \"/api/data/\" sub-paths to proxy to static mocks:\n\n```javascript\n$.mockjax(function(settings) {\n  const [_, entity, id] = settings.url.match(/\\/api\\/data\\/([^\\/]+)\\/?(\\d+)?$/)\n  if (settings.method.toLowerCase() === 'get') {\n    if (id) {\n      return { status: 200, proxy: `/mocks/${entity}.json` }\n    } else {\n      return { status: 200, proxy: `/mocks/${entity}-${id}.json` }\n    }\n  } else if (settings.method.toLowerCase() === 'delete' && id) {\n    return { status: 200, responseText: { id, message: `${entity} was deleted` } }\n  }\n  return null\n})\n```\n\n> Note that your mock definition handler function is passed in the original ajax request settings from jQuery, so you can match on the request data, headers, or any other component of the request.\n\n### Forced Simulation of Server Timeouts\n\nBecause of the way Mockjax was implemented, it takes advantage of jQuery's internal timeout handling for requests. But if you'd like to force a timeout for a request you can do so by setting the `isTimeout` property to true:\n\n```javascript\n$.mockjax({\n  url: '/api/timeout',\n  responseTime: 1000,\n  isTimeout: true\n})\n```\n\n### Using Other Data Types\n\nMany of the examples above mock out a `JSON` response. You can mock other data types as shown below.\n\n```javascript\n$.mockjax({\n  url: \"/some/xml\",\n  dataType: \"xml\",\n  responseXML: \"<document><say>Hello world XML</say></document>\" // this could also be a proper Document object\n})\n```\n\n```javascript\n$.mockjax({\n  url: \"/some/webservice\",\n  dataType: \"html\",\n  responseText: \"<div>Hello there</div>\"\n})\n```\n\n#### Mocking JSONP\n\nAlthough JSONP is not as popular as it used to be, there are many legacy applications that still use it. You can use Mockjax to mock out those requests. Let's assume you have a JSONP call that expects to hit a callback in the local window like this:\n\n```javascript\nwindow.__jsonpCallback = function(result) {\n  console.log(result)\n  // do something with the result\n}\n```\n\nAnd your jQuery ajax call might look something like this:\n\n```javascript\n$.ajax({\n  url: '/jsonp-service?callback=?',\n  jsonpCallback: '__jsonpCallback',\n  dataType: 'jsonp',\n  ...\n})\n```\n\nThen you could mock out that ajax call like so:\n\n```javascript\n$.mockjax({\n  url: '/jsonp*',\n  dataType:'jsonp',\n  contentType: 'text/json',\n  responseText:{\n    success:true,\n    id: 12345\n  }\n})\n```\n\nYou could even hit a mock JSONP service using a proxy:\n\n```javascript\n$.mockjax({\n  url: '/jsonp*',\n  contentType: 'text/json',\n  proxy: 'proxies/jsonp-script.js'\n})\n```\n\nThen in your proxy JSONP script you would have:\n\n```javascript\n__jsonpCallback({ success: true, id: 12345 })\n```\n\n### Performing Actions After Request Completion\n\nIf you need to perform some actions after an ajax call has been mocked (and the source code as completed its callack), you can use one of the `onAfterSuccess`, `onAfterError`, and `onAfterComplete` options. For example, to fire a method when a request completes (either successfully or not):\n\n```javascript\n$.mockjax({\n  url: \"/api/end/point\",\n  onAfterComplete: (xhr) => {\n    // do any required cleanup\n  }\n})\n```\n\n> These `onAfter` callbacks will receive the same arguments that the original callback in your source code would receive.\n\n### Setting a Global URL Namespace\n\nThe namespace option in `$.mockjaxSettings` allows you to apply a prefix to all of your mock handler URLs. For example:\n\n```javascript\n$.mockjaxSettings.namespace = \"/api/v1\"\n```\n\nNow, the following mock handler will match \"/api/v1/rest\" and _not_ simply \"/rest\":\n\n```javascript\n$.mockjax({\n  url: \"/rest\"\n})\n```\n\nThis works with RegExp `url` definitions as well. In the example below, the `^` in the regex, which normally defines the beginning of the string, will be replaced with the global namespace.\n\n```javascript\n$.mockjax({\n  url: /^\\/rest$/\n})\n```\n\nThe global namespace option can also be overwritten on any single mock handler:\n\n```javascript\n$.mockjax({\n  url: \"/user\",  // This now matches \"/user\" only, NOT \"/api/v1/user\"\n  namespace: null\n})\n```\n\n> Note that the `namespace` prefix **does not apply to proxies**.\n\n### Globally Defining Match Order\n\nBy default, Mockjax matches requests in registration order: Mockjax considers the handlers registered first before handlers registered last. To reverse this behavior:\n\n```javascript\n$.mockjaxSettings.matchInRegistrationOrder = false\n```\n\nSetting `matchInRegistrationOrder` to `false` lets you override previously defined handlers. Suppose you had:\n\n```javascript\n$.mockjax({\n  url: \"/api/greeting\",\n  responseText: \"hello\"\n})\n$.mockjax({\n  url: \"/api/greeting\",\n  responseText: \"buhbye\"\n})\n```\n\nThe default behavior is that Mockjax returns `\"hello\"`, but with `matchInRegistrationOrder`\nset to `false`, Mockjax would return `\"buhbye\"`.\n\n### Managing Mockjax Data\n\nMockjax holds onto a lot of data. It does this so that you can inspect it later during your tests. If you find things running slowly, or if you just want to clear things out between tests, you can clear both the mock handlers and the retained ajax calls.\n\nObviously Mockjax must hold onto the mock handlers in order to match ajax requests. By default, it also retains every ajax call made (whether the call was mocked or not). You can modify this with the `retainAjaxCalls` global setting. Setting this to `0` will cause no ajax calls to be retained at all. Setting it to a positive integer will limit the number of calls retained to that number (again, whether mocked or not).\n\nYou can clear all of the retained ajax calls using the `clearRetainedAjaxCalls()` method, which will return the count of cleared calls:\n\n```javascript\nconst countRemoved = $.mockjax.clearRetainedAjaxCalls()\n```\n\nAlternatively, you can provide this method an array of handler UUIDs to restrict the removal of ajax calls to those that were mocked by the provided handlers.\n\n```javascript\nconst handlerUUIDs = ['1', '2', '3']\nconst countRemoved = $.mockjax.clearRetainedAjaxCalls(handlerUUIDs)\n// only ajax calls mocked by the handlerUUIDs are removed\n```\n\nIf you need clear Mockjax handlers you've registered, there are a few methods for doing so...\n\n```javascript\nconst countRemoved = $.mockjax.clearAll()\n```\n\nThis will remove **all** registered mock handlers, but you can also remove a single handler by its UUID:\n\n```javascript\nconst countRemoved = $.mockjax.clearById('1234') // will return 1 or 0\n```\n\nLastly, you can clear mock handlers by the URL that it matches, using either a string or regular expression:\n\n```javascript\n$.mockjax({ url: \"/api/foo\", ... })\n$.mockjax({ url: \"/api/foobar\", ... })\n\nconst countRemoved = $.mockjax.clearByUrl(\"/api/foo\") // returns 1\n\n$.mockjax({ url: \"/api/foo\", ... }) // re-adding it\n$.mockjax({ url: \"/api/user/foobar/edit\", ... }) // and adding one more\n\nconst moreRemoved = $.mockjax.clearByUrl(/foo/) // returns 3 (one was already removed)\n```\n\n\n## Miscellaneous Information\n\n### About Mockjax and Its History\n\nMost backend developers are familiar with the concepts of [mocking objects](http://en.wikipedia.org/wiki/Mock_object) or stubbing in\nmethods for unit testing. For those not familiar with mocking, it's the simulation of an interface or API for testing or integration development purposes. Mocking with front-end development though is still quite new. Mockjax gives front end developers the ability to define ajax requests that should be mocked out, as well as how those requests should be responded to. These mocks can be extremely simple or quite complex, representing the entire request-response workflow.\n\nThis plugin was originally developed by appendTo in March 2010. That company closed in 2014 and the project was taken over by a former employee, [@jakerella](https://jordankasper.com).\n\n### jQuery Version Support\n\nWe strive to ensure that Mockjax is tested on the furthest patch version of all minor versions of jQuery (1.x.y through 3.x.y). In other words, we don't test  1.12.1, but rather 1.12.4 (the furthest patch version on the 1.x line). The QUnit tests in the `/test/integrsation` directory include links to each version of jQuery tested in the header so you can try it yourself.\n\n> Note that even though jQuery 1.x and 2.x are deprecated, we still support them in Mockjax.\n\n### Browsers Tested\n\nWe use [BrowserStack](https://www.browserstack.com)'s awesome open source collaboration to test Mockjax in real browsers and real Operating Systems using VMs on their platform. We run all of our tests on the current versions of the major browsers below before publishing a release:\n\n* Edge\n* Firefox\n* Chrome\n* Safari\n\n### Using Mockjax in Other Ways\n\nYou can use Mockjax as a Node module or with RequireJS... and presumably in  other ways as well. We have tests for Node (CommonJS) and RequireJS. When using Mockjax as a Node module, **you must provide the module with the jQuery library and a `window` object**. Here is a simplified example:\n\n```javascript\nconst jquery = require('jquery')\nconst window = (new JSDOM('<html></html>')).window\nconst { jQueryFactory } = require('jquery4/factory')\nwindow.jQuery = jQueryFactory(window)\nconst mockjax = require('jquery-mockjax')(jquery, window)\n\nmockjax({\n    url: '/resource',\n    responseText: { foo: 'bar' }\n})\n\njquery.ajax({\n    url: '/resource',\n    dataType: 'json',\n    error: () => { console.log('Oh no!') },\n    success: (data) => { console.log(`foo is ${data.foo}`) }\n})\n```\n\n### Logging\n\nMockjax logs various pieces of information to the `console`. You can alter the log level using the `$.mockjaxSettings.logLevel` global setting:\n\n```javascript\n$.mockjaxSettings.logging = 4;  // very verbose debug messages\n$.mockjaxSettings.logging = 3;  // verbose log messages\n$.mockjaxSettings.logging = 2;  // informational messages\n$.mockjaxSettings.logging = 1;  // warning messages\n$.mockjaxSettings.logging = 0;  // only critical error messages\n```\n\n> Note that each level enables that level plus any lower number... thus setting logging to `2` also enables warnings and errors.\n\n#### Implement a custom logger\n\nIf you don't want to use the `console` object, you can pass in your own logging implementation with the `logger` setting. Note that your logger must implement the `debug`, `log`, `info`, `warn`, and `error` methods.\n\n### Release History\n\nPlease read the [CHANGELOG](https://github.com/jakerella/jquery-mockjax/blob/master/CHANGELOG.md) for a list of changes per release. All releases are tagged in GitHub for easy reference, the `master` branch should _not_ be considered a stable release!\n\n### License\n\nCopyright (c) 2014-2026 Jordan Kasper, formerly appendTo\n\nNOTE: This repository was taken over by Jordan Kasper (@jakerella) October, 2014\n\nLicensed under the MIT license: [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)\n\n### Contributing\n\nWe welcome any contributions by the community, whether in the form of a Pull Request, issue submission and comments, or just sharing on social media!\n\nIf you want to contribute code to the project, please read our [Contribution guidelines](CONTRIBUTING.md) to see what you need to do to get your Pull Request ready for merging.\n","readmeFilename":"README.md","users":{"koko236":true,"hoverbaum":true,"jakerella":true}}