{"_id":"kinto-http","_rev":"56-bea21192c2af59d4b823f500c1bad053","name":"kinto-http","description":"JavaScript HTTP client for the Kinto API.","dist-tags":{"latest":"5.3.0","alpha":"5.0.0-alpha.2"},"versions":{"1.0.0":{"name":"kinto-http","version":"1.0.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"toctoc -w -d 2 README.md","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1"},"devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1","uuid":"^2.0.1"},"engines":{"node":">=6"},"gitHead":"148def5b94b8de80b91165f24e16ed92fa5fb7ff","_id":"kinto-http@1.0.0","_shasum":"d10182a39f5bbe4c9e5eabcca417fae5d140628c","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"d10182a39f5bbe4c9e5eabcca417fae5d140628c","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-1.0.0.tgz","integrity":"sha512-qzgJwlZ5FXlzo4/naeJO25Ts2S2fH4HfHJ383lleC2YjQwAyan2DLA+4zzPDYwzE+Z2hkU68KkK/qKTc00jxNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC56lifxVfbyeUbOnp/Mkq3Bu/cC6K9s9BOnXjT7SzTgAIgfSI0sjsa4yn51U6e7a2CAiZH6dQH+Q2qQagFPlcFG9E="}]},"maintainers":[{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-1.0.0.tgz_1466078374998_0.2243499003816396"},"directories":{}},"2.0.0":{"name":"kinto-http","version":"2.0.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"toctoc -w -d 2 README.md","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1"},"devDependencies":{"babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1","uuid":"^2.0.1"},"engines":{"node":">=6"},"gitHead":"61435f36110b4a66dad1ded1a7ea09ce25716c2c","_id":"kinto-http@2.0.0","_shasum":"0648944123b276a31b0ba070ef876b840d1029c1","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"0648944123b276a31b0ba070ef876b840d1029c1","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.0.0.tgz","integrity":"sha512-+2ZZf4TyPjeK9i39Y/3X09HagSJZY027bkIbdozXcLXZLVEWV+FrYMfxHzNlwOzpBpNhcf9Q5MaHfIXtrIV0FA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbXKERJTps9JQ74wD6IeL9XWOcmpjQiF13PazH+KGekAiEAtFG8Ejl/kIaqkQM2tvql+k/xL+Nvl13Q/tVBjMPuvrQ="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.0.0.tgz_1467100232479_0.23279820149764419"},"directories":{}},"2.1.0":{"name":"kinto-http","version":"2.1.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"96b645bdfc7e01d5d55d838b0ac0a3a28b4331fb","_id":"kinto-http@2.1.0","_shasum":"6e45486a76f337350417c827d2e9e720bf37ca18","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"6e45486a76f337350417c827d2e9e720bf37ca18","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.1.0.tgz","integrity":"sha512-kh9dgIiKjj6cZ1nOT7IhnsGt4TVY6icH20Jyyd5zcH3NffYa3qnnslXTFMgwxaTm1BrsTd9EXhM2OdmjPJ9ojg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDRwUJ/srpjH58hlTfh8TbOxEMQ8qcB7g7f1VWuQCVTQIhAOdec3o7cAEjMgIUFhpWowMgI7lVKzuGg+0Siaf733Qh"}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.1.0.tgz_1468861982334_0.703019936569035"},"directories":{}},"2.1.1":{"name":"kinto-http","version":"2.1.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"7993ef526901514a7a2deeefdcd5bc09e535f246","_id":"kinto-http@2.1.1","_shasum":"76800fa6bec5a285c5e87b200372586cf51f54da","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"76800fa6bec5a285c5e87b200372586cf51f54da","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.1.1.tgz","integrity":"sha512-E/UXBBzMxOXzTaTI/FZ+pfOtBqI6KT4Rhmi/AkSk/ibWtrT/IbBkSz3CrMTvW5PGrR3LW1R1Riuf6omT9PetEQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxoCeoR4qcMupstyey0GiuDqcu7qBllKPzyHDeb374FAiBiNXdWAIzIUZ3oYsaM2bKwsL4/7RAK0lP0koAtC8KTFw=="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.1.1.tgz_1468914533559_0.8577299925964326"},"directories":{}},"2.2.0":{"name":"kinto-http","version":"2.2.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"f3aec50f20d75bb4d60dfc5b9f781d9df78c41e7","_id":"kinto-http@2.2.0","_shasum":"cb382b90154298191a93aa5eaa4365059f7ed26d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"cb382b90154298191a93aa5eaa4365059f7ed26d","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.2.0.tgz","integrity":"sha512-xqK8wY69rZAQLwZginlmc+MHHZaN+sZG4ehPK3/bL0Qq4yZzQCbFr/wV9Fzt7Z0R6lU0ub3VOX7/9AeNUGRgTw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBbkoOo9aGMXgReWfcMPzsfI2Mk7t5XCJ+mWYI9ET71wIhAPnSLYVwFb3SafnAAHSQmMS5Df6UWyyCFqV7oYqPuV9v"}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.2.0.tgz_1469092310402_0.4179722012486309"},"directories":{}},"2.2.1":{"name":"kinto-http","version":"2.2.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"b69572bc83b3dde01c3f75a4941f55073870740e","_id":"kinto-http@2.2.1","_shasum":"3b9c25f33674d323d6c4bdf5ced6271324d3b116","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"3b9c25f33674d323d6c4bdf5ced6271324d3b116","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.2.1.tgz","integrity":"sha512-pVdwcDQbqvvDinrstF6UWJkP1mJ4UcNXhsLTD+JQNjDMDs6PiE47XqblBz7URS272AGGi0HoQwXKr5mXa3VqCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHv6yPpbSP3NwYf/DSb0+kY10PppVe2752TuqWDdZjTTAiEA+qZ0hy/9sA8tTAt1qaMEB+CHdAV0QrUoDf5aKiuKXYY="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.2.1.tgz_1471874543343_0.5285131831187755"},"directories":{}},"2.3.0":{"name":"kinto-http","version":"2.3.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"94deacc0c662be57161d33faacc81332dcb793b0","_id":"kinto-http@2.3.0","_shasum":"171f75aad5877dec65c5b3ad35304912cdc55ff1","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"171f75aad5877dec65c5b3ad35304912cdc55ff1","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.3.0.tgz","integrity":"sha512-Khw6w8PBWSAu7S+gKbRntihTjCu9tcGBLGVeOIC/XIs5mwnIpWR+m/fo5BR+ad4HZ355f0KVJd/lZTxjpHSh/Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCTtOHF18+2jcsc8VC/6wc1OEWdn1CUxqvVG8JjHqDgAiEAuE/6L2a3gIpwmXseMlFLuZCk2Gq6F4Y43hznGkUu+bY="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.3.0.tgz_1471950941929_0.158413405995816"},"directories":{}},"2.4.0":{"name":"kinto-http","version":"2.4.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"4a4094ca37c2ddd620f46cb3b3f684641b159c3b","_id":"kinto-http@2.4.0","_shasum":"834fc77a25ec043ecc8baa81ca48ba40da8ee6fd","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"834fc77a25ec043ecc8baa81ca48ba40da8ee6fd","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.4.0.tgz","integrity":"sha512-qCFHYTZSPr7qEeW23i4X4YafzYODg4azF8gT+eADWE8wSrGa+e6muzCcc6+0WAwT+FmuFVyXEan931hr4rnM1w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAaKDL+aesB+BNvuc95GBxBkI5FLdSM1PSFH2UOB5ZRgIgX+5ExHLdH/MxbgbLmDeIbrAftbUCSETMXcgH0SoMMJo="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.4.0.tgz_1472125553388_0.2221592664718628"},"directories":{}},"2.4.1":{"name":"kinto-http","version":"2.4.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"c4e453180e88b13343ac973cd4d77f297e1193c4","_id":"kinto-http@2.4.1","_shasum":"d98aa7fd19ea8405679cae9f949e81f8561317ee","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"d98aa7fd19ea8405679cae9f949e81f8561317ee","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.4.1.tgz","integrity":"sha512-x/89Dd0yPnVB/v/i+ndlvk9ymDkYZCKTDgyzZ7bzg8jNg0j5fX+Sn62QKlcDQ0R+KLixqT0IZhHHuQvs0XLZZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHbclu/LpenP0lXMb5kZvcIhBeDJei2TkUz2f0AYamkQIhAJQ27/qpbVNnfNNAPYUIkIIarCaH4QUdlxn4Cukld0Xa"}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-2.4.1.tgz_1472651596758_0.06115945242345333"},"directories":{}},"2.5.0":{"name":"kinto-http","version":"2.5.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"66c5d7744b90cbdd792452f187d9da8dcc6111f0","_id":"kinto-http@2.5.0","_shasum":"b2fb52e19eea63de893d0df061071bfa6a8648db","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"b2fb52e19eea63de893d0df061071bfa6a8648db","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.5.0.tgz","integrity":"sha512-xiCYwgQ8pdDzdE1IO1+gmL2xwuxQlo1PUW7ZqzSBaAC4m31ar/JEvM3jabdPESJqcMyiLzAcU8tCf6j+i6zO2Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHkvnGdCbFXlY8UqW8oncTAxbJrMIiQ4rHaaLDEtVutYAiB/uq+LvGy0IcTAsbcQIisIGqL39AvnmUuR5eRo/M03RA=="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.5.0.tgz_1472720580657_0.9371429560706019"},"directories":{}},"2.5.1":{"name":"kinto-http","version":"2.5.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"0a55d5252b16e7c33f2621f58f969fee28a32fcb","_id":"kinto-http@2.5.1","_shasum":"b714935e54bfb54dd194bf9d5d0aad6141fdd507","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"b714935e54bfb54dd194bf9d5d0aad6141fdd507","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.5.1.tgz","integrity":"sha512-ajCPOKsdQzryN1JTFKVgFH5y2Gq3tE6I/uMR5wbsdEAZBhcA8tFxd7s3xGqt7lH2R9aBE27YDEOWKM0KHwnenA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPu21GSsTP8IK3rQO0P95G9r+FyG6hob68ABAH6a0LuAiEAzQ3lPUr/rk9anWeIeLnlE2R8bzqrVq27kTqsijm/dBQ="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.5.1.tgz_1473935092459_0.22725917003117502"},"directories":{}},"2.5.2":{"name":"kinto-http","version":"2.5.2","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"9406d3ab5ad0040d3bd70c1c4f1cab5d6be6cb06","_id":"kinto-http@2.5.2","_shasum":"4270cf6de602cd87c6d780224c4feb69e4208332","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"4270cf6de602cd87c6d780224c4feb69e4208332","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.5.2.tgz","integrity":"sha512-PyRiIgB2w4cHNhmIGvEWTkYq1vaYdpac4mFLrJXJIUBlKnNypzTXyNdx70H3YWRWepYbLAZIyhKcNllLauG0ug==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0jta1unzHk5czIb7SnSKbNUNvifHi6nWby5kuYewT2AiAl49Sp9b5eBdVdOk4/GEmAjyC/bdsQqx2ZWToCa54Jkg=="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.5.2.tgz_1478271104505_0.6754164590965956"},"directories":{}},"2.6.0":{"name":"kinto-http","version":"2.6.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"609901d27e7efadfb2a1cd65e5baa464f4569882","_id":"kinto-http@2.6.0","_shasum":"bb75f70425635037b814364d85031aad180f8d51","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"natim","email":"natim@mozilla.com"},"dist":{"shasum":"bb75f70425635037b814364d85031aad180f8d51","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.6.0.tgz","integrity":"sha512-aWbmZccpW4vR4MZdG1ekZQKLsTYUuMd6PjRwbDDzRcW4BBsz1eche09aQ6g+1dRwIWYJgRb0UJc5Ku2R1MNuqA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpJXj2rmo2dxLw+xufKqTRWFk5LWqjIk2Woe3Md3yqKgIgOrkVl3VOzJ9XdGe6zWBN4YTf5Bl5boQLfggEZfwIXIA="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.6.0.tgz_1481820838572_0.18102257465943694"},"directories":{}},"2.7.0":{"name":"kinto-http","version":"2.7.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore isomorphic-fetch --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore isomorphic-fetch --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"isomorphic-fetch":"^2.2.1","uuid":"^2.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.6.5","babel-core":"^6.6.5","babel-eslint":"^5.0.0-beta6","babel-istanbul":"^0.6.1","babel-loader":"^6.2.4","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.6.5","babel-plugin-transform-object-rest-spread":"^6.5.5","babel-polyfill":"^6.6.1","babel-preset-es2015":"^6.6.0","babelify":"^7.2.0","browserify":"^13.0.0","btoa":"^1.1.2","chai":"^3.4.1","chai-as-promised":"^5.0.0","coveralls":"^2.11.8","esdoc":"^0.4.6","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.0.1","eslint":"2.2.0","form-data":"^1.0.0-rc4","jsdom":"^9.4.1","kinto-node-test-server":"0.0.1","mocha":"^2.3.4","sinon":"^1.17.2","toctoc":"^0.2.2","uglifyify":"^3.0.1"},"engines":{"node":">=6"},"gitHead":"dae7787f94ef2c60788e6d5c301e46f03ec462aa","_id":"kinto-http@2.7.0","_shasum":"25e4dcb8304343384ccffbe40f8e312a99e69ef1","_from":".","_npmVersion":"3.10.9","_nodeVersion":"7.1.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"25e4dcb8304343384ccffbe40f8e312a99e69ef1","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-2.7.0.tgz","integrity":"sha512-Y8vbFFp7N7/Ac1yYln4RZcFIjIbwGzAcn4CT9CS1R0yOC7zQN99DzH8q8EfU4hGST4UGgdQJ6E8S+6mhh7CKcg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXloeFHaDXu9bco7QZferP7hZioPF297Xkj5MZFYw+jQIhAOelQGSO28oTFCDF9hiGSDeExBEV8eyiKfFGpqw0EizW"}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-2.7.0.tgz_1484577257905_0.8269573512952775"},"directories":{}},"3.0.0":{"name":"kinto-http","version":"3.0.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"0.0.1","mocha":"^3.2.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"2f7c192f176efef6edbafe0a5de0cd6f971fb7a7","_id":"kinto-http@3.0.0","_shasum":"b6c210c68953f05d79ee2e5f515bb9f89bbb651c","_from":".","_npmVersion":"3.10.10","_nodeVersion":"7.1.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"b6c210c68953f05d79ee2e5f515bb9f89bbb651c","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-3.0.0.tgz","integrity":"sha512-jacDHOQ+2O7zOoyHYe+vQQAprY5cQrhqo0cYDqQArHASPXqrQG1JyTb9Q0Ko62pxJg2ytX3ZsgJB9Kl6SAXxJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHN9Wla6Q3LZmbQMuPGSc7K8rBB/0k99CJc0e0r3uqlfAiAaTpV/zlDVntGfBc274VQCvRy/D6bseyKl7X4d/sWoFg=="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-3.0.0.tgz_1486637291518_0.12556726927869022"},"directories":{}},"3.1.0":{"name":"kinto-http","version":"3.1.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"0.0.1","mocha":"^3.2.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"020c627a781fcbccc650d397175d6b8aeb4b0ec3","_id":"kinto-http@3.1.0","_shasum":"6ffeb68308a92b7066dac82cdbb73310ee337e0f","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"6ffeb68308a92b7066dac82cdbb73310ee337e0f","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-3.1.0.tgz","integrity":"sha512-oRn/R3GsoorFxp12k+/vdAROhJd4Z6BxDrMET55pUIbDI5NymAlsUtbwGtuXyGLfaKGQBfIpjv0PnFiRm5zYJw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE86uNpyv6mWHPhTSHWhN1/fsyuEYoGX/9IBjgG1AtLyAiEAujaRsx9+uPx5YAQPBrIyc5HKp6/4qDYllPsX+V1Hruk="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-3.1.0.tgz_1488376334967_0.513379433657974"},"directories":{}},"4.0.0":{"name":"kinto-http","version":"4.0.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-es7-plugin":"0.0.3","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"0.0.1","mocha":"^3.2.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"d750ae186023aa93a915ccd5b8900bb1823e8f5e","_id":"kinto-http@4.0.0","_shasum":"6a80c9f1606fdf453ef73a6665b2b04195f4dcf1","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"shasum":"6a80c9f1606fdf453ef73a6665b2b04195f4dcf1","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.0.0.tgz","integrity":"sha512-p+ddQz0LMwKuJG9lh/c9cXsfgvidD79VgMlMDTqqYszN3BSMskvm81REV9oQx3DEByVo+fGMg89+XZK7NOfXwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUtXZGjrObykDMOpaq5ENG8bIoLqrWAZaYWxo4yYTgXgIhAIoVn6RkCdwez4bCNl3P6TS6tWd9qz/8biq2XjuhSkRI"}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.0.0.tgz_1488493720039_0.42719581816345453"},"directories":{}},"4.1.0":{"name":"kinto-http","version":"4.1.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^0.22.0","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"5596d34a92c84579e70542f0565b848f737e3da4","_id":"kinto-http@4.1.0","_shasum":"06e4bd8dc56db148382437be6830abcf09912669","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"06e4bd8dc56db148382437be6830abcf09912669","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.1.0.tgz","integrity":"sha512-Qy9nWr5/g8jjzRrRuMuMGUBc4W2ONasTuTgBGa78qL8Mo15/KWSq736AWQ+NNFX/rKoSLucMgwMXRC7BiJExsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiZj/SmLXyxbc2aSELuqpZ6OUCFJgQX1DOlskRs0CK8AIgQ7Sl+J40C6YAS8FrzywOGJ0gpKUopq7UJX6ldOKVAwU="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.1.0.tgz_1489489491682_0.6033692192286253"},"directories":{}},"4.2.0":{"name":"kinto-http","version":"4.2.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^0.22.0","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"974479d36aa12905edecd72618e827325e66407e","_id":"kinto-http@4.2.0","_shasum":"d716bc9a4d6de2e19e031bcb1a0b788ae578a781","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.0.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"d716bc9a4d6de2e19e031bcb1a0b788ae578a781","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.2.0.tgz","integrity":"sha512-970EGROI7Y7WktE4ZnyDiqCmgTG8SZyeFCJW/ccbbqkzpAggaBmWwrtczh4cN8AiVLzjekr5tbRPoCDKt19+jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC27Qb3erarF33QxWdKn6BQjZSAP50sacVxpDZXS7GUiAiBtmoskOQQzc0RYHG3behSws2vMCs39jLVrQliPbhEtQw=="}]},"maintainers":[{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"n1k0","email":"nicolas@perriault.net"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.2.0.tgz_1489759761866_0.41695060464553535"},"directories":{}},"4.3.0":{"name":"kinto-http","version":"4.3.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^0.22.0","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"f677b196f5079aa3500a444ca631e2d3193d3901","_id":"kinto-http@4.3.0","_shasum":"cbac96ad5ce566bfeb332cd10077795161829307","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.3.1","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"shasum":"cbac96ad5ce566bfeb332cd10077795161829307","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.3.0.tgz","integrity":"sha512-7ZzvmAuf4eJYm/aFikIbaKTBm2CTg6uQUfB9jftuGfH9xuNtcrfnolNKL+OErBSUnzWtH4fWE62AYgsT8eri9w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhCF0UDDXZH1YMvu3a/5k3QMMA9K4K+l9aanvaFvjYFAiEA7L9E0wDPPNMZt8r+Xb1ed+yKpeMqD0sUbI9TXwrH+ow="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.3.0.tgz_1491855816000_0.566612949129194"},"directories":{}},"4.3.1":{"name":"kinto-http","version":"4.3.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^0.22.0","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"1e9d806c48d9c41b39bc94a142a87a09f8c6c905","_id":"kinto-http@4.3.1","_shasum":"c59dad3534a555e7d989d784da8172d5cd4d1914","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.8.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"c59dad3534a555e7d989d784da8172d5cd4d1914","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.3.1.tgz","integrity":"sha512-VqtYyWqy0cHivc1HXrvWmUeMN0unAwxqrJ6g8LCns8NbZz+nBSTdqM6K+vXP0Zacc08hWcknDZEuNkGn47g0Hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzV5d86B8xfdrYFrqZqjDwb8NkNgk/9WrVIxLpDGxLdgIgSNfABDodpEnmUV5YqSdoM4Xvlo5TRQzNGMRnA3Jd9Aw="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/kinto-http-4.3.1.tgz_1491926583738_0.32480314280837774"},"directories":{}},"4.3.2":{"name":"kinto-http","version":"4.3.2","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^0.22.0","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"c805de8b2ebbd8a27b8b08c7e51ad5adb3193bdb","_id":"kinto-http@4.3.2","_shasum":"89f5c27c4b54b4ede9901e44e0798fb7df42f124","_from":".","_npmVersion":"4.5.0","_nodeVersion":"7.8.0","_npmUser":{"name":"n1k0","email":"nicolas@perriault.net"},"dist":{"shasum":"89f5c27c4b54b4ede9901e44e0798fb7df42f124","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.3.2.tgz","integrity":"sha512-agzlvxFQgLBWSfq7yqJ09nucSH9DnSuBYINbviTLJ2/brzXfGnKjgXH+rg2gusyW727ToEBrxd4+krcAvrMaiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqoptP6G923n676YUvk8z3mX45Or23xHCjucGWzmaWDAIgSQSmONIwnqw/+KWdG8MV2/X2tAITGeFD6coQjQGg7/U="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.3.2.tgz_1491989093265_0.6775577140506357"},"directories":{}},"4.3.3":{"name":"kinto-http","version":"4.3.3","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5 --semi","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^1.2.2","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"a41d80dc457e99a825752b41f280ca019a7aebe2","_id":"kinto-http@4.3.3","_shasum":"86e1d2c0c592a819c186b9ba2f6ed3c33fe2027c","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"natim","email":"natim@mozilla.com"},"dist":{"shasum":"86e1d2c0c592a819c186b9ba2f6ed3c33fe2027c","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.3.3.tgz","integrity":"sha512-HL/HTttZ4piq8CRwGn1/DCaZKfcEaBl+iabhFBRBn7vduMhHK10LmFPitMgaU0DCuCsleyEwAp0AqXpv1LzG+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4AUN/ihUDErag7huDHRetNAq03cYyyc6+0wpkvul1zQIgPM9MyWuMXmQ4jrUT7QDsAHj7Z+QdSFcln56ON6fydtE="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.3.3.tgz_1493296526472_0.7859659327659756"},"directories":{}},"4.3.4":{"name":"kinto-http","version":"4.3.4","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier-check $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","precommit":"lint-staged","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5 --semi","lint-staged":{"{src,test}/**/*.js":["npm run lint","npm run cs-format","git add"]},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^7.1.1","babel-istanbul":"^0.12.1","babel-loader":"^6.2.10","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^7.3.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^3.5.0","chai-as-promised":"^6.0.0","coveralls":"^2.11.16","esdoc":"^0.5.2","esdoc-importpath-plugin":"0.1.0","eslint":"3.15.0","form-data":"^2.1.2","husky":"^0.13.2","isomorphic-fetch":"^2.2.1","jsdom":"^9.10.0","kinto-node-test-server":"^1.0.0","lint-staged":"^3.3.2","mocha":"^3.2.0","prettier":"^1.2.2","prettier-check":"^1.0.0","sinon":"^1.17.7","toctoc":"^0.2.3","uglifyify":"^3.0.4"},"engines":{"node":">=6"},"gitHead":"1294207d32d035fa59068d2148a7af8a1a1b7593","_id":"kinto-http@4.3.4","_shasum":"b6fe2d3abed8780dbbbd73f9750d850d5e0b5b2c","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.9.1","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"shasum":"b6fe2d3abed8780dbbbd73f9750d850d5e0b5b2c","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.3.4.tgz","integrity":"sha512-YPvEk3olKwONqhNJ8bKTT58BDAwEWg4nVeQjC9ewiISImp8uacn5+DvTzSeJMT8suX+9B1+08AUJ5q/TN1H9Pg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1O6R+NHOzE9v2MMFScLFGYX+qxVV3Y4J2QWaZtgBfOAIgOW6L5CE/h5pNDr4Tley96/ugaufa3kRSy1+oLI1z3Vs="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/kinto-http-4.3.4.tgz_1494368987233_0.5825104797258973"},"directories":{}},"4.4.0":{"name":"kinto-http","version":"4.4.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.0.0","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-polyfill":"^6.22.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.7.2","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^4.0.0","prettier":"^1.8.1","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"efc2bfec58506fc702aa99d01e84fc6812b1b5d0","_id":"kinto-http@4.4.0","_shasum":"2989533124b854b8cb8349d99ea2743ba0645c14","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"shasum":"2989533124b854b8cb8349d99ea2743ba0645c14","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.4.0.tgz","integrity":"sha512-FkpnxrduY6/+dOwql2G2FDNTA001rhf/owQ26annmyRbVmukxIsQEOaRL/ZP8wplruMfuqp9oPdnjBcsUG90Xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZRv+OZFy5lLkTtyxxCsQeCcyMASTBdhUr7TnoFBl83AiAw9Xe6eaomL4R+zAW7BOleB/u26709+Quf3h1aUTX7rg=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http-4.4.0.tgz_1510788421110_0.6426714239642024"},"directories":{}},"4.4.1":{"name":"kinto-http","version":"4.4.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"babel-runtime":"^6.22.0","uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.0.0","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^14.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.7.2","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^4.0.0","prettier":"^1.8.1","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"261afd56817cf42194e61248cace0daf6df6b3c3","_id":"kinto-http@4.4.1","_shasum":"542dd72db9a87fa5a70f55fcf3927001138598d4","_from":".","_npmVersion":"3.10.9","_nodeVersion":"6.9.2","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"shasum":"542dd72db9a87fa5a70f55fcf3927001138598d4","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.4.1.tgz","integrity":"sha512-5S0504NlKy8a3gjU39iyTn6xYmwvVS18Oxbi8qOzd9zcEa7pGK4zeKgDoiF4hqHDU7wUH6l6AQkTzU+bcmNDpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHbvoVxNpl+/l8OFocq40f7l1a0quyLt7ns0w2t292DwIhAIbTbY9Sep3fwktNFeYCzHy/aRxzGsBfGwS3jxIyJa9i"}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http-4.4.1.tgz_1511194778558_0.8722193895373493"},"directories":{}},"4.5.0":{"name":"kinto-http","version":"4.5.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"babel-runtime":"^6.22.0","uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.1.2","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^15.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.14.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.8.2","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"ee57670911c5faa7059501bb2ee19388555b1e90","_id":"kinto-http@4.5.0","_shasum":"2fceb7fa402cd1dff325b15520a1ec3818693ab6","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"2fceb7fa402cd1dff325b15520a1ec3818693ab6","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.5.0.tgz","fileCount":28,"unpackedSize":627988,"integrity":"sha512-tTerhW0gd8MfH+er5+fXH2XNWcdbrLlRliglxGR+Z1lBBCUQSDJbCC2yblgKTmJfNnhdiIaCWvNHn6AyanHZfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBVcPdcuO2CdpokK29ZLLb5FhKfZr/SYPDZOdfuvb2rNAiEAuc14rb00dPhtXBqj7ZYf9TPGc3EwOyB19xTckNWImLk="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.5.0_1517997239868_0.9609782725385543"},"_hasShrinkwrap":false},"4.5.1":{"name":"kinto-http","version":"4.5.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"babel-runtime":"^6.22.0","uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.1.2","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^15.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.14.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.8.2","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"f8eb8bdf8441efea8b1d24fe54bb3166ea8213dc","_id":"kinto-http@4.5.1","_shasum":"5515285e05b6bc51b8c266c36b81e2c3f114a6ac","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"5515285e05b6bc51b8c266c36b81e2c3f114a6ac","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.5.1.tgz","fileCount":28,"unpackedSize":704016,"integrity":"sha512-Z4qx1kOKJK0R0SwMC5jm5UP7OQbO6nU3Ol9a2ikNsbQb1/Pwc6+1Qhn3FeMnofuhBrrZt0tj3DHDmvFoRX6fXg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWjZIG8FeH7lxtzBwUJ7la8AEsjDoRyZFtShcDrhuOcQIhAKV9fcTCtcrgAgZCV7APiN6OGWRZQUd0QUCiBZDc/Tr4"}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.5.1_1518016097099_0.49382045777024586"},"_hasShrinkwrap":false},"4.5.2":{"name":"kinto-http","version":"4.5.2","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"babel-runtime":"^6.22.0","uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.1.2","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.14.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.8.2","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"0af27c62e1b896efc5893465788fb221d32aa42e","_id":"kinto-http@4.5.2","_shasum":"d7f3a88159f6240073faeeed1cadcf1d103b6459","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"leplatrem","email":"leplatrem@gmail.com"},"dist":{"shasum":"d7f3a88159f6240073faeeed1cadcf1d103b6459","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.5.2.tgz","fileCount":27,"unpackedSize":1291607,"integrity":"sha512-R1eMESXlYX/Fbb9ZViCu3nYivmLQQkciGnMo1OJouERQ+Fend4SK7rdzZmk+crlT4wHa7+IbwfFd+28orlDikw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8nTaesphxq8HaxbS7nJCmapgLsGxhefwgOI652XUINQIgfUpAdGA/AnwP4yvrUkEx1lwafTiqfJommtXbBtdUUHE="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.5.2_1518112487006_0.7051717426524304"},"_hasShrinkwrap":false},"4.5.3":{"name":"kinto-http","version":"4.5.3","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify --sourceMapRelative . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify --sourceMapRelative . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify --sourceMapRelative . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify --sourceMapRelative . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"babel-runtime":"^6.22.0","uuid":"^3.0.1"},"devDependencies":{"atob":"^2.0.3","babel-cli":"^6.22.2","babel-core":"^6.22.1","babel-eslint":"^8.1.2","babel-istanbul":"^0.12.1","babel-loader":"^7.0.0","babel-plugin-syntax-object-rest-spread":"^6.13.0","babel-plugin-transform-async-to-generator":"^6.22.0","babel-plugin-transform-builtin-extend":"^1.1.2","babel-plugin-transform-decorators-legacy":"^1.3.4","babel-plugin-transform-es2015-modules-commonjs":"^6.22.0","babel-plugin-transform-object-rest-spread":"^6.22.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-es2015":"^6.22.0","babelify":"^8.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.0.1","esdoc-accessor-plugin":"1.0.0","esdoc-ecmascript-proposal-plugin":"1.0.0","esdoc-importpath-plugin":"1.0.1","esdoc-integrate-test-plugin":"1.0.0","esdoc-publish-html-plugin":"1.1.0","esdoc-type-inference-plugin":"1.0.1","esdoc-undocumented-identifier-plugin":"1.0.0","esdoc-unexported-identifier-plugin":"1.0.0","eslint":"^4.14.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^11.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.8.2","sinon":"^4.0.0","toctoc":"^0.2.3","uglifyify":"^4.0.1"},"engines":{"node":">=6"},"gitHead":"5179c56ef4bcb7b00d9d362351f4931c736a4170","_id":"kinto-http@4.5.3","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},"dist":{"integrity":"sha512-AQcMshxsZeHrewhN44Ee9WcBL9UzdFyMG8HhZ6Qmv9MvBbDc/Y9ruAO2A2PnF9Ptzs+msqZUzA87pzntZ1VQQQ==","shasum":"14fe0855b4e37d060572ebe49447bfdd1abec8b0","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.5.3.tgz","fileCount":26,"unpackedSize":1311800,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFDdZDQ4WBfDoiwxKHPe/sG034VIJXhoqCOR6zDNioT1AiAG4UjSCFpUO8zpFuISLEglsOGaDY8moyGdPuoF4ubq7A=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.5.3_1518630463308_0.901257956667568"},"_hasShrinkwrap":false},"4.6.0":{"name":"kinto-http","version":"4.6.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^5.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^12.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.13.0","sinon":"^6.0.0","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"05c2dd636d8f59fb40b6055b9bdde80bfbed3165","_id":"kinto-http@4.6.0","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-AGdQ7noLGiNwiooL6mH0BcxWOrgVLrTORnIOO6EeROjC4wswu7dovHJP3NRaREc8obhhxUvJohWdGFRWthIzsg==","shasum":"8712c803ed307303b4b97d7242793198d22285cf","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.6.0.tgz","fileCount":26,"unpackedSize":1056046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvHIaCRA9TVsSAnZWagAAcEcP/0qd2VV+sLhJ6QkIBNg3\nvMaFMuwIdvSUlP4hKTldA/PGsb7r/6XEZpk/x4e2BTlwM+qmeCC72tDSHIvs\nmOtvcwKFFTRcxjBEra0f5vCtvE5J/qWqoHGV4WBGyLFwIRYuv1uzrpMUNhBe\n1HrhXLjZpYEERKBOxjAXgQygd1D+OY5f3SUH+nkb7qShvpQ6G4+7Ip9H+3k2\nQctPddtxdwxzLfuOWllpaZSxHYPU4tn9v1RUvQy7VHPahPH3wlDLOsKpYFyT\nPjGQxEN4nUi97BK5alwV6tlSJTA1vcKvTBtADZmvY8V408/I+GFJAJ/IG9yu\n0Z3bVpLM+mUeUsKsuEz5U0XHjx/qRPdLNTtAovXptpyup+h9xFabRFjqvsKL\nu+g0HpJdvnQpdENbiTovNmWBSY+Wf7lyJ9Ev84S7NxFoz5su3FUioHUNkNc2\ngSfvDBHRG+TWCb0SbFy4bsD6JNr/ohSFAQYfL2iZEmI6xq3m7cIFNluB3+HU\np3+p4bOVZ40e+t8b5QQE6ShNJ/WTNTCZj9ri62YwB5TtdexZc5+cqZY1ECTo\nUi69sTVEjB6TQc6sQ9RZVQ2VFpepn0ybNeYbCh67rkpQspYDqQYO5mPxEyqb\nWKTDZbXnpPsokmJkFMvsRpR33tkCrbwRHNEW6U59sSl1BIBX2jp8qzUZ13SA\nxHeK\r\n=TgjP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgGwNoWDIVU8B3io3rE/M/M7wC1tI9C3+ci96ypL2mlAIhAPTLDyXwYIcYNRCdibZbi551TkcTq7ZNiPu5eKMu7195"}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.6.0_1539076633375_0.9378899327212309"},"_hasShrinkwrap":false},"4.6.1":{"name":"kinto-http","version":"4.6.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^5.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^12.0.0","kinto-node-test-server":"^1.0.0","mocha":"^5.0.0","prettier":"^1.13.0","sinon":"^6.0.0","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"97e2200b4373c16e3f2b5e40763b04843b3a99aa","_id":"kinto-http@4.6.1","_npmVersion":"6.2.0","_nodeVersion":"10.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-EnfmbGs/HSQGw4JAgcCaK53tHusPnMrMeSpwJ1uNZGgqDc+1Nv1mH/6nBPF+sR15JCInsduxrUGljTOsUWV5jg==","shasum":"258559c529cb0372b2a7f0ff5fc2d443c1777cfa","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.6.1.tgz","fileCount":26,"unpackedSize":1056046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvHK6CRA9TVsSAnZWagAAxZ0P/2+ZHnuRUhc0KnZlPsUR\nxO2IeYtFw/cKnby/9tYF0FPk40mlRDAzwAydaOeQBHvmDin4tCwoo2d+GVJk\nqPkZ9OwZy2pzqRX8bs2YTFss2qzGZlcGqVJr86lBe2+cbGYV9u5khOU0p36Z\nIknJaazMbvJnR9lIcM1V/pcT8xPOAMPupeC4zPq4iVSibs3HcuWJqdvuiqRg\nmduD156Ucn0hjRI1z5eo3yeT7Y2THJUlNMOzHVYQ0NRSDWu69W5doB0h3813\n/P1fpwhfaI194aCAgsfwrvDn5JarT5TrhgndWrRA39zgeGfFBWQ1nEsuqfhC\n91j4oi+aOFCcFzy8F4CeNT2bta/Eie2tI9Q9V6PMTBwxEpqPBywbkXlELP/U\nbtiriOB99+DsF7wEGKiXo+J6CpcnXHyZQWzBF3tMNNRoKsVQAvw8bWgjJsEO\npa2HSlMgn+Gvgicw+omUenHa7jdHrPNjUe7OCE5c2p+inXn128vXTqLhmtJZ\nXM7OhOSyYijh7s/b6kO2hCKomqDUjpozhY1APMfWSVWb4ZQAwq6tmsfbNivZ\nZSCjMvyYShRzCEndGIpy6DsIzt3NhiM9JMGlN24BOQG9Ro77NCWDGGwBFPaF\nWBY78/hXpe7XDozQybQBrui5zzm7ZH2tZLsMj2m0Ha1n9KFjU3qDUbVwBt2s\nKr+k\r\n=9Nqv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC99BIfFYJ7rGl+pjU87mXPpC+MWcEKd90gnc4pun9NWwIgatwzpsKWbWEldYwwxbiTrjs1esbYdKKKtMecmijBReM="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.6.1_1539076793614_0.4147816787501204"},"_hasShrinkwrap":false},"4.7.0":{"name":"kinto-http","version":"4.7.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^5.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","prettier":"^1.13.0","sinon":"^7.2.3","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"5383e9714f44545c517d7997c3ad3a9747915382","_id":"kinto-http@4.7.0","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-Q2sSBR+1jb6mwcPsjAf5YvWMFcStO3cn57f1KHDDMMj/EjN61EHW8VY2twveK2P+IJU2RbZLZ3YYBHzqau4U6w==","shasum":"47d47daf9bc1579359d486e099f9c8fc6bcef2fd","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.7.0.tgz","fileCount":26,"unpackedSize":1096964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9TROCRA9TVsSAnZWagAATRcP/2yUfFmC1ezVFaQN2zFE\njRKyuPfVjtCf3TFC51IBngPxTAXR4JmXIxBtKOpNRorawC2VZms1kD4iV4oe\nzNoqUJps9N0pkEEKi2E8WVs7Mmeixh/Z5n7gdeuHzQmlyoyVAltSdGjyiqQ3\nKJTCqB8pyi3AAC/BYBxfhqvu3RYSCbeNahl16HjW9wmOO/O5TjAJ3Ky+uWA0\nNjH21I5495FWnMeyFk/9R23g2lx+q1oUq/ZmNDSCNPIXR1EJ5XLv3evp9KbO\nMPoA5ABW/UgoJJd4IvmuylH2RooxANSPknu+yPzSJ1tvcMLCCKpnVaMbC72X\n0Ua7WZB3huKkrxiDtyQ2PAyyHG3374/w2MSRr7KL54pjr1ufnbZXTe7wNr8A\nGbGtSpgl2dT9wmnNMZ3ZDZXBrJ0bbqLrBSqfcmohloSPLGM6LX2s+g9IQYNr\nTK5QCOf6xqJNEPPcw3POhWc7aDelBOKDFTccZcsd11JzE6XykwXeI0q+6zm6\nTgOzlm5G+6FhHsAU7+jbbH60lz6nmEmMjztr74EpEXKbwkzQjzSSh7swTojQ\nq1NKY3IKwe51cgeKP/UXSqtSOuSz1oCpSspvCGz47strWMw5yzPSYGimyac2\nmAoGeSK4p0FQn2IDzGnzeoK0Txg5s8Kz9K9vNHZgQ8RTa9FllKcKQ3DGloK0\nTw/Q\r\n=q3WM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB5YEmNulvs10Nzx4GFfFe46D4SGbkhGsI0SiHE1DJ9eAiBGqowpNxiXsZ22t4j5MfZMDtt/Su6APYGGXz5+NzQwnQ=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.7.0_1559573581759_0.32226868167332556"},"_hasShrinkwrap":false},"4.7.1":{"name":"kinto-http","version":"4.7.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","prettier":"^1.13.0","sinon":"^7.2.3","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"3dc9def5f3ccba460034e5998abbbf6f7acce24c","_id":"kinto-http@4.7.1","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-WHSIi2EU+hz9S/AOlPeMfsG7pXd+ONVaUmU+fg0M2XqZbr/gMbpjV+1QBkBMlAUSdYRT92mIIzVFm0ebjm6hgw==","shasum":"f8887a9effe918ef2bb82c1a500d74db61d2a46b","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.7.1.tgz","fileCount":48,"unpackedSize":1352562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdH0+mCRA9TVsSAnZWagAACjoQAIwo7p/zBhYsI/xe0Rsr\nyFrPKmUmm13LBlnATb5ZvEMgwxDDtSw2tUImc66UMvQZdW6xXvlA9i1xEE4M\nJXHXWLlmmnk5uhiLyCbbvbgTo0VYJRucoGsjjxjWDQNjunN1lYGceMfVfvLF\nzUzVspckaeN+onwD5q+CG/gE/rbKhMAxJES8kBHW4LAAtmZKfl4q3eF4PNhe\nhJq8zleqoAN000ku9RwOu+a8A99nJz4MxcVR7aUdgZreWOYj+9+J9nCZDq6l\nmpxHDo/tEVWHhBCLuZMszRvVIpe5VHAQ2/jbUK8E7RJ3CSz3PVHmRgYS1kg3\n8Xq5uMmauc3TW2TrHvFFcBUv/xuq9B6Dw5sxTJa/Atwj6pB4WRebkKxsvH9F\nvxHMC5yFn2VWv8qPMRFM6prYoM8EiVNBELHEsqrl7qpYAs7Lqog62i5YLbeP\n7yFprBNy1GipCtnzEnWcNgHD0K1TW8FmTL0GqNmnEalgV70AJbIIoz6J0weq\nY9lOPkB9lTh3ZYDR8SAyB3AtdNE9e80ziXkiV9qR1iOzC7oS6QgvTqY3CZLb\nj4YgmY+2TyO2Z0Yx+v2blG8z3iwS4VSy8sXgh9TfZwZB+M3LZekH1OY2e/KZ\n4+Aixm77tEv2ViTncp8U8GGEHNg7GyUpmfutaZey6hAuEr2lJGH6i85JEIiX\n6IAW\r\n=F+24\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFkHFB4CDdvwoLMUm+AEH7Hl4YuDzpOo2o8xQyM1yYrAiEAhgcEL06MFuWBAbzhH4/JhwFPAueti1C/D2+P6TRlSsk="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.7.1_1562333092991_0.7464959546586392"},"_hasShrinkwrap":false},"4.7.2":{"name":"kinto-http","version":"4.7.2","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","prettier":"^1.13.0","sinon":"^7.2.3","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"bd29c19a733632bb7c070b3ad5bbfe0e14e8b26b","_id":"kinto-http@4.7.2","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-uttian8WcVzER4/yR3UUsZvyNbhaNwJJpjytNgFqby6y17g2dxaSrm6WB/ywahlsxdSBPdOBMQF32dDyQsbCxQ==","shasum":"20bc027f4d3ed9fdb64f45077876b0a1e87e6720","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.7.2.tgz","fileCount":48,"unpackedSize":1352562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdH1MYCRA9TVsSAnZWagAAIWkP/jZ4oa+KN33Mkfl5bdeg\nq232U1HsT3W8qdUMLSDvHXtMQ1EAiHaPSgkdQQ8RR+QZ/DIN8/p63SB5jfmf\nxCs650p6EiKhKw/773cq1tq6H/RWlkbRBEbyMZK1Ck85gJfCm525tARClI7s\nMpZUEHEXU/PfzP1ujzkEeAG/OdadCo37cEjz54zUJperayL6S2Aens0LEO/y\nJvYY7+0agOn90lq0L6b4GxdnjVMn8s1tOkDfmiykN3MTfHeIVU8zJukigAsp\nVU3xWpihZ0Epib6qKNdI+4Js0m1hvtEy33JD1MJ7LUNta4zwgKM0d5Xva+rt\nfLfME3xhxbl0VUO3O6E0TgrU27UBsx5rVnRasUrQXak4kh6mu+r8m6JteYZp\ntEEyfezREm8LPtYS7LlJ21AJTB3vwNr6UGAWuT/Iv/5HeiP9UnkAj+2qU3D7\n6Zio1irtftDaaOSQOj9M17zKtTc9sJyGI6/zXMSr604QEGj/YXIX6AZG7/0K\nDAEBc32pswyfAj1wxCb8xj80fFwT2CPO/PN1ANvxgbfA2lNNVtYs36WFtzog\nbexSDXYbOOzdminetUSTEFRqmCyKVxVFJe89PCGkERRhF7pmFfF5L3ACxyMX\nZ3vvbSYGU/r6dx/bFOMZfI6sLWi2dhWiWZ0sZrNlxu+geeSbMjsFs1JYvMjC\niBOK\r\n=4E6T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDC0Bazu+2FYqzgsxaFV3o2d2R1/yKTR8jKRsTZLmNhFgIhAImPdTksKlLgBbSFoAOi55xSiECYF2r2AxAkeX5atTve"}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.7.2_1562333975126_0.3192913040682983"},"_hasShrinkwrap":false},"4.7.3":{"name":"kinto-http","version":"4.7.3","description":"JavaScript HTTP client for the Kinto API.","main":"lib/index.js","scripts":{"build":"babel -d lib/ src/","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l $npm_package_prettierOptions '{src,test}/**/*.js'","cs-format":"prettier $npm_package_prettierOptions '{src,test}/**/*.js' --write","dist":"mkdir -p dist && rm -f dist/*.* && npm run dist-dev && npm run dist-prod && npm run dist-noshim && npm run dist-fx","dist-dev":"browserify -s KintoClient -d -e src/index.js -o dist/kinto-http.js -t [ babelify . ]","dist-noshim":"browserify -s KintoClient -g uglifyify --ignore babel-polyfill -e src/index.js -o dist/kinto-http.noshim.js -t [ babelify . ]","dist-prod":"browserify -s KintoClient -g uglifyify -e src/index.js -o dist/kinto-http.min.js -t [ babelify . ]","dist-fx":"BABEL_ENV=firefox browserify -s KintoHttpClient --ignore events --bare -e fx-src/index.js -o temp.jsm -t [ babelify . ] && mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat temp.jsm >> dist/moz-kinto-http-client.js && rm temp.jsm && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"babel-node node_modules/.bin/babel-istanbul cover --report text $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js'","test-cover-html":"babel-node node_modules/.bin/babel-istanbul cover --report html $npm_package_config_ISTANBUL_OPTS node_modules/.bin/_mocha -- --require ./test/setup-jsdom.js 'test/**/*_test.js' && open coverage/index.html","test-nocover":"babel-node node_modules/.bin/_mocha --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"prettierOptions":"--trailing-comma es5","repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"@babel/runtime":"^7.0.0","uuid":"^3.0.1"},"devDependencies":{"@babel/cli":"^7.0.0","@babel/core":"^7.0.0","@babel/node":"^7.0.0","@babel/plugin-proposal-decorators":"^7.0.0","@babel/plugin-proposal-object-rest-spread":"^7.0.0","@babel/plugin-syntax-object-rest-spread":"^7.0.0","@babel/plugin-transform-async-to-generator":"^7.0.0","@babel/plugin-transform-modules-commonjs":"^7.0.0","@babel/plugin-transform-runtime":"^7.0.0","@babel/preset-env":"^7.0.0","atob":"^2.1.2","babel-eslint":"^10.0.0","babel-istanbul":"^0.12.1","babel-loader":"^8.0.0","babel-plugin-transform-builtin-extend":"^1.1.2","babelify":"^10.0.0","browserify":"^16.0.0","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.0","form-data":"^2.1.2","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","prettier":"^1.13.0","sinon":"^7.2.3","toctoc":"^0.3.0","uglifyify":"^5.0.0"},"engines":{"node":">=6"},"gitHead":"3796f57da6a1078976c5353bcf3d2f2d400b69aa","_id":"kinto-http@4.7.3","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-1BA8HdG0+cnYJFjsrx8H/j3xEVVNFHSmIDUqwVCHo4D8nLtNeIi9S3IqHLoMYikid7yfPteys66BGNg4EX59DA==","shasum":"d6083ce167daff710b2db13d9774c2cecb6537e9","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-4.7.3.tgz","fileCount":48,"unpackedSize":1565750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPySHCRA9TVsSAnZWagAA64IP/jDgZWOW+iGCkshZe1BD\nrAKdKk7OdbnE/pSiIr51dXqS0yoiQHnlEmfkvlyS4XPw3GQEDsFrahccMzMf\n9x0aO/8X8jTAvmYzh1Whzps+OlOCrd2E9RXtmkyVUMwBzHTjaNRT5fGh/EBa\nb2Q/5zYo/sfVuqTZBqtOh1jXQoyzCY0BBp8PnvVw49OamAkPLe1ZcOCmg98Z\nJ6P8EaBEe7jwSo6RUUwy/Wo2TRk+VuTew1dQhT6UaDwwFUi2B65SZ0PR2sza\nzotEcurgcypq/s32tgOv0pbCPS5N8wBTIMCLgI5vgJHYvPoTcCerU3m1K7Dj\nnQ00WBy3cHppfq2M3gII6wfz9bYujY/EVSYr+PohuloY7qkLIoPhNYVffGgo\nK0xQXfhtGmaIS2JJQlcJDnyFiKn3QVzw9XcDSWATMwfkYwA3U3HKZ+qGHTHG\nHziWPnRtC/un0oC4IzTrxVQODWPL2w3ItWjSreuSK9Wd4X6PNgZ+tyT87uTN\nj0cl8DonqT4MS3o8k44HBUx1p+GIZqtGraIjGSfaJPpbtwiFDU7oUuSJ1uBE\nAD6+L6Rkz2esA9KuEyMYlZrr4MVp29iRecAwqHuSglqbWun/+867wJx0pPGf\nwy/dBgGMawqYR9ydWuowq3vmrZiHYQ9cX/bEpcKAGFq7GIitAZKZHb4/tSvg\ng2cV\r\n=wSrg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF5MSCoTxdxQkZ0sVRWyUzcJQkqZ21khxdMNsUVJLmjfAiEA6XvksN9vw2O+F2XVy3AmIflcbFz67F8DSBNHrJAlaQA="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_4.7.3_1564419206486_0.3100664210109416"},"_hasShrinkwrap":false},"5.0.0-alpha.0":{"name":"kinto-http","version":"5.0.0-alpha.0","description":"JavaScript HTTP client for the Kinto API.","main":"lib/cjs-es5/index.js","module":"lib/es/index.js","unpkg":"dist/kinto-http.min.js","scripts":{"build":"npm run build:es && npm run build:cjs-es5","build:es":"tsc -p .","build:cjs-es5":"tsc -p . --outDir lib/cjs-es5 --module commonjs --target es5","build:demo":"npm run dist && cp dist/kinto-http.min.js demo/kinto-http.min.js && cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l '{src,test}/**/*.js'","cs-format":"prettier '{src,test}/**/*.js' --write","demo":"npm run build:demo && http-server demo","dist":"NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat dist/temp.js >> dist/moz-kinto-http-client.js && rm dist/temp.js && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' mocha -r ts-node/register --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"nyc --reporter=lcov --reporter=text-summary --report-dir=coverage npm run test-nocover","test-cover-html":"nyc --reporter=html --report-dir=coverage npm run test-nocover && open coverage/index.html","test-nocover":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"sourceMap\":true}' mocha -r ts-node/register --require source-map-support/register --full-trace --bail --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^1.11.0","@typescript-eslint/parser":"^1.11.0","atob":"^2.1.2","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^2.1.2","http-server":"^0.11.1","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","nyc":"^14.1.1","prettier":"^1.13.0","rollup":"^1.18.0","rollup-plugin-commonjs":"^10.0.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-resolve":"^5.1.0","rollup-plugin-terser":"^5.0.0","rollup-plugin-typescript":"^1.0.1","sinon":"^7.2.3","source-map-support":"^0.5.12","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typescript":"^3.5.2"},"engines":{"node":">=6"},"gitHead":"cbf53ab600ec93f2dcf3be9d2b5f9fa879fd9e45","readme":"kinto-http.js\n=============\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/Kinto/kinto-http.js.svg)](https://greenkeeper.io/)\n\n[![Build Status](https://travis-ci.org/Kinto/kinto-http.js.svg?branch=master)](https://travis-ci.org/Kinto/kinto-http.js)\n\nA JavaScript HTTP Client for the [Kinto](http://kinto-storage.org/) API.\n\nRead the [API documentation](https://doc.esdoc.org/github.com/Kinto/kinto-http.js/).\n\n## Table of Contents\n\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Changelog](#changelog)\n  - [Usage](#usage)\n  - [Authentication](#authentication)\n     - [Using Basic Auth](#using-basic-auth)\n     - [Using an OAuth Bearer Token](#using-an-oauth-bearer-token)\n     - [Change headers](#change-headers)\n  - [Server information](#server-information)\n  - [Buckets](#buckets)\n     - [Listing buckets](#listing-buckets)\n     - [Creating a new bucket](#creating-a-new-bucket)\n     - [Selecting a bucket](#selecting-a-bucket)\n     - [Getting bucket data](#getting-bucket-data)\n     - [Setting bucket data](#setting-bucket-data)\n     - [Getting bucket permissions](#getting-bucket-permissions)\n     - [Setting bucket permissions](#setting-bucket-permissions)\n     - [Deleting a bucket](#deleting-a-bucket)\n     - [Creating a collection](#creating-a-collection)\n     - [Listing bucket collections](#listing-bucket-collections)\n     - [Collections list timestamp](#collections-list-timestamp)\n     - [Deleting a collection](#deleting-a-collection)\n     - [Creating a user group](#creating-a-user-group)\n     - [Listing bucket groups](#listing-bucket-groups)\n     - [Groups list timestamp](#groups-list-timestamp)\n     - [Getting a bucket group](#getting-a-bucket-group)\n     - [Updating an existing group](#updating-an-existing-group)\n     - [Deleting a group](#deleting-a-group)\n     - [Listing bucket history](#listing-bucket-history)\n  - [Collections](#collections)\n     - [Selecting a collection](#selecting-a-collection)\n     - [Getting collection data](#getting-collection-data)\n     - [Setting collection data](#setting-collection-data)\n     - [Getting collection permissions](#getting-collection-permissions)\n     - [Setting collection permissions](#setting-collection-permissions)\n     - [Creating a new record](#creating-a-new-record)\n     - [Retrieving an existing record](#retrieving-an-existing-record)\n     - [Updating an existing record](#updating-an-existing-record)\n     - [Deleting record](#deleting-record)\n     - [Listing records](#listing-records)\n     - [Total number of records](#total-number-of-records)\n     - [Records list timestamp](#records-list-timestamp)\n     - [Batching operations](#batching-operations)\n  - [Listing all resource permissions](#listing-all-resource-permissions)\n  - [Attachments](#attachments)\n     - [Adding an attachment to a record](#adding-an-attachment-to-a-record)\n     - [Updating an attachment](#updating-an-attachment)\n     - [Deleting an attachment](#deleting-an-attachment)\n  - [Generic bucket and collection options](#generic-bucket-and-collection-options)\n  - [The safe option explained](#the-safe-option-explained)\n     - [Safe creations](#safe-creations)\n     - [Safe updates](#safe-updates)\n     - [Safe deletions](#safe-deletions)\n  - [Generic options for list operations](#generic-options-for-list-operations)\n     - [Sorting](#sorting)\n     - [Polling for changes](#polling-for-changes)\n     - [Paginating results](#paginating-results)\n  - [Generic options for singular operations](#generic-options-for-singular-operations)\n  - [Events](#events)\n     - [The backoff event](#the-backoff-event)\n     - [The deprecated event](#the-deprecated-event)\n     - [The retry-after event](#the-retry-after-event)\n  - [Browser Compatibility](#browser-compatibility)\n  - [Upgrading](#upgrading)\n     - [From 1.x to 2.x](#from-1-x-to-2-x)\n  - [Contributing](#contributing)\n     - [Coding style](#coding-style)\n     - [Integration tests](#integration-tests)\n     - [Releasing](#releasing)\n\n---\n\n## Requirements\n\n- Kinto server v6.0.0+\n\n## Installation\n\nIn the browser, you can load prebuilt scripts hosted on unpkg:\n\n- [kinto-http.min.js](https://unpkg.com/kinto-http/dist/kinto-http.min.js)\n\n```html\n<script src=\"https://unpkg.com/kinto-http/dist/kinto-http.min.js\"></script>\n```\n\nIn nodejs:\n\n```\n$ npm install kinto-http --save\n```\n\nThen (ES6):\n\n```js\nimport KintoClient from \"kinto-http\";\n```\n\nOr (ES5):\n\n```js\nvar KintoClient = require(\"kinto-http\");\n```\n\nNote that this HTTP client can be transparently used server side or in a regular browser page. In the browser, creating an instance is achieved that way:\n\n```js\nconst client = new KintoClient(\"http://\");\n```\n\n## Changelog\n\nSee [upgrading docs](#upgrading) and the full [detailed changelog on Github](https://github.com/Kinto/kinto-http.js/releases).\n\n\n## Usage\n\nA client instance is created using the `KintoClient` constructor, passing it the remote Kinto server root URL, including the version:\n\n```js\nconst client = new KintoClient(\"https://kinto.dev.mozaws.net/v1\");\n```\n\n#### Options\n\n- `safe`: Adds concurrency headers to every requests. (default: `false`)\n- `events`: The events handler. If none provided an `EventEmitter` instance will be created\n- `headers`: The key-value headers to pass to each request. (default: `{}`)\n- `retry`: Number of retries to make when the server responds with a `Retry-After` response. (default: `0`)\n- `bucket`: The default bucket to use. (default: `\"default\"`)\n- `requestMode`: The HTTP [CORS](https://fetch.spec.whatwg.org/#concept-request-mode) mode. (default: `\"cors\"`)\n- `timeout`: The requests timeout in milliseconds. (default: `null`, which means \"no timeout\")\n\n\n## Authentication\n\nAuthenticating against a Kinto server can be achieved by adding an `Authorization` header to the request.\n\nBy default Kinto server supports Basic Auth authentication, but others mechanisms can be activated such as OAuth (eg. [Firefox Account](https://accounts.firefox.com/))\n\n### Using Basic Auth\n\nSimply provide an `Authorization` header option to the `Kinto` constructor:\n\n```js\nconst secretString = `${username}:${password}`;\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: \"Basic \" + btoa(secretString)\n  }\n});\n```\n\n> #### Notes\n>\n> - As explained in the [server docs](http://kinto.readthedocs.io/en/stable/api/1.x/authentication.html#basic-auth), any string is accepted. You're not obliged to use the `username:password` format.\n\n### Using an OAuth Bearer Token\n\nAs for Basic Auth, once you have retrieved a valid OAuth Bearer Token, simply pass it in an `Authorization` header:\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: `Bearer ` + oauthBearerToken)\n  }\n});\n```\n\n### Change headers\n\nRequests headers can be altered using `setHeaders()`.\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\");\n\n// Login somewhere...\n// [...]\n\nkinto.setHeaders({\n    Authorization: `Bearer ` + accessToken,\n});\n\n```\n\n## Server information\n\nA Kinto server exposes some of its internal settings, information about authenticated user, the HTTP API version and the API capabilities (e.g. plugins).\n\n```js\nconst info = await client.fetchServerInfo([options]);\n```\n\nSample result:\n\n```js\n{\n    \"project_name\": \"kinto\",\n    \"project_version\": \"3.0.2\",\n    \"url\": \"http://0.0.0.0:8889/v1/\",\n    \"project_docs\": \"https://kinto.readthedocs.io/\",\n    \"http_api_version\": \"1.6\",\n    \"settings\": {\n        \"batch_max_requests\": 25,\n        \"readonly\": false\n    },\n    \"user\": {\n        \"bucket\": \"2f9b1aaa-552d-48e8-1b78-371dd08688b3\",\n        \"id\": \"basicauth:f505765817a6b4ea46278be0620ddedd83b10f71f7695683719fe001cf0871d7\"\n    },\n    \"capabilities\": {\n        \"default_bucket\": {\n            \"description\": \"The default bucket is an alias for a personal bucket where collections are created implicitly.\",\n            \"url\": \"http://kinto.readthedocs.io/en/latest/api/1.x/buckets.html#personal-bucket-default\"\n        }\n    }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Helpers\n\n- `fetchServerSettings([options])`: server settings\n- `fetchServerCapabilities([options])`: API capabilities\n- `fetchUser()`: authenticated user information\n- `fetchHTTPApiVersion([options])`: HTTP API version\n\n\n## Buckets\n\n### Listing buckets\n\n```js\nconst {data} = await client.listBuckets([options]);\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      id: \"comments\",\n      last_modified: 1456182233221,\n    },\n    {\n      id: \"blog\",\n      last_modified: 1456181213214,\n    },\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n### Creating a new bucket\n\n```js\nconst result = await client.createBucket(\"blog\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182233221,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nIt's alternatively possible to create a bucket without specifying an `id`, so the\nKinto server will create one for you:\n\n```js\nconst result = await client.createBucket();\n```\n\nNote: if you plan on providing options along id autogeneration, you have to specify\n`null` as the first argument:\n\n```js\nconst result = await client.createBucket(null, {data: {foo: 42}, retry: 3});\n```\n\n#### Options\n\n- `data`: Arbitrary data to attach to the bucket\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Selecting a bucket\n\n```js\nclient.bucket(\"blog\");\n```\n\n### Getting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456182336242,\n  \"id\": \"blog\",\n  \"foo\": \"bar\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").setData({foo: \"bar\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182336242,\n    \"id\": \"blog\",\n    \"foo\": \"bar\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches existing bucket data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Getting bucket permissions\n\n```js\nconst result = client.bucket(\"blog\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting bucket permissions\n\n```js\nconst permissions = {\n  read:  [\"github:bob\"],\n  write: [\"github:bob\", \"github:john\"]\n};\n\nconst result = await client.bucket(\"blog\").setPermissions(permissions[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182888466,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n### Deleting a bucket\n\n```js\nconst result = await client.deleteBucket(\"testbucket\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456182931974,\n    \"id\": \"blog\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a collection\n\n#### Named collection\n\n```js\nconst result = await client.bucket(\"blog\").createCollection(\"posts\");\n```\n\nSample result:\n\n```js\n\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createCollection();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"id\": \"OUh5VEDa\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `OUh5VEDa` is the collection ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createCollection(undefined, {safe: true})`\n\n### Listing bucket collections\n\n```js\nconst {data} = await client.bucket(\"blog\").listCollections();\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"posts\"\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"comments\"\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Collections list timestamp\n\nThe timestamp of the collections list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getCollectionsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Deleting a collection\n\n```js\nconst result = await client.bucket(\"blog\").deleteCollection(\"test\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"posts\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a user group\n\nKinto has a concept of groups of users. A group has a list of members and belongs to a bucket.\n\nPermissions can refer to the group instead of an individuals - this makes it easy to define «roles», especially if the same set of permissions is applied to several objects.\n\nWhen used in permissions definitions, the full group URI has to be used:\n\n```js\n    {\n      data: {\n        title: \"My article\"\n      },\n      permissions: {\n        write: [\"/buckets/blog/groups/authors\", \"github:lili\"],\n        read: [\"system.Everyone\"]\n      }\n    }\n```\n\n#### Named group\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": []\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With a list of members and attributes\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\", [\"system.Authenticated\"], {data: {pi: 3.14}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": [\"system.Authenticated\"],\n    \"pi\": 3.14\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createGroup();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"members\": [],\n    \"id\": \"7YHFF565\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `7YHFF565` is the group ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n- `data`: Extra group attributes\n- `permissions`: Permissions to be set on the created group\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createGroup(undefined, [], {safe: true})`\n\n\n### Listing bucket groups\n\n```js\nconst {data} = await client.bucket(\"blog\").listGroups();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"moderators\",\n      \"members\": [\"github:lili\"]\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Groups list timestamp\n\nThe timestamp of the groups list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getGroupsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Getting a bucket group\n\n```js\nconst {data} = await client.bucket(\"blog\").getGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing group\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  members: [\"system.Everyone\", \"github:lili\"],\n  pi: 3.141592\n};\n\nconst result = await client.bucket(\"blog\").updateGroup(updated, {permissions: {write: [\"fxa:35478\"]}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"members\": [\"system.Everyone\", \"github:lili\"],\n    \"pi\": 3.141592\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"fxa:35478\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `permissions`: Permissions to be set on the group\n\n### Deleting a group\n\n```js\nconst result = await client.bucket(\"blog\").deleteGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"admins\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n\n### Listing bucket history\n\n```js\nconst {data} = await client.bucket(\"blog\").listHistory();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"action\": \"update\",\n      \"collection_id\": \"articles\",\n      \"date\": \"2016-07-20T11:18:36.530281\",\n      \"id\": \"cb98ecd7-a66f-4f9d-82c5-73d06930f4f2\",\n      \"last_modified\": 1469006316530,\n      \"record_id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"resource_name\": \"record\",\n      \"target\": {\n          \"data\": {\n              \"id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n              \"last_modified\": 1469006316529,\n              \"title\": \"Modified title\"\n          },\n          \"permissions\": {\n              \"write\": [\n                  \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\"\n              ]\n          }\n      },\n      \"timestamp\": 1469006098757,\n      \"uri\": \"/buckets/blog/collections/articles/records/b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"user_id\": \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\",\n    }\n  ]\n}\n\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n## Collections\n\n### Selecting a collection\n\n```js\nconst posts = client.bucket(\"blog\").collection(\"posts\");\n```\n\n### Getting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456183561206,\n  \"id\": \"posts\",\n  \"preferedAuthor\": \"@chucknorris\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setData({preferedAuthor: \"@chucknorris\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183561206,\n    \"id\": \"posts\",\n    \"preferedAuthor\": \"@chucknorris\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Getting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setPermissions({\n    read: [\"github:bob\"],\n    write: [\"github:john\", \"github:bob\"]\n  });\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183508926,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n\n### Creating a new record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .createRecord({title: \"My first post\", content: \"Hello World!\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request;\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists and if an id is provided (default: `false`)\n\n### Retrieving an existing record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing record\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  title: \"My first post, edited\",\n  content: \"Hello World, again!\"\n};\n\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .updateRecord(updated);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World, again!\",\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post, edited\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n\n### Deleting record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183877287,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`);\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server.\n\n### Listing records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords();\n```\n\nSample result:\n\n```js\n{\n  last_modified: \"1456183930780\",\n  next: <Function>,\n  totalRecords: 2,\n  data: [\n    {\n      \"content\": \"True.\",\n      \"last_modified\": 1456183930780,\n      \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\",\n      \"title\": \"I love cheese\"\n    },\n    {\n      \"content\": \"Yo\",\n      \"last_modified\": 1456183914275,\n      \"id\": \"63c1805a-565a-46cc-bfb3-007dfad54065\",\n      \"title\": \"Another post\"\n    }\n  ]\n}\n```\n\nThe result object exposes the following properties:\n\n- `last_modified`: the [collection's timestamp](http://kinto.readthedocs.io/en/stable/api/1.x/timestamps.html). (Note: this value is the same as the one returned by [`getRecordsTimestamp()`](#records-list-timestamp))\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `totalRecords`: the total number of records in the **entire collection**. This number can alternatively be retrieved using the `getTotalRecords()` method of the collection API\n- `data`: the list of records\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `at`: Retrieve the records list at at a given timestamp back in time (note: full list is always returned, this option doesn't support pagination and will reject if the [History plugin](http://kinto.readthedocs.io/en/stable/api/1.x/history.html) isn't enabled or has been enabled after the creation of the collection.)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Total number of records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getTotalRecords();\n```\n\nSample result:\n\n```js\n42\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Records list timestamp\n\nThe timestamp of the records list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .collection(\"posts\")\n  .getRecordsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Batching operations\n\nThis allows performing multiple operations in a single HTTP request.\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .batch(batch => {\n    batch.deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n    batch.createRecord({title: \"new post\", content: \"yo\"});\n    batch.createRecord({title: \"another\", content: \"yo again\"});\n  });\n```\n\nSample result:\n\n```js\n[\n  {\n    \"status\": 200,\n    \"path\": \"/v1/buckets/blog/collections/posts/records/a89dd4b2-d597-4192-bc2b-834116244d29\",\n    \"body\": {\n      \"data\": {\n        \"deleted\": true,\n        \"last_modified\": 1456184078090,\n        \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\"\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"99\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo\",\n        \"last_modified\": 1456184078096,\n        \"id\": \"afd650b3-1625-42f6-8994-860e52d39201\",\n        \"title\": \"new post\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"221\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo again\",\n        \"last_modified\": 1456184078102,\n        \"id\": \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\",\n        \"title\": \"another\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"226\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  }\n]\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `aggregate`: Produces an aggregated result object, grouped by operation types; the result object has the following structure:\n\n```js\n{\n  \"errors\":    [], // Encountered errors (HTTP 400, >=500)\n  \"published\": [], // Successfully published resources (HTTP 200, 201)\n  \"conflicts\": [], // Conflicting resources (HTTP 412)\n  \"skipped\":   []  // Missing target resources on the server (HTTP 404)\n}\n```\n\n## Listing all resource permissions\n\nIf the [`permissions_endpoint` capability](http://kinto.readthedocs.io/en/stable/api/1.x/permissions.html#list-every-permissions) is installed on the server, you can retrieve the list of all permissions set for the authenticated user using the `listPermissions()` method:\n\n```js\nconst result = await client.listPermissions([options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"bucket_id\": \"mybucket\",\n      \"id\": \"mybucket\",\n      \"permissions\": [\n        \"write\",\n        \"read\",\n        \"group:create\",\n        \"collection:create\"\n      ],\n      \"resource_name\": \"bucket\",\n      \"uri\": \"/buckets/mybucket\"\n    },\n    ...\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Result object properties\n\n- `last_modified`: the last modified value for the list of permissions\n- `hasNextPage`: a boolean informing if a next page is available; when that's the case, you can call `next()`\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `data`: the list of permissions\n- `totalRecords`: the total number of permissions listed in the `data` property array\n\n## Attachments\n\nIf the [attachment](https://github.com/Kinto/kinto-attachment) capability is available from the Kinto server, you can attach files to records. Files must be passed as [data urls](http://dataurl.net/#about), which can be generated using the [FileReader API](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL) in the browser.\n\n### Adding an attachment to a record\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {title: \"First post\"});\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server\n- `permissions`: Permissions to be set on the record\n- `filename`: Allows to specify the attachment filename, in case the data URI does not contain any, or if the file has to be renamed on upload\n\n\n### Updating an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {id: \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\"});\n```\n\n### Deleting an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .removeAttachment(\"22c1319e-7b09-46db-bec4-c240bdf4e3e9\");\n```\n\n## Generic bucket and collection options\n\nBoth `bucket()` and `collection()` methods accept an `options` object as a second arguments where you can define the following options:\n\n- `{Object} headers`: Custom headers to send along the request;\n- `{Boolean} safe`: Ensure safe transactional operations; read more about that below.\n- `{Number} retry`: Default number of times to retry requests when faced with transient errors.\n\nSample usage:\n\n```js\nclient.bucket(\"blog\", {\n  headers: {\"X-Hello\": \"Hello!\"},\n  safe: true,\n  retry: 2,\n});\n```\n\nHere the `X-Hello` header and the `safe` option will be used for building every outgoing request sent to the server, for every collection attached to this bucket.\n\nThis works at the collection level as well:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\", {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nEvery request sent for this collection will have the options applied.\n\nLast, you can of course pass these options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nThe cool thing being you can always override the default defined options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\", {safe: true})\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: false});\n```\n\n## The `safe` option explained\n\nThe `safe` option can be used:\n\n- when creating or updating a resource, to ensure that any already existing record matching the provided ID won't be overridden if it exists on the server;\n- when updating or deleting a resource, to ensure it won't be overridden remotely if it has changed in the meanwhile on the server (requires a `last_modified` value to be provided).\n\n### Safe creations\n\nWhen creating a new ressource, using the `safe` option will ensure the resource will be created only if it doesn't already exist on the server.\n\n### Safe updates\n\nIf a `last_modified` property value is set in the resource object being updated, the `safe` option will ensure it won't be overriden if it's been modified on the server since that `last_modified` timestamp, raising an `HTTP 412` response describing the conflict when that happens:\n\n```js\nconst updatedRecord = {\n  id: \"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\",\n  title: \"new post, modified\",\n  content: \"yoyo\",\n  last_modified: 1456184189160\n};\n\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: true});\n```\n\nIf this record has been modified on the server already, meaning its `last_modified` is greater than the one we provide , we'll get a `412` error response.\n\nIf no `last_modified` value is provided at all, a safe update will simply guarantee that an existing resource with the provided ID won't be overriden.\n\n### Safe deletions\n\nThe same applies for deletions, where you can pass both a `safe` and `last_modified` options:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .deleteRecord(\"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\", {\n    safe: true,\n    last_modified: 1456184189160\n  });\n```\n\n## Generic options for list operations\n\nEvery list operations like [listBuckets()](#listing-buckets), [listCollections](#listing-bucket-collections), [listHistory](#listing-bucket-history), [listGroups()](#list-bucket-groups) or [listRecords()](#listing-records) accept parameters to sort, filter and paginate the results:\n\n- `sort`: The order field (default: `-last_modified`);\n- `pages`: The number of result pages to retrieve (default: `1`);\n- `limit`: The number of records to retrieve per page: unset by default, uses default server configuration;\n- `filters`: An object defining the filters to apply; read more about [what's supported](http://kinto.readthedocs.io/en/stable/api/1.x/filtering.html);\n- `since`: The ETag header value received from the last response from the server.\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n\n### Sorting\n\nBy default, results are listed by `last_modified` descending order. You can set the `sort` option to order by another field:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({sort: \"title\"});\n```\n\n### Polling for changes\n\nTo retrieve the results modified since a given timestamp, use the `since` option:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({since: \"1456183930780\"});\n```\n\n### Paginating results\n\nBy default, all results of the first page are retrieved, and the default configuration of the server defines no limit. To specify a max number of results to retrieve, you can use the `limit` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20});\n```\n\nTo check if a next page of results is available, you can check for the `hasNextPage` boolean property. To actually fetch the next page of results, call the `next()` function obtained:\n\n```js\n  let {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n    .listRecords({limit: 20});\n  while (hasNextPage) {\n    const result = await next();\n    data = data.concat(result.data);\n    hasNextPage = result.hasNextPage;\n  }\n```\n\nLast, if you just want to retrieve and aggregate a given number of result pages, instead of dealing with calling `next()` recursively you can simply specify the `pages` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20, pages: 3}); // A maximum of 60 results will be retrieved here\n```\n\n> ##### Notes\n>\n> If you plan on fetching all the available pages, you can set the `pages` option to `Infinity`. Be aware that for large datasets this strategy can possibly issue an excessive number of HTTP requests.\n\n\n## Generic options for singular operations\n\n\"Singular\" operations such as [Bucket#getData()](#getting-bucket-data), [Bucket#getGroup](#getting-a-bucket-group), [Collection#getData](#getting-collection-data), and [Collection#getRecord](#retrieving-an-existing-record) support some shared options:\n\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n- `query`: Any extra query arguments to pass. This might be handy if you want to use a feature that this library doesn't support yet, or for implementing cache-busting URLs.\n\n\n## Events\n\nThe `KintoClient` exposes an `events` property you can subscribe public events from. That `events` property implements nodejs' [EventEmitter interface](https://nodejs.org/api/events.html#events_class_events_eventemitter).\n\n\n### The `backoff` event\n\nTriggered when a `Backoff` HTTP header has been received from the last received response from the server, meaning clients should hold on performing further requests during a given amount of time.\n\nThe `backoff` event notifies what's the backoff release timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"backoff\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Backed off; wait until ${releaseDate} to retry`);\n});\n```\n\n### The `deprecated` event\n\nTriggered when an `Alert` HTTP header is received from the server, meaning that a feature has been deprecated; the `event` argument received by the event listener contains the following deprecation information:\n\n- `type`: The type of deprecation, which in ou case is always `soft-eol` (`hard-eol` alerts trigger an `HTTP 410 Gone` error);\n- `message`: The deprecation alert message;\n- `url`: The URL you can get information about the related deprecation policy.\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"deprecated\", function(event) {\n  console.log(event.message);\n});\n```\n\n### The `retry-after` event\n\nSome errors on the server side are transient (service unavailable or integrity errors). A `Retry-After` HTTP header in the response indicates the duration in seconds that clients should wait before retrying the request.\n\nThe `retry-after` event notifies what is the timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"retry-after\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Wait until ${releaseDate} to retry`);\n});\n```\n\n> #### Note:\n> We also automatically retry all requests that have a Retry-After response.\n\n## Browser Compatibility\n\nThis library uses some features that are not supported on Internet Explorer or Safari.\n* Javascript [`Promise`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise#Browser_compatibility)\n* [`Object.assign()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Browser_compatibility)\n* [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Browser_compatibility)\n\nPlease [add polyfills](https://polyfill.io/v2/docs/features/) for these to get full functionality.\n\n## Upgrading\n\n### From 1.x to 2.x\n\n* `collection.listRecords()` now strips the quotes (`\"`) from the `last_modified` attribute in result object (#110).\n\n## Contributing\n\n### Coding style\n\nAll the JavaScript code in this project conforms to the [prettier](https://github.com/prettier/prettier) coding style. A command is provided to ensure your code is always formatted accordingly:\n\n```\n$ npm run cs-format\n```\n\nThe `cs-check` command ensures all files conform to that style:\n\n```\n$ npm run cs-check\n```\n\nConsider installing the pre-commit hooks that automatically format\nyour code and check that it's lint-free. To do so:\n\n- Install `pre-commit`, for example using `pip install --user pre-commit`\n- `pre-commit install` to set up the hooks\n- If you have any leftover `.git/hooks/pre-commit.legacy`, you can safely delete it.\n\n### Integration tests\n\nIt's possible to run the integration test suite against an external Kinto server instance. To do so you need to define the `TEST_KINTO_SERVER` environment variable and set it to the server base URL:\n\n```\n$ TEST_KINTO_SERVER=https://my.kinto-server.tld/v1 npm test\n```\n\n### Releasing\n\nIf you need to release a new version of kinto-http.js, you can follow\n[the Release documentation](https://github.com/Kinto/kinto-http.js/wiki/Releasing).\n","readmeFilename":"README.md","_id":"kinto-http@5.0.0-alpha.0","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-gQUyj4QAJYNJfhSwbGzN9etbfpwygjNmFIJdS71TbRFyM9RBxQOwX18/1f2IW2GFTTT8x7Eq8q4bucqppWIPdw==","shasum":"74ea88f119ae154baff4e87ab83bd04f7872a05d","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.0.0-alpha.0.tgz","fileCount":49,"unpackedSize":1619722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSpBzCRA9TVsSAnZWagAAtt0P/10Foi4S4flAWCgoudwv\neb3gqu4GEcOxgi0p1VJIWxD50eNCtbLSUKx3snzKMGHvzrIk0OGtg9hngfvP\nwl+4+ElYSfyE+//tQPww6SA5fipsXj7/6PXQxBLeimBumqAxrWbYZ0LzZJxN\nQuRuC1Cg7At+3UCoNsjRd7FaFX9FBkC2Uo7ByCEUFT5t84ndyoTQ2X7zPaEU\nJv28TvS17AMxZ/ZTA16YmdXYdZ+6qPmClUOA09425qkOfz48faHthoWClXh4\nVYZeoXSJ8DCyCWhdK6ELCV6DjLUkZObkkmVEY0hNAosU7GU1nhNGr/DNc3Q7\n5vsPhpXJ3RKsNYGbzWW3TXDNCvWi8HUpM3cKE2IA2MMgxFGZaslUzB6eUpt6\nI5CUDCFmedBJFa5t47nccEspj5fteEDF6U2gWeAbbWMt5mxy2zdVDgFXz2Hx\nmuXTy+4p4hVd4cy6qSJ+5ZoRkgTdYGKb6k29TcQr0YI/xGH8DhteEDAdBIpj\n98MiKKplXiRJWIybXE3Z1aYhg5gI7zQCgekkBCAtzHuHH6/zFNwuYtBwe70s\nJ0euZW95Up4e1IS5K6aUM1z/935CbwDw4nwUExIghbvOTeXB8jRTlKw3urYn\nQ32IMg+DWaPBlNev4dp6xX6V2pqli0hH4JK8i+db4GuWqvhWPvPK+QlyO+IL\nTq7H\r\n=gBo6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHh/X7sxuoHoFNlY3Ilpb77a2Sz54HGoSMZOahAP/y1uAiAEU5W9QwGPy55HNqwlWW6oWitMcERevrgA4oI8XJs+dg=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.0.0-alpha.0_1565167730337_0.8717973625856152"},"_hasShrinkwrap":false},"5.0.0-alpha.1":{"name":"kinto-http","version":"5.0.0-alpha.1","description":"JavaScript HTTP client for the Kinto API.","main":"lib/cjs-es5/index.js","module":"lib/esm/index.js","unpkg":"dist/kinto-http.min.js","scripts":{"build":"npm run build:es && npm run build:cjs-es5","build:es":"tsc -p .","build:cjs-es5":"tsc -p . --outDir lib/cjs-es5 --module commonjs --target es5","build:demo":"npm run dist && cp dist/kinto-http.min.js demo/kinto-http.min.js && cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l '{src,test}/**/*.js'","cs-format":"prettier '{src,test}/**/*.js' --write","demo":"npm run build:demo && http-server demo","dist":"NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat dist/temp.js >> dist/moz-kinto-http-client.js && rm dist/temp.js && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' mocha -r ts-node/register --require ./test/setup-jsdom.js --watch 'test/**/*_test.js'","test":"npm run test-nocover","test-cover":"nyc --reporter=lcov --reporter=text-summary --report-dir=coverage npm run test-nocover","test-cover-html":"nyc --reporter=html --report-dir=coverage npm run test-nocover && open coverage/index.html","test-nocover":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"sourceMap\":true}' mocha -r ts-node/register --require source-map-support/register --full-trace --bail --require ./test/setup-jsdom.js 'test/**/*_test.js'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^1.11.0","@typescript-eslint/parser":"^1.11.0","atob":"^2.1.2","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^2.1.2","http-server":"^0.11.1","isomorphic-fetch":"^2.2.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","nyc":"^14.1.1","prettier":"^1.13.0","rollup":"^1.18.0","rollup-plugin-commonjs":"^10.0.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-resolve":"^5.1.0","rollup-plugin-terser":"^5.0.0","rollup-plugin-typescript":"^1.0.1","sinon":"^7.2.3","source-map-support":"^0.5.12","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typescript":"^3.5.2"},"engines":{"node":">=6"},"gitHead":"5875a39936e05536083591043f0060838bbfee65","readme":"kinto-http.js\n=============\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/Kinto/kinto-http.js.svg)](https://greenkeeper.io/)\n\n[![Build Status](https://travis-ci.org/Kinto/kinto-http.js.svg?branch=master)](https://travis-ci.org/Kinto/kinto-http.js)\n\nA JavaScript HTTP Client for the [Kinto](http://kinto-storage.org/) API.\n\nRead the [API documentation](https://doc.esdoc.org/github.com/Kinto/kinto-http.js/).\n\n## Table of Contents\n\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Changelog](#changelog)\n  - [Usage](#usage)\n  - [Authentication](#authentication)\n     - [Using Basic Auth](#using-basic-auth)\n     - [Using an OAuth Bearer Token](#using-an-oauth-bearer-token)\n     - [Change headers](#change-headers)\n  - [Server information](#server-information)\n  - [Buckets](#buckets)\n     - [Listing buckets](#listing-buckets)\n     - [Creating a new bucket](#creating-a-new-bucket)\n     - [Selecting a bucket](#selecting-a-bucket)\n     - [Getting bucket data](#getting-bucket-data)\n     - [Setting bucket data](#setting-bucket-data)\n     - [Getting bucket permissions](#getting-bucket-permissions)\n     - [Setting bucket permissions](#setting-bucket-permissions)\n     - [Deleting a bucket](#deleting-a-bucket)\n     - [Creating a collection](#creating-a-collection)\n     - [Listing bucket collections](#listing-bucket-collections)\n     - [Collections list timestamp](#collections-list-timestamp)\n     - [Deleting a collection](#deleting-a-collection)\n     - [Creating a user group](#creating-a-user-group)\n     - [Listing bucket groups](#listing-bucket-groups)\n     - [Groups list timestamp](#groups-list-timestamp)\n     - [Getting a bucket group](#getting-a-bucket-group)\n     - [Updating an existing group](#updating-an-existing-group)\n     - [Deleting a group](#deleting-a-group)\n     - [Listing bucket history](#listing-bucket-history)\n  - [Collections](#collections)\n     - [Selecting a collection](#selecting-a-collection)\n     - [Getting collection data](#getting-collection-data)\n     - [Setting collection data](#setting-collection-data)\n     - [Getting collection permissions](#getting-collection-permissions)\n     - [Setting collection permissions](#setting-collection-permissions)\n     - [Creating a new record](#creating-a-new-record)\n     - [Retrieving an existing record](#retrieving-an-existing-record)\n     - [Updating an existing record](#updating-an-existing-record)\n     - [Deleting record](#deleting-record)\n     - [Listing records](#listing-records)\n     - [Total number of records](#total-number-of-records)\n     - [Records list timestamp](#records-list-timestamp)\n     - [Batching operations](#batching-operations)\n  - [Listing all resource permissions](#listing-all-resource-permissions)\n  - [Attachments](#attachments)\n     - [Adding an attachment to a record](#adding-an-attachment-to-a-record)\n     - [Updating an attachment](#updating-an-attachment)\n     - [Deleting an attachment](#deleting-an-attachment)\n  - [Generic bucket and collection options](#generic-bucket-and-collection-options)\n  - [The safe option explained](#the-safe-option-explained)\n     - [Safe creations](#safe-creations)\n     - [Safe updates](#safe-updates)\n     - [Safe deletions](#safe-deletions)\n  - [Generic options for list operations](#generic-options-for-list-operations)\n     - [Sorting](#sorting)\n     - [Polling for changes](#polling-for-changes)\n     - [Paginating results](#paginating-results)\n  - [Generic options for singular operations](#generic-options-for-singular-operations)\n  - [Events](#events)\n     - [The backoff event](#the-backoff-event)\n     - [The deprecated event](#the-deprecated-event)\n     - [The retry-after event](#the-retry-after-event)\n  - [Browser Compatibility](#browser-compatibility)\n  - [Upgrading](#upgrading)\n     - [From 1.x to 2.x](#from-1-x-to-2-x)\n  - [Contributing](#contributing)\n     - [Coding style](#coding-style)\n     - [Integration tests](#integration-tests)\n     - [Releasing](#releasing)\n\n---\n\n## Requirements\n\n- Kinto server v6.0.0+\n\n## Installation\n\nIn the browser, you can load prebuilt scripts hosted on unpkg:\n\n- [kinto-http.min.js](https://unpkg.com/kinto-http/dist/kinto-http.min.js)\n\n```html\n<script src=\"https://unpkg.com/kinto-http/dist/kinto-http.min.js\"></script>\n```\n\nIn nodejs:\n\n```\n$ npm install kinto-http --save\n```\n\nThen (ES6):\n\n```js\nimport KintoClient from \"kinto-http\";\n```\n\nOr (ES5):\n\n```js\nvar KintoClient = require(\"kinto-http\");\n```\n\nNote that this HTTP client can be transparently used server side or in a regular browser page. In the browser, creating an instance is achieved that way:\n\n```js\nconst client = new KintoClient(\"http://\");\n```\n\n## Changelog\n\nSee [upgrading docs](#upgrading) and the full [detailed changelog on Github](https://github.com/Kinto/kinto-http.js/releases).\n\n\n## Usage\n\nA client instance is created using the `KintoClient` constructor, passing it the remote Kinto server root URL, including the version:\n\n```js\nconst client = new KintoClient(\"https://kinto.dev.mozaws.net/v1\");\n```\n\n#### Options\n\n- `safe`: Adds concurrency headers to every requests. (default: `false`)\n- `events`: The events handler. If none provided an `EventEmitter` instance will be created\n- `headers`: The key-value headers to pass to each request. (default: `{}`)\n- `retry`: Number of retries to make when the server responds with a `Retry-After` response. (default: `0`)\n- `bucket`: The default bucket to use. (default: `\"default\"`)\n- `requestMode`: The HTTP [CORS](https://fetch.spec.whatwg.org/#concept-request-mode) mode. (default: `\"cors\"`)\n- `timeout`: The requests timeout in milliseconds. (default: `null`, which means \"no timeout\")\n\n\n## Authentication\n\nAuthenticating against a Kinto server can be achieved by adding an `Authorization` header to the request.\n\nBy default Kinto server supports Basic Auth authentication, but others mechanisms can be activated such as OAuth (eg. [Firefox Account](https://accounts.firefox.com/))\n\n### Using Basic Auth\n\nSimply provide an `Authorization` header option to the `Kinto` constructor:\n\n```js\nconst secretString = `${username}:${password}`;\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: \"Basic \" + btoa(secretString)\n  }\n});\n```\n\n> #### Notes\n>\n> - As explained in the [server docs](http://kinto.readthedocs.io/en/stable/api/1.x/authentication.html#basic-auth), any string is accepted. You're not obliged to use the `username:password` format.\n\n### Using an OAuth Bearer Token\n\nAs for Basic Auth, once you have retrieved a valid OAuth Bearer Token, simply pass it in an `Authorization` header:\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: `Bearer ` + oauthBearerToken)\n  }\n});\n```\n\n### Change headers\n\nRequests headers can be altered using `setHeaders()`.\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\");\n\n// Login somewhere...\n// [...]\n\nkinto.setHeaders({\n    Authorization: `Bearer ` + accessToken,\n});\n\n```\n\n## Server information\n\nA Kinto server exposes some of its internal settings, information about authenticated user, the HTTP API version and the API capabilities (e.g. plugins).\n\n```js\nconst info = await client.fetchServerInfo([options]);\n```\n\nSample result:\n\n```js\n{\n    \"project_name\": \"kinto\",\n    \"project_version\": \"3.0.2\",\n    \"url\": \"http://0.0.0.0:8889/v1/\",\n    \"project_docs\": \"https://kinto.readthedocs.io/\",\n    \"http_api_version\": \"1.6\",\n    \"settings\": {\n        \"batch_max_requests\": 25,\n        \"readonly\": false\n    },\n    \"user\": {\n        \"bucket\": \"2f9b1aaa-552d-48e8-1b78-371dd08688b3\",\n        \"id\": \"basicauth:f505765817a6b4ea46278be0620ddedd83b10f71f7695683719fe001cf0871d7\"\n    },\n    \"capabilities\": {\n        \"default_bucket\": {\n            \"description\": \"The default bucket is an alias for a personal bucket where collections are created implicitly.\",\n            \"url\": \"http://kinto.readthedocs.io/en/latest/api/1.x/buckets.html#personal-bucket-default\"\n        }\n    }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Helpers\n\n- `fetchServerSettings([options])`: server settings\n- `fetchServerCapabilities([options])`: API capabilities\n- `fetchUser()`: authenticated user information\n- `fetchHTTPApiVersion([options])`: HTTP API version\n\n\n## Buckets\n\n### Listing buckets\n\n```js\nconst {data} = await client.listBuckets([options]);\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      id: \"comments\",\n      last_modified: 1456182233221,\n    },\n    {\n      id: \"blog\",\n      last_modified: 1456181213214,\n    },\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n### Creating a new bucket\n\n```js\nconst result = await client.createBucket(\"blog\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182233221,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nIt's alternatively possible to create a bucket without specifying an `id`, so the\nKinto server will create one for you:\n\n```js\nconst result = await client.createBucket();\n```\n\nNote: if you plan on providing options along id autogeneration, you have to specify\n`null` as the first argument:\n\n```js\nconst result = await client.createBucket(null, {data: {foo: 42}, retry: 3});\n```\n\n#### Options\n\n- `data`: Arbitrary data to attach to the bucket\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Selecting a bucket\n\n```js\nclient.bucket(\"blog\");\n```\n\n### Getting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456182336242,\n  \"id\": \"blog\",\n  \"foo\": \"bar\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").setData({foo: \"bar\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182336242,\n    \"id\": \"blog\",\n    \"foo\": \"bar\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches existing bucket data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Getting bucket permissions\n\n```js\nconst result = client.bucket(\"blog\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting bucket permissions\n\n```js\nconst permissions = {\n  read:  [\"github:bob\"],\n  write: [\"github:bob\", \"github:john\"]\n};\n\nconst result = await client.bucket(\"blog\").setPermissions(permissions[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182888466,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n### Deleting a bucket\n\n```js\nconst result = await client.deleteBucket(\"testbucket\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456182931974,\n    \"id\": \"blog\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a collection\n\n#### Named collection\n\n```js\nconst result = await client.bucket(\"blog\").createCollection(\"posts\");\n```\n\nSample result:\n\n```js\n\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createCollection();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"id\": \"OUh5VEDa\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `OUh5VEDa` is the collection ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createCollection(undefined, {safe: true})`\n\n### Listing bucket collections\n\n```js\nconst {data} = await client.bucket(\"blog\").listCollections();\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"posts\"\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"comments\"\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Collections list timestamp\n\nThe timestamp of the collections list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getCollectionsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Deleting a collection\n\n```js\nconst result = await client.bucket(\"blog\").deleteCollection(\"test\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"posts\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a user group\n\nKinto has a concept of groups of users. A group has a list of members and belongs to a bucket.\n\nPermissions can refer to the group instead of an individuals - this makes it easy to define «roles», especially if the same set of permissions is applied to several objects.\n\nWhen used in permissions definitions, the full group URI has to be used:\n\n```js\n    {\n      data: {\n        title: \"My article\"\n      },\n      permissions: {\n        write: [\"/buckets/blog/groups/authors\", \"github:lili\"],\n        read: [\"system.Everyone\"]\n      }\n    }\n```\n\n#### Named group\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": []\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With a list of members and attributes\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\", [\"system.Authenticated\"], {data: {pi: 3.14}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": [\"system.Authenticated\"],\n    \"pi\": 3.14\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createGroup();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"members\": [],\n    \"id\": \"7YHFF565\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `7YHFF565` is the group ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n- `data`: Extra group attributes\n- `permissions`: Permissions to be set on the created group\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createGroup(undefined, [], {safe: true})`\n\n\n### Listing bucket groups\n\n```js\nconst {data} = await client.bucket(\"blog\").listGroups();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"moderators\",\n      \"members\": [\"github:lili\"]\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Groups list timestamp\n\nThe timestamp of the groups list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getGroupsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Getting a bucket group\n\n```js\nconst {data} = await client.bucket(\"blog\").getGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing group\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  members: [\"system.Everyone\", \"github:lili\"],\n  pi: 3.141592\n};\n\nconst result = await client.bucket(\"blog\").updateGroup(updated, {permissions: {write: [\"fxa:35478\"]}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"members\": [\"system.Everyone\", \"github:lili\"],\n    \"pi\": 3.141592\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"fxa:35478\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `permissions`: Permissions to be set on the group\n\n### Deleting a group\n\n```js\nconst result = await client.bucket(\"blog\").deleteGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"admins\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n\n### Listing bucket history\n\n```js\nconst {data} = await client.bucket(\"blog\").listHistory();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"action\": \"update\",\n      \"collection_id\": \"articles\",\n      \"date\": \"2016-07-20T11:18:36.530281\",\n      \"id\": \"cb98ecd7-a66f-4f9d-82c5-73d06930f4f2\",\n      \"last_modified\": 1469006316530,\n      \"record_id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"resource_name\": \"record\",\n      \"target\": {\n          \"data\": {\n              \"id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n              \"last_modified\": 1469006316529,\n              \"title\": \"Modified title\"\n          },\n          \"permissions\": {\n              \"write\": [\n                  \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\"\n              ]\n          }\n      },\n      \"timestamp\": 1469006098757,\n      \"uri\": \"/buckets/blog/collections/articles/records/b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"user_id\": \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\",\n    }\n  ]\n}\n\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n## Collections\n\n### Selecting a collection\n\n```js\nconst posts = client.bucket(\"blog\").collection(\"posts\");\n```\n\n### Getting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456183561206,\n  \"id\": \"posts\",\n  \"preferedAuthor\": \"@chucknorris\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setData({preferedAuthor: \"@chucknorris\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183561206,\n    \"id\": \"posts\",\n    \"preferedAuthor\": \"@chucknorris\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Getting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setPermissions({\n    read: [\"github:bob\"],\n    write: [\"github:john\", \"github:bob\"]\n  });\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183508926,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n\n### Creating a new record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .createRecord({title: \"My first post\", content: \"Hello World!\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request;\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists and if an id is provided (default: `false`)\n\n### Retrieving an existing record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing record\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  title: \"My first post, edited\",\n  content: \"Hello World, again!\"\n};\n\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .updateRecord(updated);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World, again!\",\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post, edited\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n\n### Deleting record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183877287,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`);\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server.\n\n### Listing records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords();\n```\n\nSample result:\n\n```js\n{\n  last_modified: \"1456183930780\",\n  next: <Function>,\n  totalRecords: 2,\n  data: [\n    {\n      \"content\": \"True.\",\n      \"last_modified\": 1456183930780,\n      \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\",\n      \"title\": \"I love cheese\"\n    },\n    {\n      \"content\": \"Yo\",\n      \"last_modified\": 1456183914275,\n      \"id\": \"63c1805a-565a-46cc-bfb3-007dfad54065\",\n      \"title\": \"Another post\"\n    }\n  ]\n}\n```\n\nThe result object exposes the following properties:\n\n- `last_modified`: the [collection's timestamp](http://kinto.readthedocs.io/en/stable/api/1.x/timestamps.html). (Note: this value is the same as the one returned by [`getRecordsTimestamp()`](#records-list-timestamp))\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `totalRecords`: the total number of records in the **entire collection**. This number can alternatively be retrieved using the `getTotalRecords()` method of the collection API\n- `data`: the list of records\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `at`: Retrieve the records list at at a given timestamp back in time (note: full list is always returned, this option doesn't support pagination and will reject if the [History plugin](http://kinto.readthedocs.io/en/stable/api/1.x/history.html) isn't enabled or has been enabled after the creation of the collection.)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Total number of records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getTotalRecords();\n```\n\nSample result:\n\n```js\n42\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Records list timestamp\n\nThe timestamp of the records list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .collection(\"posts\")\n  .getRecordsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Batching operations\n\nThis allows performing multiple operations in a single HTTP request.\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .batch(batch => {\n    batch.deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n    batch.createRecord({title: \"new post\", content: \"yo\"});\n    batch.createRecord({title: \"another\", content: \"yo again\"});\n  });\n```\n\nSample result:\n\n```js\n[\n  {\n    \"status\": 200,\n    \"path\": \"/v1/buckets/blog/collections/posts/records/a89dd4b2-d597-4192-bc2b-834116244d29\",\n    \"body\": {\n      \"data\": {\n        \"deleted\": true,\n        \"last_modified\": 1456184078090,\n        \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\"\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"99\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo\",\n        \"last_modified\": 1456184078096,\n        \"id\": \"afd650b3-1625-42f6-8994-860e52d39201\",\n        \"title\": \"new post\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"221\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo again\",\n        \"last_modified\": 1456184078102,\n        \"id\": \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\",\n        \"title\": \"another\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"226\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  }\n]\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `aggregate`: Produces an aggregated result object, grouped by operation types; the result object has the following structure:\n\n```js\n{\n  \"errors\":    [], // Encountered errors (HTTP 400, >=500)\n  \"published\": [], // Successfully published resources (HTTP 200, 201)\n  \"conflicts\": [], // Conflicting resources (HTTP 412)\n  \"skipped\":   []  // Missing target resources on the server (HTTP 404)\n}\n```\n\n## Listing all resource permissions\n\nIf the [`permissions_endpoint` capability](http://kinto.readthedocs.io/en/stable/api/1.x/permissions.html#list-every-permissions) is installed on the server, you can retrieve the list of all permissions set for the authenticated user using the `listPermissions()` method:\n\n```js\nconst result = await client.listPermissions([options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"bucket_id\": \"mybucket\",\n      \"id\": \"mybucket\",\n      \"permissions\": [\n        \"write\",\n        \"read\",\n        \"group:create\",\n        \"collection:create\"\n      ],\n      \"resource_name\": \"bucket\",\n      \"uri\": \"/buckets/mybucket\"\n    },\n    ...\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Result object properties\n\n- `last_modified`: the last modified value for the list of permissions\n- `hasNextPage`: a boolean informing if a next page is available; when that's the case, you can call `next()`\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `data`: the list of permissions\n- `totalRecords`: the total number of permissions listed in the `data` property array\n\n## Attachments\n\nIf the [attachment](https://github.com/Kinto/kinto-attachment) capability is available from the Kinto server, you can attach files to records. Files must be passed as [data urls](http://dataurl.net/#about), which can be generated using the [FileReader API](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL) in the browser.\n\n### Adding an attachment to a record\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {title: \"First post\"});\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server\n- `permissions`: Permissions to be set on the record\n- `filename`: Allows to specify the attachment filename, in case the data URI does not contain any, or if the file has to be renamed on upload\n\n\n### Updating an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {id: \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\"});\n```\n\n### Deleting an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .removeAttachment(\"22c1319e-7b09-46db-bec4-c240bdf4e3e9\");\n```\n\n## Generic bucket and collection options\n\nBoth `bucket()` and `collection()` methods accept an `options` object as a second arguments where you can define the following options:\n\n- `{Object} headers`: Custom headers to send along the request;\n- `{Boolean} safe`: Ensure safe transactional operations; read more about that below.\n- `{Number} retry`: Default number of times to retry requests when faced with transient errors.\n\nSample usage:\n\n```js\nclient.bucket(\"blog\", {\n  headers: {\"X-Hello\": \"Hello!\"},\n  safe: true,\n  retry: 2,\n});\n```\n\nHere the `X-Hello` header and the `safe` option will be used for building every outgoing request sent to the server, for every collection attached to this bucket.\n\nThis works at the collection level as well:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\", {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nEvery request sent for this collection will have the options applied.\n\nLast, you can of course pass these options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nThe cool thing being you can always override the default defined options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\", {safe: true})\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: false});\n```\n\n## The `safe` option explained\n\nThe `safe` option can be used:\n\n- when creating or updating a resource, to ensure that any already existing record matching the provided ID won't be overridden if it exists on the server;\n- when updating or deleting a resource, to ensure it won't be overridden remotely if it has changed in the meanwhile on the server (requires a `last_modified` value to be provided).\n\n### Safe creations\n\nWhen creating a new ressource, using the `safe` option will ensure the resource will be created only if it doesn't already exist on the server.\n\n### Safe updates\n\nIf a `last_modified` property value is set in the resource object being updated, the `safe` option will ensure it won't be overriden if it's been modified on the server since that `last_modified` timestamp, raising an `HTTP 412` response describing the conflict when that happens:\n\n```js\nconst updatedRecord = {\n  id: \"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\",\n  title: \"new post, modified\",\n  content: \"yoyo\",\n  last_modified: 1456184189160\n};\n\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: true});\n```\n\nIf this record has been modified on the server already, meaning its `last_modified` is greater than the one we provide , we'll get a `412` error response.\n\nIf no `last_modified` value is provided at all, a safe update will simply guarantee that an existing resource with the provided ID won't be overriden.\n\n### Safe deletions\n\nThe same applies for deletions, where you can pass both a `safe` and `last_modified` options:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .deleteRecord(\"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\", {\n    safe: true,\n    last_modified: 1456184189160\n  });\n```\n\n## Generic options for list operations\n\nEvery list operations like [listBuckets()](#listing-buckets), [listCollections](#listing-bucket-collections), [listHistory](#listing-bucket-history), [listGroups()](#list-bucket-groups) or [listRecords()](#listing-records) accept parameters to sort, filter and paginate the results:\n\n- `sort`: The order field (default: `-last_modified`);\n- `pages`: The number of result pages to retrieve (default: `1`);\n- `limit`: The number of records to retrieve per page: unset by default, uses default server configuration;\n- `filters`: An object defining the filters to apply; read more about [what's supported](http://kinto.readthedocs.io/en/stable/api/1.x/filtering.html);\n- `since`: The ETag header value received from the last response from the server.\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n\n### Sorting\n\nBy default, results are listed by `last_modified` descending order. You can set the `sort` option to order by another field:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({sort: \"title\"});\n```\n\n### Polling for changes\n\nTo retrieve the results modified since a given timestamp, use the `since` option:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({since: \"1456183930780\"});\n```\n\n### Paginating results\n\nBy default, all results of the first page are retrieved, and the default configuration of the server defines no limit. To specify a max number of results to retrieve, you can use the `limit` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20});\n```\n\nTo check if a next page of results is available, you can check for the `hasNextPage` boolean property. To actually fetch the next page of results, call the `next()` function obtained:\n\n```js\n  let {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n    .listRecords({limit: 20});\n  while (hasNextPage) {\n    const result = await next();\n    data = data.concat(result.data);\n    hasNextPage = result.hasNextPage;\n  }\n```\n\nLast, if you just want to retrieve and aggregate a given number of result pages, instead of dealing with calling `next()` recursively you can simply specify the `pages` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20, pages: 3}); // A maximum of 60 results will be retrieved here\n```\n\n> ##### Notes\n>\n> If you plan on fetching all the available pages, you can set the `pages` option to `Infinity`. Be aware that for large datasets this strategy can possibly issue an excessive number of HTTP requests.\n\n\n## Generic options for singular operations\n\n\"Singular\" operations such as [Bucket#getData()](#getting-bucket-data), [Bucket#getGroup](#getting-a-bucket-group), [Collection#getData](#getting-collection-data), and [Collection#getRecord](#retrieving-an-existing-record) support some shared options:\n\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n- `query`: Any extra query arguments to pass. This might be handy if you want to use a feature that this library doesn't support yet, or for implementing cache-busting URLs.\n\n\n## Events\n\nThe `KintoClient` exposes an `events` property you can subscribe public events from. That `events` property implements nodejs' [EventEmitter interface](https://nodejs.org/api/events.html#events_class_events_eventemitter).\n\n\n### The `backoff` event\n\nTriggered when a `Backoff` HTTP header has been received from the last received response from the server, meaning clients should hold on performing further requests during a given amount of time.\n\nThe `backoff` event notifies what's the backoff release timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"backoff\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Backed off; wait until ${releaseDate} to retry`);\n});\n```\n\n### The `deprecated` event\n\nTriggered when an `Alert` HTTP header is received from the server, meaning that a feature has been deprecated; the `event` argument received by the event listener contains the following deprecation information:\n\n- `type`: The type of deprecation, which in ou case is always `soft-eol` (`hard-eol` alerts trigger an `HTTP 410 Gone` error);\n- `message`: The deprecation alert message;\n- `url`: The URL you can get information about the related deprecation policy.\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"deprecated\", function(event) {\n  console.log(event.message);\n});\n```\n\n### The `retry-after` event\n\nSome errors on the server side are transient (service unavailable or integrity errors). A `Retry-After` HTTP header in the response indicates the duration in seconds that clients should wait before retrying the request.\n\nThe `retry-after` event notifies what is the timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"retry-after\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Wait until ${releaseDate} to retry`);\n});\n```\n\n> #### Note:\n> We also automatically retry all requests that have a Retry-After response.\n\n## Browser Compatibility\n\nThis library uses some features that are not supported on Internet Explorer or Safari.\n* Javascript [`Promise`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise#Browser_compatibility)\n* [`Object.assign()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Browser_compatibility)\n* [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Browser_compatibility)\n\nPlease [add polyfills](https://polyfill.io/v2/docs/features/) for these to get full functionality.\n\n## Upgrading\n\n### From 1.x to 2.x\n\n* `collection.listRecords()` now strips the quotes (`\"`) from the `last_modified` attribute in result object (#110).\n\n## Contributing\n\n### Coding style\n\nAll the JavaScript code in this project conforms to the [prettier](https://github.com/prettier/prettier) coding style. A command is provided to ensure your code is always formatted accordingly:\n\n```\n$ npm run cs-format\n```\n\nThe `cs-check` command ensures all files conform to that style:\n\n```\n$ npm run cs-check\n```\n\nConsider installing the pre-commit hooks that automatically format\nyour code and check that it's lint-free. To do so:\n\n- Install `pre-commit`, for example using `pip install --user pre-commit`\n- `pre-commit install` to set up the hooks\n- If you have any leftover `.git/hooks/pre-commit.legacy`, you can safely delete it.\n\n### Integration tests\n\nIt's possible to run the integration test suite against an external Kinto server instance. To do so you need to define the `TEST_KINTO_SERVER` environment variable and set it to the server base URL:\n\n```\n$ TEST_KINTO_SERVER=https://my.kinto-server.tld/v1 npm test\n```\n\n### Releasing\n\nIf you need to release a new version of kinto-http.js, you can follow\n[the Release documentation](https://github.com/Kinto/kinto-http.js/wiki/Releasing).\n","readmeFilename":"README.md","_id":"kinto-http@5.0.0-alpha.1","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-e0Rp2f7rBawKrG+zepR5LEaHerS5Xw0seU96JBEixn4N80GR0butkZj/mqLH0/KsSX7ISBuUcimH6/+yMGshag==","shasum":"5bfb343f1cf33140d6eb4fd9591d31e71f09e1fb","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.0.0-alpha.1.tgz","fileCount":49,"unpackedSize":1619723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTSSpCRA9TVsSAnZWagAAZlcP/2qCF+NIunekEUpBdiks\nuthD7hbiPoDMFagB71uMIriAw236NW7QviVGMWia55ux+m7Y4l6WdtgLphGo\nOin6M1W5+hxMu752Ta10hSNmUJLxLCQKjk+MG3NA921nezfCcfsnRNBukSL0\nPmwv9mhGnPPyuwEBEidAE3W5056Dfqw3ojuHbnPv64FYdURi8htGyrLWnJMF\n7WZsRyZz4QWn19kN442PBwB8yMK9G5b+6W9jvumjNHRI1vdZVWflZ9e0yvLw\nxUM+1K7ALd6oORyhsgykvB+OALfp4dO07ytQ4otDRMwQf1WTx7VdxT2QsuFJ\nItMac/UEm8Mgz5lZeMPP1+Hvs4FLPIdm1jPZ8JzCf9ynN44QGou0TPTEzsGK\nYsX/gWE/3kQTavZaI8y0p5YR277sUnbShvKCJLazDx1GQs8ifildT5oHr/cx\nBQYB1yfvSiLygAzlQ5jAfc4i3HzPmiik31L6nt8UD4+CDJot+l/607ynqyZV\nw7EpeLfy2cBU1XI79pCH2iLqpldUvtE+9QtI05Ow06P4Pz+GljSMPaGdz+qR\n6lA4IzNbkJ3/Wlm/LDFZZrnkSyGic3jj8GghBrJpZZmUFM/jNwk1bddX5TIx\n4yq+lQgKrUntRUc/iOzeHLcXagtEPBW9CM/940n+TsYF4ksHjh6C9LclSUfZ\nkzhA\r\n=3ESb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0tBmHATImu6uj285UlEYmrh154EbvEx6IF1WVpOjwdAiEAw3XwS/qmSsLAQH48l5nvRINAWvwuKZXKH6UqSlIpz1c="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.0.0-alpha.1_1565336744649_0.5837713673104477"},"_hasShrinkwrap":false},"5.0.0-alpha.2":{"name":"kinto-http","version":"5.0.0-alpha.2","description":"JavaScript HTTP client for the Kinto API.","main":"lib/cjs-es5/index.js","module":"lib/esm/index.js","unpkg":"dist/kinto-http.min.js","scripts":{"build":"npm run build:es && npm run build:cjs-es5","build:es":"tsc -p .","build:cjs-es5":"tsc -p . --outDir lib/cjs-es5 --module commonjs --target es5","build:demo":"npm run dist && cp dist/kinto-http.min.js demo/kinto-http.min.js && cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l '{src,test}/**/*.js'","cs-format":"prettier '{src,test}/**/*.js' --write","demo":"npm run build:demo && http-server demo","dist":"NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"mkdir -p dist && cp fx-src/jsm_prefix.js dist/moz-kinto-http-client.js && echo \"\n/*\n * Version $npm_package_version - $(git rev-parse --short HEAD)\n */\n\" >> dist/moz-kinto-http-client.js && cat dist/temp.js >> dist/moz-kinto-http-client.js && rm dist/temp.js && echo >> dist/moz-kinto-http-client.js","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' mocha -r ts-node/register --require ./test/setup-jsdom.js --watch 'test/**/*_test.{js,ts}'","test":"npm run test-nocover","test-cover":"nyc --reporter=lcov --reporter=text-summary --report-dir=coverage npm run test-nocover","test-cover-html":"nyc --reporter=html --report-dir=coverage npm run test-nocover && open coverage/index.html","test-nocover":"TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\",\"sourceMap\":true}' mocha -r ts-node/register --require source-map-support/register --full-trace --bail --require ./test/setup-jsdom.js 'test/**/*_test.{js,ts}'","lint":"eslint src test"},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^3.0.1"},"devDependencies":{"@types/chai":"^4.2.0","@types/chai-as-promised":"^7.1.2","@types/mocha":"^5.2.7","@types/sinon":"^7.0.13","@typescript-eslint/eslint-plugin":"^1.11.0","@typescript-eslint/parser":"^1.11.0","atob":"^2.1.2","btoa":"^1.1.2","chai":"^4.1.0","chai-as-promised":"^7.0.0","coveralls":"^3.0.0","esdoc":"^1.1.0","esdoc-accessor-plugin":"^1.0.0","esdoc-ecmascript-proposal-plugin":"^1.0.0","esdoc-importpath-plugin":"^1.0.2","esdoc-integrate-test-plugin":"^1.0.0","esdoc-publish-html-plugin":"^1.1.2","esdoc-type-inference-plugin":"^1.0.2","esdoc-undocumented-identifier-plugin":"^1.0.0","esdoc-unexported-identifier-plugin":"^1.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^2.1.2","http-server":"^0.11.1","jsdom":"^15.0.0","kinto-node-test-server":"^1.0.0","mocha":"^6.0.0","node-fetch":"^2.6.0","nyc":"^14.1.1","prettier":"^1.13.0","rollup":"^1.18.0","rollup-plugin-commonjs":"^10.0.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-resolve":"^5.1.0","rollup-plugin-terser":"^5.0.0","rollup-plugin-typescript":"^1.0.1","sinon":"^7.2.3","source-map-support":"^0.5.12","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typescript":"^3.5.2"},"engines":{"node":">=6"},"gitHead":"7c6a2c2e7218b8e010e9e2960e0ffefe8601bb7e","readme":"kinto-http.js\n=============\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/Kinto/kinto-http.js.svg)](https://greenkeeper.io/)\n\n[![Build Status](https://travis-ci.org/Kinto/kinto-http.js.svg?branch=master)](https://travis-ci.org/Kinto/kinto-http.js)\n\nA JavaScript HTTP Client for the [Kinto](http://kinto-storage.org/) API.\n\nRead the [API documentation](https://doc.esdoc.org/github.com/Kinto/kinto-http.js/).\n\n## Table of Contents\n\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Changelog](#changelog)\n  - [Usage](#usage)\n  - [Authentication](#authentication)\n     - [Using Basic Auth](#using-basic-auth)\n     - [Using an OAuth Bearer Token](#using-an-oauth-bearer-token)\n     - [Change headers](#change-headers)\n  - [Server information](#server-information)\n  - [Buckets](#buckets)\n     - [Listing buckets](#listing-buckets)\n     - [Creating a new bucket](#creating-a-new-bucket)\n     - [Selecting a bucket](#selecting-a-bucket)\n     - [Getting bucket data](#getting-bucket-data)\n     - [Setting bucket data](#setting-bucket-data)\n     - [Getting bucket permissions](#getting-bucket-permissions)\n     - [Setting bucket permissions](#setting-bucket-permissions)\n     - [Deleting a bucket](#deleting-a-bucket)\n     - [Creating a collection](#creating-a-collection)\n     - [Listing bucket collections](#listing-bucket-collections)\n     - [Collections list timestamp](#collections-list-timestamp)\n     - [Deleting a collection](#deleting-a-collection)\n     - [Creating a user group](#creating-a-user-group)\n     - [Listing bucket groups](#listing-bucket-groups)\n     - [Groups list timestamp](#groups-list-timestamp)\n     - [Getting a bucket group](#getting-a-bucket-group)\n     - [Updating an existing group](#updating-an-existing-group)\n     - [Deleting a group](#deleting-a-group)\n     - [Listing bucket history](#listing-bucket-history)\n  - [Collections](#collections)\n     - [Selecting a collection](#selecting-a-collection)\n     - [Getting collection data](#getting-collection-data)\n     - [Setting collection data](#setting-collection-data)\n     - [Getting collection permissions](#getting-collection-permissions)\n     - [Setting collection permissions](#setting-collection-permissions)\n     - [Creating a new record](#creating-a-new-record)\n     - [Retrieving an existing record](#retrieving-an-existing-record)\n     - [Updating an existing record](#updating-an-existing-record)\n     - [Deleting record](#deleting-record)\n     - [Listing records](#listing-records)\n     - [Total number of records](#total-number-of-records)\n     - [Records list timestamp](#records-list-timestamp)\n     - [Batching operations](#batching-operations)\n  - [Listing all resource permissions](#listing-all-resource-permissions)\n  - [Attachments](#attachments)\n     - [Adding an attachment to a record](#adding-an-attachment-to-a-record)\n     - [Updating an attachment](#updating-an-attachment)\n     - [Deleting an attachment](#deleting-an-attachment)\n  - [Generic bucket and collection options](#generic-bucket-and-collection-options)\n  - [The safe option explained](#the-safe-option-explained)\n     - [Safe creations](#safe-creations)\n     - [Safe updates](#safe-updates)\n     - [Safe deletions](#safe-deletions)\n  - [Generic options for list operations](#generic-options-for-list-operations)\n     - [Sorting](#sorting)\n     - [Polling for changes](#polling-for-changes)\n     - [Paginating results](#paginating-results)\n  - [Generic options for singular operations](#generic-options-for-singular-operations)\n  - [Events](#events)\n     - [The backoff event](#the-backoff-event)\n     - [The deprecated event](#the-deprecated-event)\n     - [The retry-after event](#the-retry-after-event)\n  - [Browser Compatibility](#browser-compatibility)\n  - [Upgrading](#upgrading)\n     - [From 1.x to 2.x](#from-1-x-to-2-x)\n  - [Contributing](#contributing)\n     - [Coding style](#coding-style)\n     - [Integration tests](#integration-tests)\n     - [Releasing](#releasing)\n\n---\n\n## Requirements\n\n- Kinto server v6.0.0+\n\n## Installation\n\nIn the browser, you can load prebuilt scripts hosted on unpkg:\n\n- [kinto-http.min.js](https://unpkg.com/kinto-http/dist/kinto-http.min.js)\n\n```html\n<script src=\"https://unpkg.com/kinto-http/dist/kinto-http.min.js\"></script>\n```\n\nIn nodejs:\n\n```\n$ npm install kinto-http --save\n```\n\nThen (ES6):\n\n```js\nimport KintoClient from \"kinto-http\";\n```\n\nOr (ES5):\n\n```js\nvar KintoClient = require(\"kinto-http\");\n```\n\nNote that this HTTP client can be transparently used server side or in a regular browser page. In the browser, creating an instance is achieved that way:\n\n```js\nconst client = new KintoClient(\"http://\");\n```\n\n## Changelog\n\nSee [upgrading docs](#upgrading) and the full [detailed changelog on Github](https://github.com/Kinto/kinto-http.js/releases).\n\n\n## Usage\n\nA client instance is created using the `KintoClient` constructor, passing it the remote Kinto server root URL, including the version:\n\n```js\nconst client = new KintoClient(\"https://kinto.dev.mozaws.net/v1\");\n```\n\n#### Options\n\n- `safe`: Adds concurrency headers to every requests. (default: `false`)\n- `events`: The events handler. If none provided an `EventEmitter` instance will be created\n- `headers`: The key-value headers to pass to each request. (default: `{}`)\n- `retry`: Number of retries to make when the server responds with a `Retry-After` response. (default: `0`)\n- `bucket`: The default bucket to use. (default: `\"default\"`)\n- `requestMode`: The HTTP [CORS](https://fetch.spec.whatwg.org/#concept-request-mode) mode. (default: `\"cors\"`)\n- `timeout`: The requests timeout in milliseconds. (default: `null`, which means \"no timeout\")\n\n\n## Authentication\n\nAuthenticating against a Kinto server can be achieved by adding an `Authorization` header to the request.\n\nBy default Kinto server supports Basic Auth authentication, but others mechanisms can be activated such as OAuth (eg. [Firefox Account](https://accounts.firefox.com/))\n\n### Using Basic Auth\n\nSimply provide an `Authorization` header option to the `Kinto` constructor:\n\n```js\nconst secretString = `${username}:${password}`;\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: \"Basic \" + btoa(secretString)\n  }\n});\n```\n\n> #### Notes\n>\n> - As explained in the [server docs](http://kinto.readthedocs.io/en/stable/api/1.x/authentication.html#basic-auth), any string is accepted. You're not obliged to use the `username:password` format.\n\n### Using an OAuth Bearer Token\n\nAs for Basic Auth, once you have retrieved a valid OAuth Bearer Token, simply pass it in an `Authorization` header:\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: `Bearer ` + oauthBearerToken)\n  }\n});\n```\n\n### Change headers\n\nRequests headers can be altered using `setHeaders()`.\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\");\n\n// Login somewhere...\n// [...]\n\nkinto.setHeaders({\n    Authorization: `Bearer ` + accessToken,\n});\n\n```\n\n## Server information\n\nA Kinto server exposes some of its internal settings, information about authenticated user, the HTTP API version and the API capabilities (e.g. plugins).\n\n```js\nconst info = await client.fetchServerInfo([options]);\n```\n\nSample result:\n\n```js\n{\n    \"project_name\": \"kinto\",\n    \"project_version\": \"3.0.2\",\n    \"url\": \"http://0.0.0.0:8889/v1/\",\n    \"project_docs\": \"https://kinto.readthedocs.io/\",\n    \"http_api_version\": \"1.6\",\n    \"settings\": {\n        \"batch_max_requests\": 25,\n        \"readonly\": false\n    },\n    \"user\": {\n        \"bucket\": \"2f9b1aaa-552d-48e8-1b78-371dd08688b3\",\n        \"id\": \"basicauth:f505765817a6b4ea46278be0620ddedd83b10f71f7695683719fe001cf0871d7\"\n    },\n    \"capabilities\": {\n        \"default_bucket\": {\n            \"description\": \"The default bucket is an alias for a personal bucket where collections are created implicitly.\",\n            \"url\": \"http://kinto.readthedocs.io/en/latest/api/1.x/buckets.html#personal-bucket-default\"\n        }\n    }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Helpers\n\n- `fetchServerSettings([options])`: server settings\n- `fetchServerCapabilities([options])`: API capabilities\n- `fetchUser()`: authenticated user information\n- `fetchHTTPApiVersion([options])`: HTTP API version\n\n\n## Buckets\n\n### Listing buckets\n\n```js\nconst {data} = await client.listBuckets([options]);\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      id: \"comments\",\n      last_modified: 1456182233221,\n    },\n    {\n      id: \"blog\",\n      last_modified: 1456181213214,\n    },\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n### Creating a new bucket\n\n```js\nconst result = await client.createBucket(\"blog\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182233221,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nIt's alternatively possible to create a bucket without specifying an `id`, so the\nKinto server will create one for you:\n\n```js\nconst result = await client.createBucket();\n```\n\nNote: if you plan on providing options along id autogeneration, you have to specify\n`null` as the first argument:\n\n```js\nconst result = await client.createBucket(null, {data: {foo: 42}, retry: 3});\n```\n\n#### Options\n\n- `data`: Arbitrary data to attach to the bucket\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Selecting a bucket\n\n```js\nclient.bucket(\"blog\");\n```\n\n### Getting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456182336242,\n  \"id\": \"blog\",\n  \"foo\": \"bar\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").setData({foo: \"bar\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182336242,\n    \"id\": \"blog\",\n    \"foo\": \"bar\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches existing bucket data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Getting bucket permissions\n\n```js\nconst result = client.bucket(\"blog\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting bucket permissions\n\n```js\nconst permissions = {\n  read:  [\"github:bob\"],\n  write: [\"github:bob\", \"github:john\"]\n};\n\nconst result = await client.bucket(\"blog\").setPermissions(permissions[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182888466,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n### Deleting a bucket\n\n```js\nconst result = await client.deleteBucket(\"testbucket\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456182931974,\n    \"id\": \"blog\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a collection\n\n#### Named collection\n\n```js\nconst result = await client.bucket(\"blog\").createCollection(\"posts\");\n```\n\nSample result:\n\n```js\n\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createCollection();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"id\": \"OUh5VEDa\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `OUh5VEDa` is the collection ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createCollection(undefined, {safe: true})`\n\n### Listing bucket collections\n\n```js\nconst {data} = await client.bucket(\"blog\").listCollections();\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"posts\"\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"comments\"\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Collections list timestamp\n\nThe timestamp of the collections list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getCollectionsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Deleting a collection\n\n```js\nconst result = await client.bucket(\"blog\").deleteCollection(\"test\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"posts\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a user group\n\nKinto has a concept of groups of users. A group has a list of members and belongs to a bucket.\n\nPermissions can refer to the group instead of an individuals - this makes it easy to define «roles», especially if the same set of permissions is applied to several objects.\n\nWhen used in permissions definitions, the full group URI has to be used:\n\n```js\n    {\n      data: {\n        title: \"My article\"\n      },\n      permissions: {\n        write: [\"/buckets/blog/groups/authors\", \"github:lili\"],\n        read: [\"system.Everyone\"]\n      }\n    }\n```\n\n#### Named group\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": []\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With a list of members and attributes\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\", [\"system.Authenticated\"], {data: {pi: 3.14}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": [\"system.Authenticated\"],\n    \"pi\": 3.14\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createGroup();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"members\": [],\n    \"id\": \"7YHFF565\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `7YHFF565` is the group ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n- `data`: Extra group attributes\n- `permissions`: Permissions to be set on the created group\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createGroup(undefined, [], {safe: true})`\n\n\n### Listing bucket groups\n\n```js\nconst {data} = await client.bucket(\"blog\").listGroups();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"moderators\",\n      \"members\": [\"github:lili\"]\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Groups list timestamp\n\nThe timestamp of the groups list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getGroupsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Getting a bucket group\n\n```js\nconst {data} = await client.bucket(\"blog\").getGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing group\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  members: [\"system.Everyone\", \"github:lili\"],\n  pi: 3.141592\n};\n\nconst result = await client.bucket(\"blog\").updateGroup(updated, {permissions: {write: [\"fxa:35478\"]}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"members\": [\"system.Everyone\", \"github:lili\"],\n    \"pi\": 3.141592\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"fxa:35478\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `permissions`: Permissions to be set on the group\n\n### Deleting a group\n\n```js\nconst result = await client.bucket(\"blog\").deleteGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"admins\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n\n### Listing bucket history\n\n```js\nconst {data} = await client.bucket(\"blog\").listHistory();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"action\": \"update\",\n      \"collection_id\": \"articles\",\n      \"date\": \"2016-07-20T11:18:36.530281\",\n      \"id\": \"cb98ecd7-a66f-4f9d-82c5-73d06930f4f2\",\n      \"last_modified\": 1469006316530,\n      \"record_id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"resource_name\": \"record\",\n      \"target\": {\n          \"data\": {\n              \"id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n              \"last_modified\": 1469006316529,\n              \"title\": \"Modified title\"\n          },\n          \"permissions\": {\n              \"write\": [\n                  \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\"\n              ]\n          }\n      },\n      \"timestamp\": 1469006098757,\n      \"uri\": \"/buckets/blog/collections/articles/records/b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"user_id\": \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\",\n    }\n  ]\n}\n\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n## Collections\n\n### Selecting a collection\n\n```js\nconst posts = client.bucket(\"blog\").collection(\"posts\");\n```\n\n### Getting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456183561206,\n  \"id\": \"posts\",\n  \"preferedAuthor\": \"@chucknorris\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setData({preferedAuthor: \"@chucknorris\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183561206,\n    \"id\": \"posts\",\n    \"preferedAuthor\": \"@chucknorris\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Getting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setPermissions({\n    read: [\"github:bob\"],\n    write: [\"github:john\", \"github:bob\"]\n  });\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183508926,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n\n### Creating a new record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .createRecord({title: \"My first post\", content: \"Hello World!\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request;\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists and if an id is provided (default: `false`)\n\n### Retrieving an existing record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing record\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  title: \"My first post, edited\",\n  content: \"Hello World, again!\"\n};\n\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .updateRecord(updated);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World, again!\",\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post, edited\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n\n### Deleting record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183877287,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`);\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server.\n\n### Listing records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords();\n```\n\nSample result:\n\n```js\n{\n  last_modified: \"1456183930780\",\n  next: <Function>,\n  totalRecords: 2,\n  data: [\n    {\n      \"content\": \"True.\",\n      \"last_modified\": 1456183930780,\n      \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\",\n      \"title\": \"I love cheese\"\n    },\n    {\n      \"content\": \"Yo\",\n      \"last_modified\": 1456183914275,\n      \"id\": \"63c1805a-565a-46cc-bfb3-007dfad54065\",\n      \"title\": \"Another post\"\n    }\n  ]\n}\n```\n\nThe result object exposes the following properties:\n\n- `last_modified`: the [collection's timestamp](http://kinto.readthedocs.io/en/stable/api/1.x/timestamps.html). (Note: this value is the same as the one returned by [`getRecordsTimestamp()`](#records-list-timestamp))\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `totalRecords`: the total number of records in the **entire collection**. This number can alternatively be retrieved using the `getTotalRecords()` method of the collection API\n- `data`: the list of records\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `at`: Retrieve the records list at at a given timestamp back in time (note: full list is always returned, this option doesn't support pagination and will reject if the [History plugin](http://kinto.readthedocs.io/en/stable/api/1.x/history.html) isn't enabled or has been enabled after the creation of the collection.)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Total number of records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getTotalRecords();\n```\n\nSample result:\n\n```js\n42\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Records list timestamp\n\nThe timestamp of the records list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .collection(\"posts\")\n  .getRecordsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Batching operations\n\nThis allows performing multiple operations in a single HTTP request.\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .batch(batch => {\n    batch.deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n    batch.createRecord({title: \"new post\", content: \"yo\"});\n    batch.createRecord({title: \"another\", content: \"yo again\"});\n  });\n```\n\nSample result:\n\n```js\n[\n  {\n    \"status\": 200,\n    \"path\": \"/v1/buckets/blog/collections/posts/records/a89dd4b2-d597-4192-bc2b-834116244d29\",\n    \"body\": {\n      \"data\": {\n        \"deleted\": true,\n        \"last_modified\": 1456184078090,\n        \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\"\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"99\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo\",\n        \"last_modified\": 1456184078096,\n        \"id\": \"afd650b3-1625-42f6-8994-860e52d39201\",\n        \"title\": \"new post\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"221\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo again\",\n        \"last_modified\": 1456184078102,\n        \"id\": \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\",\n        \"title\": \"another\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"226\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  }\n]\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `aggregate`: Produces an aggregated result object, grouped by operation types; the result object has the following structure:\n\n```js\n{\n  \"errors\":    [], // Encountered errors (HTTP 400, >=500)\n  \"published\": [], // Successfully published resources (HTTP 200, 201)\n  \"conflicts\": [], // Conflicting resources (HTTP 412)\n  \"skipped\":   []  // Missing target resources on the server (HTTP 404)\n}\n```\n\n## Listing all resource permissions\n\nIf the [`permissions_endpoint` capability](http://kinto.readthedocs.io/en/stable/api/1.x/permissions.html#list-every-permissions) is installed on the server, you can retrieve the list of all permissions set for the authenticated user using the `listPermissions()` method:\n\n```js\nconst result = await client.listPermissions([options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"bucket_id\": \"mybucket\",\n      \"id\": \"mybucket\",\n      \"permissions\": [\n        \"write\",\n        \"read\",\n        \"group:create\",\n        \"collection:create\"\n      ],\n      \"resource_name\": \"bucket\",\n      \"uri\": \"/buckets/mybucket\"\n    },\n    ...\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Result object properties\n\n- `last_modified`: the last modified value for the list of permissions\n- `hasNextPage`: a boolean informing if a next page is available; when that's the case, you can call `next()`\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `data`: the list of permissions\n- `totalRecords`: the total number of permissions listed in the `data` property array\n\n## Attachments\n\nIf the [attachment](https://github.com/Kinto/kinto-attachment) capability is available from the Kinto server, you can attach files to records. Files must be passed as [data urls](http://dataurl.net/#about), which can be generated using the [FileReader API](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL) in the browser.\n\n### Adding an attachment to a record\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {title: \"First post\"});\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server\n- `permissions`: Permissions to be set on the record\n- `filename`: Allows to specify the attachment filename, in case the data URI does not contain any, or if the file has to be renamed on upload\n\n\n### Updating an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {id: \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\"});\n```\n\n### Deleting an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .removeAttachment(\"22c1319e-7b09-46db-bec4-c240bdf4e3e9\");\n```\n\n## Generic bucket and collection options\n\nBoth `bucket()` and `collection()` methods accept an `options` object as a second arguments where you can define the following options:\n\n- `{Object} headers`: Custom headers to send along the request;\n- `{Boolean} safe`: Ensure safe transactional operations; read more about that below.\n- `{Number} retry`: Default number of times to retry requests when faced with transient errors.\n\nSample usage:\n\n```js\nclient.bucket(\"blog\", {\n  headers: {\"X-Hello\": \"Hello!\"},\n  safe: true,\n  retry: 2,\n});\n```\n\nHere the `X-Hello` header and the `safe` option will be used for building every outgoing request sent to the server, for every collection attached to this bucket.\n\nThis works at the collection level as well:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\", {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nEvery request sent for this collection will have the options applied.\n\nLast, you can of course pass these options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nThe cool thing being you can always override the default defined options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\", {safe: true})\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: false});\n```\n\n## The `safe` option explained\n\nThe `safe` option can be used:\n\n- when creating or updating a resource, to ensure that any already existing record matching the provided ID won't be overridden if it exists on the server;\n- when updating or deleting a resource, to ensure it won't be overridden remotely if it has changed in the meanwhile on the server (requires a `last_modified` value to be provided).\n\n### Safe creations\n\nWhen creating a new ressource, using the `safe` option will ensure the resource will be created only if it doesn't already exist on the server.\n\n### Safe updates\n\nIf a `last_modified` property value is set in the resource object being updated, the `safe` option will ensure it won't be overriden if it's been modified on the server since that `last_modified` timestamp, raising an `HTTP 412` response describing the conflict when that happens:\n\n```js\nconst updatedRecord = {\n  id: \"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\",\n  title: \"new post, modified\",\n  content: \"yoyo\",\n  last_modified: 1456184189160\n};\n\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: true});\n```\n\nIf this record has been modified on the server already, meaning its `last_modified` is greater than the one we provide , we'll get a `412` error response.\n\nIf no `last_modified` value is provided at all, a safe update will simply guarantee that an existing resource with the provided ID won't be overriden.\n\n### Safe deletions\n\nThe same applies for deletions, where you can pass both a `safe` and `last_modified` options:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .deleteRecord(\"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\", {\n    safe: true,\n    last_modified: 1456184189160\n  });\n```\n\n## Generic options for list operations\n\nEvery list operations like [listBuckets()](#listing-buckets), [listCollections](#listing-bucket-collections), [listHistory](#listing-bucket-history), [listGroups()](#list-bucket-groups) or [listRecords()](#listing-records) accept parameters to sort, filter and paginate the results:\n\n- `sort`: The order field (default: `-last_modified`);\n- `pages`: The number of result pages to retrieve (default: `1`);\n- `limit`: The number of records to retrieve per page: unset by default, uses default server configuration;\n- `filters`: An object defining the filters to apply; read more about [what's supported](http://kinto.readthedocs.io/en/stable/api/1.x/filtering.html);\n- `since`: The ETag header value received from the last response from the server.\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n\n### Sorting\n\nBy default, results are listed by `last_modified` descending order. You can set the `sort` option to order by another field:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({sort: \"title\"});\n```\n\n### Polling for changes\n\nTo retrieve the results modified since a given timestamp, use the `since` option:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({since: \"1456183930780\"});\n```\n\n### Paginating results\n\nBy default, all results of the first page are retrieved, and the default configuration of the server defines no limit. To specify a max number of results to retrieve, you can use the `limit` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20});\n```\n\nTo check if a next page of results is available, you can check for the `hasNextPage` boolean property. To actually fetch the next page of results, call the `next()` function obtained:\n\n```js\n  let {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n    .listRecords({limit: 20});\n  while (hasNextPage) {\n    const result = await next();\n    data = data.concat(result.data);\n    hasNextPage = result.hasNextPage;\n  }\n```\n\nLast, if you just want to retrieve and aggregate a given number of result pages, instead of dealing with calling `next()` recursively you can simply specify the `pages` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20, pages: 3}); // A maximum of 60 results will be retrieved here\n```\n\n> ##### Notes\n>\n> If you plan on fetching all the available pages, you can set the `pages` option to `Infinity`. Be aware that for large datasets this strategy can possibly issue an excessive number of HTTP requests.\n\n\n## Generic options for singular operations\n\n\"Singular\" operations such as [Bucket#getData()](#getting-bucket-data), [Bucket#getGroup](#getting-a-bucket-group), [Collection#getData](#getting-collection-data), and [Collection#getRecord](#retrieving-an-existing-record) support some shared options:\n\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n- `query`: Any extra query arguments to pass. This might be handy if you want to use a feature that this library doesn't support yet, or for implementing cache-busting URLs.\n\n\n## Events\n\nThe `KintoClient` exposes an `events` property you can subscribe public events from. That `events` property implements nodejs' [EventEmitter interface](https://nodejs.org/api/events.html#events_class_events_eventemitter).\n\n\n### The `backoff` event\n\nTriggered when a `Backoff` HTTP header has been received from the last received response from the server, meaning clients should hold on performing further requests during a given amount of time.\n\nThe `backoff` event notifies what's the backoff release timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"backoff\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Backed off; wait until ${releaseDate} to retry`);\n});\n```\n\n### The `deprecated` event\n\nTriggered when an `Alert` HTTP header is received from the server, meaning that a feature has been deprecated; the `event` argument received by the event listener contains the following deprecation information:\n\n- `type`: The type of deprecation, which in ou case is always `soft-eol` (`hard-eol` alerts trigger an `HTTP 410 Gone` error);\n- `message`: The deprecation alert message;\n- `url`: The URL you can get information about the related deprecation policy.\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"deprecated\", function(event) {\n  console.log(event.message);\n});\n```\n\n### The `retry-after` event\n\nSome errors on the server side are transient (service unavailable or integrity errors). A `Retry-After` HTTP header in the response indicates the duration in seconds that clients should wait before retrying the request.\n\nThe `retry-after` event notifies what is the timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"retry-after\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Wait until ${releaseDate} to retry`);\n});\n```\n\n> #### Note:\n> We also automatically retry all requests that have a Retry-After response.\n\n## Browser Compatibility\n\nThis library uses some features that are not supported on Internet Explorer or Safari.\n* Javascript [`Promise`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise#Browser_compatibility)\n* [`Object.assign()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Browser_compatibility)\n* [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Browser_compatibility)\n\nPlease [add polyfills](https://polyfill.io/v2/docs/features/) for these to get full functionality.\n\n## Upgrading\n\n### From 1.x to 2.x\n\n* `collection.listRecords()` now strips the quotes (`\"`) from the `last_modified` attribute in result object (#110).\n\n## Contributing\n\n### Coding style\n\nAll the JavaScript code in this project conforms to the [prettier](https://github.com/prettier/prettier) coding style. A command is provided to ensure your code is always formatted accordingly:\n\n```\n$ npm run cs-format\n```\n\nThe `cs-check` command ensures all files conform to that style:\n\n```\n$ npm run cs-check\n```\n\nConsider installing the pre-commit hooks that automatically format\nyour code and check that it's lint-free. To do so:\n\n- Install `pre-commit`, for example using `pip install --user pre-commit`\n- `pre-commit install` to set up the hooks\n- If you have any leftover `.git/hooks/pre-commit.legacy`, you can safely delete it.\n\n### Integration tests\n\nIt's possible to run the integration test suite against an external Kinto server instance. To do so you need to define the `TEST_KINTO_SERVER` environment variable and set it to the server base URL:\n\n```\n$ TEST_KINTO_SERVER=https://my.kinto-server.tld/v1 npm test\n```\n\n### Releasing\n\nIf you need to release a new version of kinto-http.js, you can follow\n[the Release documentation](https://github.com/Kinto/kinto-http.js/wiki/Releasing).\n","readmeFilename":"README.md","_id":"kinto-http@5.0.0-alpha.2","_nodeVersion":"10.9.0","_npmVersion":"6.9.0","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-skDqE6Vv7YKcx1vW8JehpRXps/0X5fAP0a+cLCUKiM/7NHTJmHs9cXSl8NmvxrbDguPfPb3PvM5ZzyP+4jkA6A==","shasum":"a49f1e08682160c7a9d832f2d97f0e11e948f2aa","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.0.0-alpha.2.tgz","fileCount":52,"unpackedSize":1630861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdY/iDCRA9TVsSAnZWagAApawQAJlBRrYN1L4b/KHjrL4A\nHBqs9RcGfZ59/gg2oWz7iErFTgZUpfiZQU6tvNhhbZSc3h4pzkAdhIO6Wbv7\n+p3yFhShwMosQzFeCZqnTDH7cayoTt5isjtx5P9h6nFH4oVFYwMtgLyfhaGs\nrKDFAygKRfrYHEhl7YL4vG9rPJw1bPJPRw6WWp4+6fme99kL4X9jC82IfKtW\n8tnXCEYgMVJT+4nnCHdBT3njx9EIlfewOQlmk4syoXirW0J+Db/lvXNnzd7j\nMUX12Rs/yTq3CoVUdoBysVJgJo3ZUz06nLAYYI0T3YRCSuNtS1zlgUZrt9Ar\nEhgc/7d3N0KaRtADz4xerAnHAQmaNxZM5Nb+TYZAnYzqUAFKhlgKuOoCdlag\n5pbFbTwcKR4Ge2e7dmGxp2ylldDMHm+PEcFWltqGdv/cDZrOXVhxlZJLtGVY\nHwwgi+/gxtO04F+lVBFw4tUZb6AWdEOAvqd+rvLacbReT/9h6rQMbhKgRDca\nuOgU2lOYO4It6Bq4qKXmi/Qm4Nh0JSlotLF9WDUuu0s/rkv7Y8W+5MIsTxUr\n1JfVOUofbK5NhJ0yVPjmQs2hvd5/66mC2neOe8GWR0p+CB8EqFB/Mqm8sYh0\n1lMX9LQyGX1YqSFK4247Qx8GZjZ8eFrqYNqanD7HBU52HXurid3m7INY+n94\nj9Ls\r\n=0qyq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHQbIT6LDiXFOPQ7fAZtkkfUiXotQ5if/hBh5qxIrAg2AiEAuVO0iRK44H6CBFIGPY8oMuBGHujz7OQec9wWrvJS38Y="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.0.0-alpha.2_1566832771226_0.9060012863093425"},"_hasShrinkwrap":false},"5.0.0-alpha.3":{"name":"kinto-http","version":"5.0.0-alpha.3","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"npm run test-cover && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info","tdd":"mocha -r ts-node/register --require ./test/setup-globals.ts --watch \"test/**/*_test.{js,ts}\"","test":"npm run test-nocover","test-cover":"nyc --reporter=lcov --reporter=text-summary --report-dir=coverage npm run test-nocover","test-cover-html":"nyc --reporter=html --report-dir=coverage npm run test-nocover && open coverage/index.html","test-nocover":"mocha -r ts-node/register --require source-map-support/register --full-trace --bail --require ./test/setup-globals.ts \"test/**/*_test.{js,ts}\"","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^7.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^11.0.1","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-node-resolve":"^7.0.0","@rollup/plugin-typescript":"^3.0.0","@types/chai":"^4.2.0","@types/mocha":"^7.0.1","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^7.0.13","@types/uuid":"^7.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","chai":"^4.1.0","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^3.0.0","http-server":"^0.12.0","kinto-node-test-server":"^1.0.0","mitt":"^1.2.0","mocha":"^7.0.0","node-fetch":"^2.6.0","nyc":"^15.0.0","prettier":"^1.13.0","rollup":"^1.18.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-terser":"^5.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","source-map-support":"^0.5.12","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typedoc":"^0.16.2","typescript":"^3.5.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"a7184a52f0c050145a9b8c04904229fdbc64d819","_id":"kinto-http@5.0.0-alpha.3","_nodeVersion":"12.15.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-7+a2NqxuSOZi49ON1ZndYYWxdrqlU6Dz49IwZPcO4KNthtMx1DHFE0SkxxpvDLQei0AufbUQXxLaOpVKE/sNlg==","shasum":"bf60e0c959fd9050fcc00c6c37e4f8aaa61603ae","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.0.0-alpha.3.tgz","fileCount":34,"unpackedSize":807502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeYemVCRA9TVsSAnZWagAABOwP/Azvydm8C+N1zg/gVSZv\nGd6n6LhCHV0awYb/i4ID3+7xoZ3ubCIFNtNry4k+hDzYcYofu4mbX9mBFOVT\ne0Mc7yJkIL/cAubXE6QVCePYRVvx9Ywlen1XePW0/ZARJV+Arm1JFSBebOPL\nHwkG5WFjBrQQM17QGj6XPiyFOEn2XpOwfrSTAxdB677ueF74SfpYMjs8ftNX\nqZhVVTUkTqdtifgrSIDUgHZPERqS+KdKrVn3VCrME9VM/7od8dWFpPF7qXjw\n11BM+yHx3QtsmScgk+TfLhJbOz0CFNbY10QZxWIRYhDjAJZi3KmRGrUTc3E2\nmo4wj6qQU+O3lAEGVuw6VsJ5wl74/MBB1adzGjCSqwdEumx2JLV7LsaicZIx\nVvJPPzqMZndQKkzeXyQP7oJxGQKTiJJAWWw5iLhPIzYSmZ2awN55CuWUIrUU\nlktzrQbuwxnIAbMt+VH1V6Ffip/uy4hJf9QiIyvij2SWtc8xqVrkk4aTCZzE\nkCR3wYaY2CySarff4uC8X5/JZ0+SPY8U2S10YlNVdo4av9q+nC85dYoSVvR/\nIO07G0+S4wjTbRqDTf+G6scWkPafy3DPePICJqDHRSRGWRHszyVzIIDkbSqF\nHv0O9AmG48l1tBAVyBYzASq6wOnWqmVoCrvtEitEODt1XeI28jX4srheJ2mG\nPo+X\r\n=tAn3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJm5Lm7g866gCzyDd2d5lyuGdKDWWPJvaf7SQsKUaSEQIhAOeMu0BrBdCnh8ffSJ1rbIHnP/w6ltCwtu1v4EHqBnhR"}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"_npmUser":{"name":"dstaley","email":"staley.dylan@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.0.0-alpha.3_1583475092628_0.3679137096398164"},"_hasShrinkwrap":false},"5.0.0":{"name":"kinto-http","version":"5.0.0","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^7.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^11.0.1","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^3.0.0","@rollup/plugin-node-resolve":"^7.0.0","@rollup/plugin-replace":"^2.3.1","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^9.0.0","@types/uuid":"^7.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^3.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"0.0.0-experimental-97f199b","mitt":"^1.2.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^6.0.1","prettier":"^2.0.1","rollup":"^1.18.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-terser":"^5.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typedoc":"^0.17.0","typescript":"^3.5.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"5b8da055e37eda0b88ccd8ce309054ad53625ef7","_id":"kinto-http@5.0.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-dEW9aRnTgpaauTd0N/YNGoFhUlvkB0JS2lT4AP+anRYIWXem8Kd+cC1Uky67gcZutjPIX5Hn/ErXz1og0bf3dA==","shasum":"f13666964f93a6876468b34b6519a5eeed39b441","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.0.0.tgz","fileCount":61,"unpackedSize":1856363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelY2aCRA9TVsSAnZWagAAhPQQAIVazu0LKpTStyBM28hP\naOyyr62VgA3gECtyyx/1RjcwbGISIrGPZQ+DmSktDnpNpYh4oONu0cpaY9xs\nFdZN5WBdZEu1/Bzv6FwiZxyHLgZp3yeUtusv7IhcZO45qmQRgCZQ4d6rOsQ8\nrKWy/eFe/nUNxpFeAMUbaRMILF6ec9/A0jpXsSRJOH1DuVM4gzQ/7R8xQFfA\nzYyQFgFmkP0N6wNKimC7gVdfVzB5U6A1GrbJQ5YvERkycgl98+lYCR4RBw5k\nS7c99jMLnUi3ilLUFYsTcmWZcndGGbAe9ZujHf5aMBPrWpjDNIt44FuH9i9X\nNw5XcJ/9PV9vD+mkgKRMBv2rvAN+2sxC4KTxaHJQPpkXxb/EVfukEqx33a/9\nD/px/fURgQ4GpSEp09lwRwCojBPbS/ydlF9dzFU/H/F6uC49Xy9w8iyK2B80\nfL3YoQwHEreB7usyXv1vuFJQo3arOpvMimYXis+mbzTP6+8oHuZ3KIAVsB2N\nqauBxWiknXyW6NaSFv8suhuhWXAe5ip245T8cJ0IkPTFG1LVoxMs1C8icJsc\ngZmZkHLbIxpVyEEuuLQD/nCTjVhH7tdKJ0+wnYXbXbwOf4BXRDLX+FOku9WB\nrP/SY7SLdMJyY37OiubKHSBFCD5Rgy/izgVcf8bzamL6mQstuhs1ZJ2jvneH\ncliy\r\n=1ZLY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWmftWBTFXWzsdnEXM3a4/ZWm7boWO7aiq3uvG5yx+AAiBw9kfS5wYr9Xab69ogMDXboBGbArPJ/iTuELwhH7i4ZA=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.0.0_1586859417432_0.11211967005982926"},"_hasShrinkwrap":false},"5.1.0":{"name":"kinto-http","version":"5.1.0","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^7.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^11.0.1","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^3.0.0","@rollup/plugin-node-resolve":"^7.0.0","@rollup/plugin-replace":"^2.3.1","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^9.0.0","@types/uuid":"^7.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^3.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"2.0.0","mitt":"^1.2.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^6.0.1","prettier":"^2.0.1","rollup":"^1.18.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-terser":"^5.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typedoc":"^0.17.0","typescript":"^3.5.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"46d2906cbd70edd01fe1a80e9bbf0ac4fd13ecf6","_id":"kinto-http@5.1.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-Snj/ZyQcpyFSuWFwBhBQXVusre+D0R8y2fQPMg09kQ+rgW/b34td3a3ke9uBIhxZmfLkvHxoDv8qKmBZKdNiUQ==","shasum":"faba574ab3265a32391aa2a8b2d00eeea314c1db","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.1.0.tgz","fileCount":61,"unpackedSize":1857596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenWg7CRA9TVsSAnZWagAA/LYP/3LkjM0z1+vFLA2tz3Mn\ncdTseDs+IskvCZwVzHDbcGpt5CeoeRyAP3qJ8Dtn1kU6P3ncRQI7GjQZmr8m\nmYNcmSERKm5AZlyl8DcOshknynLWJpo7ycbRY+evO2X+xKW/6I3HiwQNqoVY\nGls49nHYOPijjMN83hun+Zwmr76HqWO7EqrOKRHcBxVTPzNfZNndC91iYNI9\n9sBzAtkpFlt91dXvXgJi9gtwaOpfj2sPNtKwvCOlN75TXj6sJslnYX/6w9Tw\nB+tc5w1Pd4J9VraXILQes7AjFwGDJM749iik29ick9TOFlWig5ONRsjiM9J0\neCiFZNTgjAGDK/PGSLw28QeEY5zFHADfjWgxhzLBubNgnFWSKQRIZ2+Acw27\nXWRa1wZv6kDQCnM+G3R+fl3AH/T2c1AukH2y0Q7bqvZj9zZary9pkrBNyvpi\nQYWp8MPVLfO7U2NAfs8OS3HAz68JCaAnT5PBpixEQALAtYPhrKAKv228Viub\nnXw3x/DSFz9Q3LTwq/iUISG5KdV/H5dK1dat6rvIQhdD53uWnqsoi4uKjWI7\nim4iRP9o222WGbGahKWyRbfOCqbMICo3xMY22o4m8uRdB1jEGZMKLA9fQkmC\nbjNoTOL8uxLPmR5Ldn2GbC+yMYi23QWYo2yNlJKN3O7d6uoR5TbFPpVM/dc5\nyJNy\r\n=89QY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNBzAGXJi6uI7df+krRR8Ih9oHTbudLLZQp8difzK2owIgTSTePEk4MKQN60KV4N3HF+pTEzd1v/mchlAkmdfvZc0="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.1.0_1587374138538_0.7619670443024857"},"_hasShrinkwrap":false},"5.1.1":{"name":"kinto-http","version":"5.1.1","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^7.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^11.0.1","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^3.0.0","@rollup/plugin-node-resolve":"^7.0.0","@rollup/plugin-replace":"^2.3.1","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^9.0.0","@types/uuid":"^7.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^6.0.1","eslint-config-prettier":"^6.0.0","form-data":"^3.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"2.0.0","mitt":"^1.2.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^6.0.1","prettier":"^2.0.1","rollup":"^1.18.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-terser":"^5.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","toctoc":"^0.3.0","ts-node":"^8.3.0","tslib":"^1.10.0","typedoc":"^0.17.0","typescript":"^3.5.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"30c540a3975c0df9785ae2eba92612c886be7eff","_id":"kinto-http@5.1.1","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"dist":{"integrity":"sha512-Hg1Yqc/HgmMHv2VFAxHoXp91hVbOZeymQG7/qoniRndUHJ4p7bUkzYEZ/1lDnWxmkziI1zoU0w6d0dHEVaJ5Tg==","shasum":"75af2b74885d48664ea8e1af6fe25d567c9e4961","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.1.1.tgz","fileCount":61,"unpackedSize":1857926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJenbUaCRA9TVsSAnZWagAAXdgP/09WTt1zKeifeuUNrVlq\nLJNSQmGClOxT9dWZ6VoiFmKmkxH1c0xNWxAzoQzRc+qBUSo54MktSdnNiuKL\nUde/jOinlecOXHPzFQa14ehxhR+PR4MvxGtpBoqmGnv7Z427KJG6Ooyg9bLY\nz6QHzt6NsFDoSR3U3cKdz2D1+1YSHuD5roHwbZtHTXI/DhwpCQxo7liQm9Yr\n0oS9fOpXIPbI8WIBgiVkaF31VEwDyWIKSvDOeejWZ/BAlNxRMfo6L4ofUDDF\nSm32wF+KfINMwwngJA0yLoBUi1CS192n4VnIVYEI7/RGahqQ4LrZ2vVQc5GM\nnj5c2VWapvlbJaIj9ujwbkl2hGNYDsZPkcDIRII1y9AHi4trOFdYnNBj44Je\nITADu7POQb+LaiSjZ4TTlQQ5wkKCfYUPXDjZzDzfySedmKf/DJi/xWsO8vjI\ninVmN4Qk/r4YwoHgEx78q7IMF2nObZ7do/Tm0Fqa/ArjrxQqJYH3+FvzA116\n7zxadn9s5AyzE0HaNoWFo7XmUWjVw/IMD8RZWQHQumRahWE2XrAvgQXWU7Ds\n2rtCcCQ830eSQyC8rJefjgJR17HX7NGWPL3PUAoxXz/NOdpc1uk6GM65PiH7\n36Nb71FdmQC535bHGuMZi4K+apNYHkxmaOyl1Wyb0pdge1C07/DxrBg/tryF\nu7wB\r\n=jGQy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGAFlmsQSPAmOC/73nSLKeXJp5LfUWr+qkarBlE91JCuAiBny2SlweMkvi5IQemPxM4OTbVm0ody1otB0D3sBDVZaA=="}]},"maintainers":[{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"},{"name":"leplatrem","email":"leplatrem@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"natim","email":"natim@mozilla.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.1.1_1587393817446_0.1899028802128242"},"_hasShrinkwrap":false},"5.2.0":{"name":"kinto-http","version":"5.2.0","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^8.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^17.0.0","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^4.0.0","@rollup/plugin-node-resolve":"^11.0.0","@rollup/plugin-replace":"^2.3.1","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^9.0.0","@types/uuid":"^8.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^7.6.0","eslint-config-prettier":"^7.0.0","form-data":"^3.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"2.0.0","mitt":"^2.1.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^6.0.1","prettier":"^2.0.1","rollup":"^2.34.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-polyfills":"^0.2.1","rollup-plugin-terser":"^7.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","toctoc":"^0.3.0","ts-node":"^9.0.0","tslib":"^2.0.0","typedoc":"^0.20.1","typescript":"^4.0.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"6849812edb8b341ccc04e2fcf507d6ed8ec13edc","_id":"kinto-http@5.2.0","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-bI2e++oQPEmRPscCMHikdmZeePI+auuH+QK16ozMk94BnVywpMAXX/2scbHZxCw5ogcMtqBnT9GWX3ElA4tLcw==","shasum":"fe69b4d1d6a963940bd3afadfbfcae2c349d3d23","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.2.0.tgz","fileCount":61,"unpackedSize":1911736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKwKcCRA9TVsSAnZWagAA8KMP/0jUGFUWDcQ+bfl4gJ4w\nSWp/Ftx0orlZsGC0ZVLA7JoqeVrKPL0yarBgNJQwcbLwbKrzPS9VwXclVI7O\nISO2+L3PLTdh6ZnUAfXfdR5kP7yHSZNN7Vdwl85ikkeJBqGDhOF80dD7hzN2\n/X4VzUIpfhPT55qLlAFIs7f1JMy5FQI3K59TA8qCEKZfn+/sZT8yD4DiCiFi\n/GXdXmDakJSLIQrYxnr7Io+cdm1yRUktSBrMSKvbYGiyj1vOPwOFlwF410rv\nltgMlF8Cgk9ZeguBCCZYBuSlf3IF9Q8tcc5nDpABmt1QSuitT8vw3m3UpFtq\nYHduKS8nD/UKFKG2NnIRAigSmqeLXYE0fK53ZWcbHwknP3w7/Avje14HPqn2\np6+GYLpcbq1ce6hnKI1AFYLamZTKQmWYqdWdGL5WWpFyFjEb+7G9ASaqCjC9\nQKPw4ymdKItJQGXOWTPKm+p76uaMRyTYIdes13cQ+/Wnq2rz4Pu0ud3Ep/66\ncaMLYH0i41d860BLa0+WhqBl+/Bq2PVVJQnQ3Bcdf7g0HRzMPzG8jY1REiw3\nYKPUbmprTuLt4VjSw3NSjWlffj9YzgPlEPJP+bw9nVGnwd/ENJwZ9QFWrpvg\nky5ST8ud3ahDkoc98k60UocozlwUvkqNganBim/IdBK33FRjRCT9vShx8tIv\nqcnU\r\n=CVhW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEzmPGlSDeX33DIcoDvohcAY/lOZeiBrBEY0nUHGG5JBAiEAjsNVR/2jxtkRfZSuRheY5c7s+hjzggIT+GT3WF4iwFY="}]},"_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"directories":{},"maintainers":[{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"natim","email":"natim@mozilla.com"},{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},{"name":"dstaley","email":"staley.dylan@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.2.0_1613431451472_0.6083928935897613"},"_hasShrinkwrap":false},"5.2.1":{"name":"kinto-http","version":"5.2.1","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^8.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^17.0.0","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^4.0.0","@rollup/plugin-node-resolve":"^11.0.0","@rollup/plugin-replace":"^2.3.1","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^9.0.0","@types/uuid":"^8.0.0","@typescript-eslint/eslint-plugin":"^2.6.0","@typescript-eslint/parser":"^2.6.0","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^7.6.0","eslint-config-prettier":"^7.0.0","form-data":"^4.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"2.0.0","mitt":"^2.1.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^6.0.1","prettier":"^2.0.1","rollup":"^2.34.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-polyfills":"^0.2.1","rollup-plugin-terser":"^7.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^9.0.0","toctoc":"^0.3.0","ts-node":"^9.0.0","tslib":"^2.0.0","typedoc":"^0.20.1","typescript":"^4.0.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"83fc403a07a601e6701b8b2af815e3b0bf8be684","_id":"kinto-http@5.2.1","_nodeVersion":"15.8.0","_npmVersion":"7.5.1","dist":{"integrity":"sha512-rbvtiSGZKh5EpVIpiMbTW5+NZ3+U89Zh3+S5KFHTKiJxZMR/PFfinkioRk1DyP6EramshsFgHXx5EAkXGMmbqw==","shasum":"387dfea7972043e578c065ab9e515df3afa3b0cc","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.2.1.tgz","fileCount":61,"unpackedSize":1920367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM4KfCRA9TVsSAnZWagAACa0P/26oQDo+d3PHk+M73cuo\nVvQnflqZ91oLiZ6keMsZeptFOO8B4X33DxGinUqNj7NXfdoTS8laWNROJP4/\nZBy4oou2diCx1YLqXfcQQbkPs/eLtPV0qHvFkoGDAC0Okt/XeCNp3r97wV/a\nlJusxNgSHYE3oa8kTA2O6e6m+hM4jgVcIkQtm7cJimazyg7s1cloCvkfY4vy\nsCcwix4C8lOKIJGcjHpNFoNKLIuR6RPipiuUf3tM3xrAGZZkxkehLh/UWuF8\nAQcZSawIBAMmMNflNGPBIjhdriu5Sd47JAVzFqOp+ajt9KKb5v8Qnmkk71t1\nua7a1vzN/grRRJZ3xz5Lvi1dty9pkn+5z6cphsp+JUedtF9Oelp45NHahJwN\nDBhXt5fLgWwhIck/S2zzv1F+xZKiFRBnNpWwur5Aoyxa3iYrSnPOSfMQ0CAu\nqUfakFlvf5eNxAplpakRZFWFPFGpkpoI2EJHBLPEfsoTtmNqlJ+sQg4tnBkI\nuJAPPQrYInVTW/KVNlz5igufeWk3NhQmoH4aR+s3TmC/mZIEkk0s70yquikR\nsd6p1z38aOMvTzGJMoCCaCLl210M6kptPzYdHExyTLULM+FTmvYVJIu7VLhg\nTk4db1L7kwvb8a0FQgQ9+y3kZjlEsJBV/1g8KE2pSLOc4LdTqQNJEa0S7RR+\nBI+s\r\n=nTiv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgYlIrZSTBFy4Z9EvGdSGHesgRCSWRE1yHoPg1djeLNAIhAPkNS+qyNWP3kPjs9Y3bn1zkW3egxwvJJ7yWa+XQenyg"}]},"_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"directories":{},"maintainers":[{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"natim","email":"natim@mozilla.com"},{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},{"name":"dstaley","email":"staley.dylan@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.2.1_1613988510343_0.9084630680718693"},"_hasShrinkwrap":false},"5.3.0":{"name":"kinto-http","version":"5.3.0","description":"JavaScript HTTP client for the Kinto API.","main":"dist/kinto-http.node.js","module":"lib/index.js","unpkg":"dist/kinto-http.min.js","types":"lib/index.d.ts","scripts":{"build":"tsc -p .","build:test-browser":"rollup --environment BROWSER_TESTING -c","build:demo":"npm run dist && shx cp dist/kinto-http.min.js demo/kinto-http.min.js && shx cp dist/kinto-http.min.js.map demo/kinto-http.min.js.map","build:readme":"toctoc -w -d 2 README.md","cs-check":"prettier -l \"{src,test,bin}/**/*.{js,ts}\"","cs-format":"prettier \"{src,test,bin}/**/*.{js,ts}\" --write","demo":"npm run build:demo && http-server demo","dist":"cross-env NODE_ENV=production rollup -c && npm run dist:fx","dist:dev":"rollup -c && npm run dist:fx","dist:fx":"ts-node --skip-project bin/dist-fx.ts","docs":"typedoc","prepublish":"npm run build:readme","publish-to-npm":"npm run build && npm run dist && npm publish","report-coverage":"intern reporters=lcov && coveralls -v < ./coverage/lcov.info","test":"npm run test-nocover","test-cover":"intern","test-cover-html":"intern reporters=htmlcoverage && open-cli coverage/index.html","test-nocover":"intern coverage=false","test:chrome":"npm run build:test-browser && intern config=@chrome coverage=false","test:firefox":"npm run build:test-browser && intern config=@firefox coverage=false","lint":"eslint \"src/**/*.{js,ts}\" \"test/**/*.{js,ts}\""},"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"keywords":["kinto","http","client","api"],"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"license":"Apache-2.0","bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","dependencies":{"uuid":"^8.0.0"},"devDependencies":{"@rollup/plugin-commonjs":"^20.0.0","@rollup/plugin-inject":"^4.0.1","@rollup/plugin-multi-entry":"^4.0.0","@rollup/plugin-node-resolve":"^13.0.0","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-typescript":"^3.0.0","@types/node-fetch":"^2.5.5","@types/shelljs":"^0.8.5","@types/sinon":"^10.0.0","@types/uuid":"^8.0.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","atob":"^2.1.2","coveralls":"^3.0.0","cross-env":"^7.0.0","eslint":"^7.6.0","eslint-config-prettier":"^8.0.0","form-data":"^4.0.0","http-server":"^0.12.0","intern":"^4.8.0","kinto-node-test-server":"2.0.0","mitt":"^3.0.0","node-fetch":"^2.6.0","nyc":"^15.0.0","open-cli":"^7.0.0","prettier":"^2.0.1","rollup":"^2.34.0","rollup-plugin-node-builtins":"^2.1.2","rollup-plugin-node-polyfills":"^0.2.1","rollup-plugin-terser":"^7.0.0","shelljs":"^0.8.3","shx":"^0.3.2","sinon":"^11.0.0","toctoc":"^0.4.0","ts-node":"^10.0.0","tslib":"^2.0.0","typedoc":"^0.21.0","typescript":"^4.0.2"},"peerDependencies":{"node-fetch":">=2.6.0","form-data":">=3.0.0","atob":">=2.1.2"},"peerDependenciesMeta":{"node-fetch":{"optional":true},"form-data":{"optional":true},"atob":{"optional":true}},"engines":{"node":">=10"},"gitHead":"284d97d7882ccf510351206f9fde120ab7ae987b","_id":"kinto-http@5.3.0","_nodeVersion":"15.14.0","_npmVersion":"7.7.6","dist":{"integrity":"sha512-3TduChdWjlqCaae6VVwSk0faD3O2mMMkGcd/C0aDL5V0d45ovv3imHs1gl5MctphmuAci8UfGvCojxM/2ysqYw==","shasum":"0245faa61c50de36be0b8970f63382968d63c365","tarball":"https://registry.npmjs.org/kinto-http/-/kinto-http-5.3.0.tgz","fileCount":61,"unpackedSize":1924367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2xJ1CRA9TVsSAnZWagAA6tcP+wULtIFmoHOWRMGl/Moj\nx2qeC7h+konP7Un/k/kS+mMm/IWp7Kse4nOC8hEwknET+7HOOqNHbIJP7QNl\n4fZr+LfDqhRN9J/Yusi6WBS0oFnuvJpuOxX99vIeu3Q/hoVgFIj9GTn4j7Y9\n/KP92StYlrwOB4pIvQ6m5YxN6EjvPCIo19RTM4Dy6TJbkLYsttQwx4wku6gj\n8NebI4et6r12fz3kYR+MnUjx1Ft2vbdRuPtvJJ26bSGJ0SYuwsFo4Tht6Aay\nuu+w0dwrW5AywCXvxXdGE9QT4KKxnpY94jkYxJUihu6bj3mqFIX/Qlk+3aqC\nG4vKSgifeXdNdm1uf6KPretzBCrKlALkluvZDYFn7pTuqG1N1/1FJioOCuuz\n9amCYXvjBOC6LSKdOzQBqoPh2Y+8e7ykdVnoPyxlox2CBUPV6SMt6WtuXoD1\nBJ6gQ4SpHvQ5Do0NjyChBA4Q6EQUkFbank2jKXKE4/YNd5DteT2uNQZT+t8B\nk0SuzytWcS80f4vaA+FdeXF+Vx/2LxWfcuRTtQAoMvjKO/wtQUTUIO35ysT+\nUwFNuj7Nw4x1yJ5aSjn3Lf8FP2Z8sTBXjIWhgY2Yqz9pJKYVUa4NPlnXTG+U\nOFcG+SKdfRghRwsjLIIM+dKFtfnrl91o8pFyJPQzpnQS1vsiAmludbvDocOI\n+1Ko\r\n=C8IC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUk1lzaDqZXMNlwonQTj9GJ/o+vzhas289o24AOW2hLwIgIKtUXH+nasG7637NK/3YwjCUSdRpOjEDflIq8c5h9s8="}]},"_npmUser":{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},"directories":{},"maintainers":[{"name":"n1k0","email":"nicolas@perriault.net"},{"name":"ametaireau","email":"alexis@notmyidea.org"},{"name":"natim","email":"natim@mozilla.com"},{"name":"leplatrem","email":"leplatrem+npm@gmail.com"},{"name":"dstaley","email":"staley.dylan@gmail.com"},{"name":"magopian","email":"mathieu@agopian.info"},{"name":"glasserc","email":"ethan.glasser.camp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kinto-http_5.3.0_1628084590496_0.0885583492405535"},"_hasShrinkwrap":false}},"readme":"kinto-http.js\n=============\n\n[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=Kinto/kinto-http.js)](https://dependabot.com)\n\n[![Build Status](https://travis-ci.org/Kinto/kinto-http.js.svg?branch=master)](https://travis-ci.org/Kinto/kinto-http.js)\n\nA JavaScript HTTP Client for the [Kinto](http://kinto-storage.org/) API.\n\nRead the [API documentation](https://kinto.github.io/kinto-http.js/), or [try the demo](https://kinto.github.io/kinto-http.js/demo/).\n\n## Table of Contents\n\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n  - [Changelog](#changelog)\n  - [Usage](#usage)\n  - [Authentication](#authentication)\n     - [Using Basic Auth](#using-basic-auth)\n     - [Using an OAuth Bearer Token](#using-an-oauth-bearer-token)\n     - [Change headers](#change-headers)\n  - [Server information](#server-information)\n  - [Buckets](#buckets)\n     - [Listing buckets](#listing-buckets)\n     - [Creating a new bucket](#creating-a-new-bucket)\n     - [Selecting a bucket](#selecting-a-bucket)\n     - [Getting bucket data](#getting-bucket-data)\n     - [Setting bucket data](#setting-bucket-data)\n     - [Getting bucket permissions](#getting-bucket-permissions)\n     - [Setting bucket permissions](#setting-bucket-permissions)\n     - [Deleting a bucket](#deleting-a-bucket)\n     - [Creating a collection](#creating-a-collection)\n     - [Listing bucket collections](#listing-bucket-collections)\n     - [Collections list timestamp](#collections-list-timestamp)\n     - [Deleting a collection](#deleting-a-collection)\n     - [Creating a user group](#creating-a-user-group)\n     - [Listing bucket groups](#listing-bucket-groups)\n     - [Groups list timestamp](#groups-list-timestamp)\n     - [Getting a bucket group](#getting-a-bucket-group)\n     - [Updating an existing group](#updating-an-existing-group)\n     - [Deleting a group](#deleting-a-group)\n     - [Listing bucket history](#listing-bucket-history)\n  - [Collections](#collections)\n     - [Selecting a collection](#selecting-a-collection)\n     - [Getting collection data](#getting-collection-data)\n     - [Setting collection data](#setting-collection-data)\n     - [Getting collection permissions](#getting-collection-permissions)\n     - [Setting collection permissions](#setting-collection-permissions)\n     - [Creating a new record](#creating-a-new-record)\n     - [Retrieving an existing record](#retrieving-an-existing-record)\n     - [Updating an existing record](#updating-an-existing-record)\n     - [Deleting record](#deleting-record)\n     - [Listing records](#listing-records)\n     - [Total number of records](#total-number-of-records)\n     - [Records list timestamp](#records-list-timestamp)\n     - [Batching operations](#batching-operations)\n  - [Listing all resource permissions](#listing-all-resource-permissions)\n  - [Attachments](#attachments)\n     - [Adding an attachment to a record](#adding-an-attachment-to-a-record)\n     - [Updating an attachment](#updating-an-attachment)\n     - [Deleting an attachment](#deleting-an-attachment)\n  - [Generic bucket and collection options](#generic-bucket-and-collection-options)\n  - [The safe option explained](#the-safe-option-explained)\n     - [Safe creations](#safe-creations)\n     - [Safe updates](#safe-updates)\n     - [Safe deletions](#safe-deletions)\n  - [Generic options for list operations](#generic-options-for-list-operations)\n     - [Sorting](#sorting)\n     - [Polling for changes](#polling-for-changes)\n     - [Paginating results](#paginating-results)\n  - [Generic options for singular operations](#generic-options-for-singular-operations)\n  - [Events](#events)\n     - [The backoff event](#the-backoff-event)\n     - [The deprecated event](#the-deprecated-event)\n     - [The retry-after event](#the-retry-after-event)\n  - [Browser Compatibility](#browser-compatibility)\n  - [Upgrading](#upgrading)\n     - [From 1.x to 2.x](#from-1-x-to-2-x)\n  - [Contributing](#contributing)\n     - [Coding style](#coding-style)\n     - [Integration tests](#integration-tests)\n     - [Releasing](#releasing)\n\n---\n\n## Requirements\n\n- Kinto server v6.0.0+\n\n## Installation\n\nIn the browser, you can load prebuilt scripts hosted on unpkg:\n\n- [kinto-http.min.js](https://unpkg.com/kinto-http/dist/kinto-http.min.js)\n\n```html\n<script src=\"https://unpkg.com/kinto-http/dist/kinto-http.min.js\"></script>\n```\n\nFrom npm:\n\n```\n$ npm install kinto-http --save\n```\n\n**Note:** If you're using `kinto-http` in Node (as opposed to the browser), you'll also need to install polyfills for `fetch`, `FormData`, and `btoa`.\n\n```\n$ npm install node-fetch form-data btoa\n```\n\nThen (ES6):\n\n```js\nimport KintoClient from \"kinto-http\";\n```\n\nOr (ES5):\n\n```js\nvar KintoClient = require(\"kinto-http\").default;\n```\n\nNote that this HTTP client can be transparently used server side or in a regular browser page. In the browser, creating an instance is achieved that way:\n\n```js\nconst client = new KintoClient(\"http://\");\n```\n\n## Changelog\n\nSee [upgrading docs](#upgrading) and the full [detailed changelog on Github](https://github.com/Kinto/kinto-http.js/releases).\n\n\n## Usage\n\nA client instance is created using the `KintoClient` constructor, passing it the remote Kinto server root URL, including the version:\n\n```js\nconst client = new KintoClient(\"https://kinto.dev.mozaws.net/v1\");\n```\n\n#### Options\n\n- `safe`: Adds concurrency headers to every requests. (default: `false`)\n- `events`: The events handler. If none provided an `EventEmitter` instance will be created\n- `headers`: The key-value headers to pass to each request. (default: `{}`)\n- `retry`: Number of retries to make when the server responds with a `Retry-After` response. (default: `0`)\n- `bucket`: The default bucket to use. (default: `\"default\"`)\n- `requestMode`: The HTTP [CORS](https://fetch.spec.whatwg.org/#concept-request-mode) mode. (default: `\"cors\"`)\n- `timeout`: The requests timeout in milliseconds. (default: `null`, which means \"no timeout\")\n\n\n## Authentication\n\nAuthenticating against a Kinto server can be achieved by adding an `Authorization` header to the request.\n\nBy default Kinto server supports Basic Auth authentication, but others mechanisms can be activated such as OAuth (eg. [Firefox Account](https://accounts.firefox.com/))\n\n### Using Basic Auth\n\nSimply provide an `Authorization` header option to the `Kinto` constructor:\n\n```js\nconst secretString = `${username}:${password}`;\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: \"Basic \" + btoa(secretString)\n  }\n});\n```\n\n> #### Notes\n>\n> - As explained in the [server docs](http://kinto.readthedocs.io/en/stable/api/1.x/authentication.html#basic-auth), any string is accepted. You're not obliged to use the `username:password` format.\n\n### Using an OAuth Bearer Token\n\nAs for Basic Auth, once you have retrieved a valid OAuth Bearer Token, simply pass it in an `Authorization` header:\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\", {\n  headers: {\n    Authorization: `Bearer ` + oauthBearerToken)\n  }\n});\n```\n\n### Change headers\n\nRequests headers can be altered using `setHeaders()`.\n\n```js\nconst kinto = new KintoClient(\"https://my.server.tld/v1\");\n\n// Login somewhere...\n// [...]\n\nkinto.setHeaders({\n    Authorization: `Bearer ` + accessToken,\n});\n\n```\n\n## Server information\n\nA Kinto server exposes some of its internal settings, information about authenticated user, the HTTP API version and the API capabilities (e.g. plugins).\n\n```js\nconst info = await client.fetchServerInfo([options]);\n```\n\nSample result:\n\n```js\n{\n    \"project_name\": \"kinto\",\n    \"project_version\": \"3.0.2\",\n    \"url\": \"http://0.0.0.0:8889/v1/\",\n    \"project_docs\": \"https://kinto.readthedocs.io/\",\n    \"http_api_version\": \"1.6\",\n    \"settings\": {\n        \"batch_max_requests\": 25,\n        \"readonly\": false\n    },\n    \"user\": {\n        \"bucket\": \"2f9b1aaa-552d-48e8-1b78-371dd08688b3\",\n        \"id\": \"basicauth:f505765817a6b4ea46278be0620ddedd83b10f71f7695683719fe001cf0871d7\"\n    },\n    \"capabilities\": {\n        \"default_bucket\": {\n            \"description\": \"The default bucket is an alias for a personal bucket where collections are created implicitly.\",\n            \"url\": \"http://kinto.readthedocs.io/en/latest/api/1.x/buckets.html#personal-bucket-default\"\n        }\n    }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Helpers\n\n- `fetchServerSettings([options])`: server settings\n- `fetchServerCapabilities([options])`: API capabilities\n- `fetchUser()`: authenticated user information\n- `fetchHTTPApiVersion([options])`: HTTP API version\n\n\n## Buckets\n\n### Listing buckets\n\n```js\nconst {data} = await client.listBuckets([options]);\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      id: \"comments\",\n      last_modified: 1456182233221,\n    },\n    {\n      id: \"blog\",\n      last_modified: 1456181213214,\n    },\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n### Creating a new bucket\n\n```js\nconst result = await client.createBucket(\"blog\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182233221,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nIt's alternatively possible to create a bucket without specifying an `id`, so the\nKinto server will create one for you:\n\n```js\nconst result = await client.createBucket();\n```\n\nNote: if you plan on providing options along id autogeneration, you have to specify\n`null` as the first argument:\n\n```js\nconst result = await client.createBucket(null, {data: {foo: 42}, retry: 3});\n```\n\n#### Options\n\n- `data`: Arbitrary data to attach to the bucket\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Selecting a bucket\n\n```js\nclient.bucket(\"blog\");\n```\n\n### Getting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456182336242,\n  \"id\": \"blog\",\n  \"foo\": \"bar\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting bucket data\n\n```js\nconst result = await client.bucket(\"blog\").setData({foo: \"bar\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182336242,\n    \"id\": \"blog\",\n    \"foo\": \"bar\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches existing bucket data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n### Getting bucket permissions\n\n```js\nconst result = client.bucket(\"blog\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting bucket permissions\n\n```js\nconst permissions = {\n  read:  [\"github:bob\"],\n  write: [\"github:bob\", \"github:john\"]\n};\n\nconst result = await client.bucket(\"blog\").setPermissions(permissions[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456182888466,\n    \"id\": \"blog\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n### Deleting a bucket\n\n```js\nconst result = await client.deleteBucket(\"testbucket\"[, options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456182931974,\n    \"id\": \"blog\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a collection\n\n#### Named collection\n\n```js\nconst result = await client.bucket(\"blog\").createCollection(\"posts\");\n```\n\nSample result:\n\n```js\n\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createCollection();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"id\": \"OUh5VEDa\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `OUh5VEDa` is the collection ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createCollection(undefined, {safe: true})`\n\n### Listing bucket collections\n\n```js\nconst {data} = await client.bucket(\"blog\").listCollections();\n```\n\nSample result:\n\n```js\n{\n  data: [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"posts\"\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"comments\"\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Collections list timestamp\n\nThe timestamp of the collections list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getCollectionsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Deleting a collection\n\n```js\nconst result = await client.bucket(\"blog\").deleteCollection(\"test\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"posts\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Creating a user group\n\nKinto has a concept of groups of users. A group has a list of members and belongs to a bucket.\n\nPermissions can refer to the group instead of an individuals - this makes it easy to define «roles», especially if the same set of permissions is applied to several objects.\n\nWhen used in permissions definitions, the full group URI has to be used:\n\n```js\n    {\n      data: {\n        title: \"My article\"\n      },\n      permissions: {\n        write: [\"/buckets/blog/groups/authors\", \"github:lili\"],\n        read: [\"system.Everyone\"]\n      }\n    }\n```\n\n#### Named group\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": []\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With a list of members and attributes\n\n```js\nconst result = await client.bucket(\"blog\").createGroup(\"admins\", [\"system.Authenticated\"], {data: {pi: 3.14}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183004372,\n    \"id\": \"admins\",\n    \"members\": [\"system.Authenticated\"],\n    \"pi\": 3.14\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### With an ID generated automatically\n\n```js\nconst result = await client.bucket(\"blog\").createGroup();\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183040592,\n    \"members\": [],\n    \"id\": \"7YHFF565\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\nNote that `7YHFF565` is the group ID automatically generated by the server.\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists (default: `false`)\n- `data`: Extra group attributes\n- `permissions`: Permissions to be set on the created group\n\n> Note: For generated names, options can be specified only if the first parameters are provided: `createGroup(undefined, [], {safe: true})`\n\n\n### Listing bucket groups\n\n```js\nconst {data} = await client.bucket(\"blog\").listGroups();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n    },\n    {\n      \"last_modified\": 1456183159386,\n      \"id\": \"moderators\",\n      \"members\": [\"github:lili\"]\n    }\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Groups list timestamp\n\nThe timestamp of the groups list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .getGroupsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Getting a bucket group\n\n```js\nconst {data} = await client.bucket(\"blog\").getGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n      \"last_modified\": 1456183153840,\n      \"id\": \"admins\",\n      \"members\": [\"system.Authenticated\"],\n      \"pi\": 3.14\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing group\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  members: [\"system.Everyone\", \"github:lili\"],\n  pi: 3.141592\n};\n\nconst result = await client.bucket(\"blog\").updateGroup(updated, {permissions: {write: [\"fxa:35478\"]}});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"members\": [\"system.Everyone\", \"github:lili\"],\n    \"pi\": 3.141592\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"fxa:35478\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `permissions`: Permissions to be set on the group\n\n### Deleting a group\n\n```js\nconst result = await client.bucket(\"blog\").deleteGroup(\"admins\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183116571,\n    \"id\": \"admins\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n\n### Listing bucket history\n\n```js\nconst {data} = await client.bucket(\"blog\").listHistory();\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"action\": \"update\",\n      \"collection_id\": \"articles\",\n      \"date\": \"2016-07-20T11:18:36.530281\",\n      \"id\": \"cb98ecd7-a66f-4f9d-82c5-73d06930f4f2\",\n      \"last_modified\": 1469006316530,\n      \"record_id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"resource_name\": \"record\",\n      \"target\": {\n          \"data\": {\n              \"id\": \"b3b76c56-b6df-4195-8189-d79da4a128e1\",\n              \"last_modified\": 1469006316529,\n              \"title\": \"Modified title\"\n          },\n          \"permissions\": {\n              \"write\": [\n                  \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\"\n              ]\n          }\n      },\n      \"timestamp\": 1469006098757,\n      \"uri\": \"/buckets/blog/collections/articles/records/b3b76c56-b6df-4195-8189-d79da4a128e1\",\n      \"user_id\": \"basicauth:43181ac0ae7581a23288c25a98786ef9db86433c62a04fd6071d11653ee69089\",\n    }\n  ]\n}\n\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n\n## Collections\n\n### Selecting a collection\n\n```js\nconst posts = client.bucket(\"blog\").collection(\"posts\");\n```\n\n### Getting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getData();\n```\n\nSample result:\n\n```js\n{\n  \"last_modified\": 1456183561206,\n  \"id\": \"posts\",\n  \"preferedAuthor\": \"@chucknorris\"\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Setting collection data\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setData({preferedAuthor: \"@chucknorris\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183561206,\n    \"id\": \"posts\",\n    \"preferedAuthor\": \"@chucknorris\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing data instead of replacing them (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server\n\n### Getting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\").getPermissions();\n```\n\nSample result:\n\n```js\n{\n  \"write\": [\n    \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n### Setting collection permissions\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .setPermissions({\n    read: [\"github:bob\"],\n    write: [\"github:john\", \"github:bob\"]\n  });\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"last_modified\": 1456183508926,\n    \"id\": \"posts\"\n  },\n  \"permissions\": {\n    \"read\": [\"github:bob\"],\n    \"write\": [\n      \"github:bob\",\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\",\n      \"github:john\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`)\n- `last_modified`: The last timestamp we know the resource has been updated on the server.\n\n#### Notes\n\n- This operation replaces any previously set permissions;\n- Owners will always keep their `write` permission bit, as per the Kinto protocol.\n\n\n### Creating a new record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .createRecord({title: \"My first post\", content: \"Hello World!\"});\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request;\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Whether to override existing resource if it already exists and if an id is provided (default: `false`)\n\n### Retrieving an existing record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World!\",\n    \"last_modified\": 1456183657846,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\nThis method accepts the [generic parameters for singular operations](#generic-options-for-singular-operations).\n\n### Updating an existing record\n\n```js\nconst updated = {\n  id: \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n  title: \"My first post, edited\",\n  content: \"Hello World, again!\"\n};\n\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .updateRecord(updated);\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"content\": \"Hello World, again!\",\n    \"last_modified\": 1456183778891,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\",\n    \"title\": \"My first post, edited\"\n  },\n  \"permissions\": {\n    \"write\": [\n      \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n    ]\n  }\n}\n```\n\n#### Options\n\n- `patch`: Patches the existing record instead of replacing it (default: `false`)\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: If `last_modified` is provided, ensures the resource hasn't been modified since that timestamp. Otherwise ensures no existing resource with the provided id will be overriden (default: `false`);\n\n### Deleting record\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n```\n\nSample result:\n\n```js\n{\n  \"data\": {\n    \"deleted\": true,\n    \"last_modified\": 1456183877287,\n    \"id\": \"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\"\n  }\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures the resource hasn't been modified in the meanwhile if `last_modified` is provided (default: `false`);\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server.\n\n### Listing records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords();\n```\n\nSample result:\n\n```js\n{\n  last_modified: \"1456183930780\",\n  next: <Function>,\n  totalRecords: 2,\n  data: [\n    {\n      \"content\": \"True.\",\n      \"last_modified\": 1456183930780,\n      \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\",\n      \"title\": \"I love cheese\"\n    },\n    {\n      \"content\": \"Yo\",\n      \"last_modified\": 1456183914275,\n      \"id\": \"63c1805a-565a-46cc-bfb3-007dfad54065\",\n      \"title\": \"Another post\"\n    }\n  ]\n}\n```\n\nThe result object exposes the following properties:\n\n- `last_modified`: the [collection's timestamp](http://kinto.readthedocs.io/en/stable/api/1.x/timestamps.html). (Note: this value is the same as the one returned by [`getRecordsTimestamp()`](#records-list-timestamp))\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `totalRecords`: the total number of records in the **entire collection**. This number can alternatively be retrieved using the `getTotalRecords()` method of the collection API\n- `data`: the list of records\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `at`: Retrieve the records list at at a given timestamp back in time (note: full list is always returned, this option doesn't support pagination and will reject if the [History plugin](http://kinto.readthedocs.io/en/stable/api/1.x/history.html) isn't enabled or has been enabled after the creation of the collection.)\n\nThis method accepts the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n### Total number of records\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .getTotalRecords();\n```\n\nSample result:\n\n```js\n42\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n### Records list timestamp\n\nThe timestamp of the records list is used for the `since` option in the [generic parameters for sorting, filtering and paginating results](#generic-options-for-list-operations).\n\n```js\nconst result = await client.bucket(\"blog\")\n  .collection(\"posts\")\n  .getRecordsTimestamp();\n```\n\nSample result:\n\n```js\n\"1548699177099\"\n```\n\n#### Options\n\n- `headers`: custom headers object to send along the HTTP request\n- `retry`: number of retries when request fails (default: 0)\n\n\n### Batching operations\n\nThis allows performing multiple operations in a single HTTP request.\n\n```js\nconst result = await client.bucket(\"blog\").collection(\"posts\")\n  .batch(batch => {\n    batch.deleteRecord(\"cb0f7b2b-e78f-41a8-afad-92a56f8c88db\");\n    batch.createRecord({title: \"new post\", content: \"yo\"});\n    batch.createRecord({title: \"another\", content: \"yo again\"});\n  });\n```\n\nSample result:\n\n```js\n[\n  {\n    \"status\": 200,\n    \"path\": \"/v1/buckets/blog/collections/posts/records/a89dd4b2-d597-4192-bc2b-834116244d29\",\n    \"body\": {\n      \"data\": {\n        \"deleted\": true,\n        \"last_modified\": 1456184078090,\n        \"id\": \"a89dd4b2-d597-4192-bc2b-834116244d29\"\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"99\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo\",\n        \"last_modified\": 1456184078096,\n        \"id\": \"afd650b3-1625-42f6-8994-860e52d39201\",\n        \"title\": \"new post\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"221\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  },\n  {\n    \"status\": 201,\n    \"path\": \"/v1/buckets/blog/collections/posts/records\",\n    \"body\": {\n      \"data\": {\n        \"content\": \"yo again\",\n        \"last_modified\": 1456184078102,\n        \"id\": \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\",\n        \"title\": \"another\"\n      },\n      \"permissions\": {\n        \"write\": [\n          \"basicauth:0f7c1b72cdc89b9d42a2d48d5f0b291a1e8afd408cc38a2197cdf508269cecc8\"\n        ]\n      }\n    },\n    \"headers\": {\n      \"Content-Length\": \"226\",\n      \"Content-Type\": \"application/json; charset=UTF-8\",\n      \"Access-Control-Expose-Headers\": \"Retry-After, Content-Length, Alert, Backoff\"\n    }\n  }\n]\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `aggregate`: Produces an aggregated result object, grouped by operation types; the result object has the following structure:\n\n```js\n{\n  \"errors\":    [], // Encountered errors (HTTP 400, >=500)\n  \"published\": [], // Successfully published resources (HTTP 200, 201)\n  \"conflicts\": [], // Conflicting resources (HTTP 412)\n  \"skipped\":   []  // Missing target resources on the server (HTTP 404)\n}\n```\n\n## Listing all resource permissions\n\nIf the [`permissions_endpoint` capability](http://kinto.readthedocs.io/en/stable/api/1.x/permissions.html#list-every-permissions) is installed on the server, you can retrieve the list of all permissions set for the authenticated user using the `listPermissions()` method:\n\n```js\nconst result = await client.listPermissions([options]);\n```\n\nSample result:\n\n```js\n{\n  \"data\": [\n    {\n      \"bucket_id\": \"mybucket\",\n      \"id\": \"mybucket\",\n      \"permissions\": [\n        \"write\",\n        \"read\",\n        \"group:create\",\n        \"collection:create\"\n      ],\n      \"resource_name\": \"bucket\",\n      \"uri\": \"/buckets/mybucket\"\n    },\n    ...\n  ]\n}\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n\n#### Result object properties\n\n- `last_modified`: the last modified value for the list of permissions\n- `hasNextPage`: a boolean informing if a next page is available; when that's the case, you can call `next()`\n- `next`: the [pagination](#paginating-results) helper to access the next page of results, if any\n- `data`: the list of permissions\n- `totalRecords`: the total number of permissions listed in the `data` property array\n\n## Attachments\n\nIf the [attachment](https://github.com/Kinto/kinto-attachment) capability is available from the Kinto server, you can attach files to records. Files must be passed as [data urls](http://dataurl.net/#about), which can be generated using the [FileReader API](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL) in the browser.\n\n### Adding an attachment to a record\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {title: \"First post\"});\n```\n\n#### Options\n\n- `headers`: Custom headers object to send along the HTTP request\n- `retry`: Number of retries when request fails (default: 0)\n- `safe`: Ensures operations won't override existing resources on the server if their associated `last_modified` value or option are provided; otherwise ensures resources won't be overriden if they already exist on the server\n- `last_modified`: When `safe` is true, the last timestamp we know the resource has been updated on the server\n- `permissions`: Permissions to be set on the record\n- `filename`: Allows to specify the attachment filename, in case the data URI does not contain any, or if the file has to be renamed on upload\n\n\n### Updating an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .addAttachment(dataURL, {id: \"22c1319e-7b09-46db-bec4-c240bdf4e3e9\"});\n```\n\n### Deleting an attachment\n\n```js\nclient.bucket(\"blog\").collection(\"posts\")\n  .removeAttachment(\"22c1319e-7b09-46db-bec4-c240bdf4e3e9\");\n```\n\n## Generic bucket and collection options\n\nBoth `bucket()` and `collection()` methods accept an `options` object as a second arguments where you can define the following options:\n\n- `{Object} headers`: Custom headers to send along the request;\n- `{Boolean} safe`: Ensure safe transactional operations; read more about that below.\n- `{Number} retry`: Default number of times to retry requests when faced with transient errors.\n\nSample usage:\n\n```js\nclient.bucket(\"blog\", {\n  headers: {\"X-Hello\": \"Hello!\"},\n  safe: true,\n  retry: 2,\n});\n```\n\nHere the `X-Hello` header and the `safe` option will be used for building every outgoing request sent to the server, for every collection attached to this bucket.\n\nThis works at the collection level as well:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\", {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nEvery request sent for this collection will have the options applied.\n\nLast, you can of course pass these options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {\n    headers: {\"X-Hello\": \"Hello!\"},\n    safe: true,\n    retry: 2,\n  });\n```\n\nThe cool thing being you can always override the default defined options at the atomic operation level:\n\n```js\nclient.bucket(\"blog\", {safe: true})\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: false});\n```\n\n## The `safe` option explained\n\nThe `safe` option can be used:\n\n- when creating or updating a resource, to ensure that any already existing record matching the provided ID won't be overridden if it exists on the server;\n- when updating or deleting a resource, to ensure it won't be overridden remotely if it has changed in the meanwhile on the server (requires a `last_modified` value to be provided).\n\n### Safe creations\n\nWhen creating a new ressource, using the `safe` option will ensure the resource will be created only if it doesn't already exist on the server.\n\n### Safe updates\n\nIf a `last_modified` property value is set in the resource object being updated, the `safe` option will ensure it won't be overriden if it's been modified on the server since that `last_modified` timestamp, raising an `HTTP 412` response describing the conflict when that happens:\n\n```js\nconst updatedRecord = {\n  id: \"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\",\n  title: \"new post, modified\",\n  content: \"yoyo\",\n  last_modified: 1456184189160\n};\n\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .updateRecord(updatedRecord, {safe: true});\n```\n\nIf this record has been modified on the server already, meaning its `last_modified` is greater than the one we provide , we'll get a `412` error response.\n\nIf no `last_modified` value is provided at all, a safe update will simply guarantee that an existing resource with the provided ID won't be overriden.\n\n### Safe deletions\n\nThe same applies for deletions, where you can pass both a `safe` and `last_modified` options:\n\n```js\nclient.bucket(\"blog\")\n  .collection(\"posts\")\n  .deleteRecord(\"fbd2a565-8c10-497a-95b8-ce4ea6f474e1\", {\n    safe: true,\n    last_modified: 1456184189160\n  });\n```\n\n## Generic options for list operations\n\nEvery list operations like [listBuckets()](#listing-buckets), [listCollections](#listing-bucket-collections), [listHistory](#listing-bucket-history), [listGroups()](#list-bucket-groups) or [listRecords()](#listing-records) accept parameters to sort, filter and paginate the results:\n\n- `sort`: The order field (default: `-last_modified`);\n- `pages`: The number of result pages to retrieve (default: `1`);\n- `limit`: The number of records to retrieve per page: unset by default, uses default server configuration;\n- `filters`: An object defining the filters to apply; read more about [what's supported](http://kinto.readthedocs.io/en/stable/api/1.x/filtering.html);\n- `since`: The ETag header value received from the last response from the server.\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n\n### Sorting\n\nBy default, results are listed by `last_modified` descending order. You can set the `sort` option to order by another field:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({sort: \"title\"});\n```\n\n### Polling for changes\n\nTo retrieve the results modified since a given timestamp, use the `since` option:\n\n```js\nconst {data, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({since: \"1456183930780\"});\n```\n\n### Paginating results\n\nBy default, all results of the first page are retrieved, and the default configuration of the server defines no limit. To specify a max number of results to retrieve, you can use the `limit` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20});\n```\n\nTo check if a next page of results is available, you can check for the `hasNextPage` boolean property. To actually fetch the next page of results, call the `next()` function obtained:\n\n```js\n  let {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n    .listRecords({limit: 20});\n  while (hasNextPage) {\n    const result = await next();\n    data = data.concat(result.data);\n    hasNextPage = result.hasNextPage;\n  }\n```\n\nLast, if you just want to retrieve and aggregate a given number of result pages, instead of dealing with calling `next()` recursively you can simply specify the `pages` option:\n\n```js\nconst {data, hasNextPage, next} = await client.bucket(\"blog\").collection(\"posts\")\n  .listRecords({limit: 20, pages: 3}); // A maximum of 60 results will be retrieved here\n```\n\n> ##### Notes\n>\n> If you plan on fetching all the available pages, you can set the `pages` option to `Infinity`. Be aware that for large datasets this strategy can possibly issue an excessive number of HTTP requests.\n\n\n## Generic options for singular operations\n\n\"Singular\" operations such as [Bucket#getData()](#getting-bucket-data), [Bucket#getGroup](#getting-a-bucket-group), [Collection#getData](#getting-collection-data), and [Collection#getRecord](#retrieving-an-existing-record) support some shared options:\n\n- `fields`: The set of fields to return for each record (see the [selecting fields](https://kinto.readthedocs.io/en/stable/api/1.x/selecting_fields.html) documentation).\n- `query`: Any extra query arguments to pass. This might be handy if you want to use a feature that this library doesn't support yet, or for implementing cache-busting URLs.\n\n\n## Events\n\nThe `KintoClient` exposes an `events` property you can subscribe public events from. That `events` property implements nodejs' [EventEmitter interface](https://nodejs.org/api/events.html#events_class_events_eventemitter).\n\n\n### The `backoff` event\n\nTriggered when a `Backoff` HTTP header has been received from the last received response from the server, meaning clients should hold on performing further requests during a given amount of time.\n\nThe `backoff` event notifies what's the backoff release timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"backoff\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Backed off; wait until ${releaseDate} to retry`);\n});\n```\n\n### The `deprecated` event\n\nTriggered when an `Alert` HTTP header is received from the server, meaning that a feature has been deprecated; the `event` argument received by the event listener contains the following deprecation information:\n\n- `type`: The type of deprecation, which in ou case is always `soft-eol` (`hard-eol` alerts trigger an `HTTP 410 Gone` error);\n- `message`: The deprecation alert message;\n- `url`: The URL you can get information about the related deprecation policy.\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"deprecated\", function(event) {\n  console.log(event.message);\n});\n```\n\n### The `retry-after` event\n\nSome errors on the server side are transient (service unavailable or integrity errors). A `Retry-After` HTTP header in the response indicates the duration in seconds that clients should wait before retrying the request.\n\nThe `retry-after` event notifies what is the timestamp you should wait until before performing another operation:\n\n```js\nconst client = new KintoClient();\n\nclient.events.on(\"retry-after\", function(releaseTime) {\n  const releaseDate = new Date(releaseTime).toLocaleString();\n  alert(`Wait until ${releaseDate} to retry`);\n});\n```\n\n> #### Note:\n> We also automatically retry all requests that have a Retry-After response.\n\n## Browser Compatibility\n\nThis library uses some features that are not supported on Internet Explorer or Safari.\n* Javascript [`Promise`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise#Browser_compatibility)\n* [`Object.assign()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Browser_compatibility)\n* [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#Browser_compatibility)\n\nPlease [add polyfills](https://polyfill.io/v2/docs/features/) for these to get full functionality.\n\n## Upgrading\n\n### From 1.x to 2.x\n\n* `collection.listRecords()` now strips the quotes (`\"`) from the `last_modified` attribute in result object (#110).\n\n## Contributing\n\n### Coding style\n\nAll the JavaScript code in this project conforms to the [prettier](https://github.com/prettier/prettier) coding style. A command is provided to ensure your code is always formatted accordingly:\n\n```\n$ npm run cs-format\n```\n\nThe `cs-check` command ensures all files conform to that style:\n\n```\n$ npm run cs-check\n```\n\nConsider installing the pre-commit hooks that automatically format\nyour code and check that it's lint-free. To do so:\n\n- Install `pre-commit`, for example using `pip install --user pre-commit`\n- `pre-commit install` to set up the hooks\n- If you have any leftover `.git/hooks/pre-commit.legacy`, you can safely delete it.\n\n### Integration tests\n\nIt's possible to run the integration test suite against an external Kinto server instance. To do so you need to define the `TEST_KINTO_SERVER` environment variable and set it to the server base URL:\n\n```\n$ TEST_KINTO_SERVER=https://my.kinto-server.tld/v1 npm test\n```\n\n### Releasing\n\nIf you need to release a new version of kinto-http.js, you can follow\n[the Release documentation](https://github.com/Kinto/kinto-http.js/wiki/Releasing).\n","maintainers":[{"email":"nicolas@perriault.net","name":"n1k0"},{"email":"alexis@notmyidea.org","name":"ametaireau"},{"email":"natim@mozilla.com","name":"natim"},{"email":"leplatrem+npm@gmail.com","name":"leplatrem"},{"email":"staley.dylan@gmail.com","name":"dstaley"},{"email":"mathieu@agopian.info","name":"magopian"},{"email":"ethan.glasser.camp@gmail.com","name":"glasserc"},{"email":"mboris@mozilla.com","name":"matt-boris"},{"email":"graham.beckley@gmail.com","name":"grahamalama"}],"time":{"modified":"2022-06-19T08:48:37.519Z","created":"2016-06-16T11:59:37.689Z","1.0.0":"2016-06-16T11:59:37.689Z","2.0.0":"2016-06-28T07:50:35.479Z","2.1.0":"2016-07-18T17:13:04.925Z","2.1.1":"2016-07-19T07:48:55.923Z","2.2.0":"2016-07-21T09:11:52.632Z","2.2.1":"2016-08-22T14:02:25.234Z","2.3.0":"2016-08-23T11:15:44.272Z","2.4.0":"2016-08-25T11:45:55.620Z","2.4.1":"2016-08-31T13:53:19.186Z","2.5.0":"2016-09-01T09:03:02.715Z","2.5.1":"2016-09-15T10:24:53.878Z","2.5.2":"2016-11-04T14:51:45.247Z","2.6.0":"2016-12-15T16:53:59.329Z","2.7.0":"2017-01-16T14:34:18.731Z","3.0.0":"2017-02-09T10:48:12.420Z","3.1.0":"2017-03-01T13:52:15.755Z","4.0.0":"2017-03-02T22:28:41.002Z","4.1.0":"2017-03-14T11:04:52.507Z","4.2.0":"2017-03-17T14:09:22.607Z","4.3.0":"2017-04-10T20:23:36.753Z","4.3.1":"2017-04-11T16:03:06.109Z","4.3.2":"2017-04-12T09:24:53.878Z","4.3.3":"2017-04-27T12:35:28.814Z","4.3.4":"2017-05-09T22:29:48.435Z","4.4.0":"2017-11-15T23:27:01.475Z","4.4.1":"2017-11-20T16:19:41.277Z","4.5.0":"2018-02-07T09:54:00.950Z","4.5.1":"2018-02-07T15:08:18.159Z","4.5.2":"2018-02-08T17:54:48.032Z","4.5.3":"2018-02-14T17:47:44.394Z","4.6.0":"2018-10-09T09:17:13.536Z","4.6.1":"2018-10-09T09:19:53.821Z","4.7.0":"2019-06-03T14:53:01.907Z","4.7.1":"2019-07-05T13:24:53.145Z","4.7.2":"2019-07-05T13:39:35.383Z","4.7.3":"2019-07-29T16:53:26.822Z","5.0.0-alpha.0":"2019-08-07T08:48:50.497Z","5.0.0-alpha.1":"2019-08-09T07:45:44.946Z","5.0.0-alpha.2":"2019-08-26T15:19:31.389Z","5.0.0-alpha.3":"2020-03-06T06:11:32.811Z","5.0.0":"2020-04-14T10:16:57.652Z","5.1.0":"2020-04-20T09:15:38.789Z","5.1.1":"2020-04-20T14:43:37.696Z","5.2.0":"2021-02-15T23:24:11.636Z","5.2.1":"2021-02-22T10:08:30.561Z","5.3.0":"2021-08-04T13:43:10.719Z"},"homepage":"https://github.com/Kinto/kinto-http.js#readme","keywords":["kinto","http","client","api"],"repository":{"type":"git","url":"git+https://github.com/Kinto/kinto-http.js.git"},"author":{"name":"Mozilla","email":"storage-team@mozilla.com"},"bugs":{"url":"https://github.com/Kinto/kinto-http.js/issues"},"license":"Apache-2.0","readmeFilename":"README.md"}