{"_id":"react-native-fetch-api","_rev":"5-bda809557017da42729bca1109fa3183","name":"react-native-fetch-api","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"react-native-fetch-api","description":"A fetch API polyfill for React Native with text streaming support.","version":"1.0.0","main":"fetch.js","author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"license":"MIT","keywords":["react-native","fetch","stream"],"devDependencies":{"@babel/core":"^7.12.3","@babel/eslint-parser":"^7.12.1","@babel/eslint-plugin":"^7.12.1","@babel/plugin-syntax-class-properties":"^7.12.1","@babel/preset-flow":"^7.12.1","@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@react-native-community/eslint-config":"^2.0.0","conventional-github-releaser":"^3.1.5","delay":"^4.4.0","eslint":"^6.5.1","eslint-config-prettier":"^6.15.0","eslint-plugin-flowtype":"^5.2.0","execa":"^5.0.0","flow-bin":"^0.136.0","husky":"^4.3.7","lint-staged":"^10.5.3","querystring":"^0.2.0","react-native-polyfill-globals":"^1.0.7","react-native-test-runner":"^2.0.0","standard-version":"^9.1.0","zora":"^4.0.2"},"scripts":{"flow":"flow","lint":"eslint --cache --ignore-path .gitignore .","test:ios":"./run-tests.js --platform ios --simulator 'iPhone 11 (14.1)' test/index.js","test:android":"./run-tests.js --platform android --emulator Pixel_API_28_AOSP test/index.js","release":"standard-version","postrelease":"git push --follow-tags origin HEAD && conventional-github-releaser -p angular"},"dependencies":{"p-defer":"^3.0.0"},"peerDependencies":{"react-native":">=0.62"},"gitHead":"fd750a04f3eb6683dbf1c61669f9dd88eec0fcb4","bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"homepage":"https://github.com/react-native-community/fetch#readme","_id":"react-native-fetch-api@1.0.0","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-wt3u+TLm87fTuB/agxlpVxBkJNMVRVwgr8BzXN8oE8dnNbdFqIQ7VI4jO6DutDOL5HpVfOxwxUC8vqJHCtvENA==","shasum":"c2549269ed28b5a5b18a2a82cfa53c5e4d36429b","tarball":"https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-1.0.0.tgz","fileCount":14,"unpackedSize":41301,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDubzCRA9TVsSAnZWagAAaoUP/3Z/Dy5dyfJsJYAMXWYi\nJL2mePKaAC7Dq/0c/MpN4bniKLmJZGhWV3Mxd2inUCIoP/7TUgpfkwrnQTAw\naN6BkOLtuV+0A1BJ3dsfy312Nkuwjqrqg4emPN2ZxQB3L/RgLHx11U2uM0M0\nxMy+43y0VoDMn2rzGGX0JjhVQnYu4iSyx9fBw6/2iHq5QOuIHS2yp/YO/Xfi\nDHaENSWNuMw4txoKoh8Hi7qg7AxCs6E3hBEkABfuEnOnkCBb0m2HQpckjQYm\nKLVQNlzMHnVedyH3M8hhzBwUO/7uxd2yjDSt+z2L6r1aEssB2IBBu3bBB98Y\nT8eskl9V80bQAyQR+e/bgBRuvCWfE7259zzs4DytFoVeQlyZ8ll+M6sj2Pt5\n++Ab3bXfykDq1ohokAX7a36xIhEt+S68ZFeFg6v1v2/IwiRnyfx+6ZdUynZB\nZrlJn0L3dR0fB7Cj9or4YK2gjYnv+xAJaFiKC+ZHsA0xGH+6TLQF1hkVXTeS\nGvgYT6V6JnKdnDjufWs/o5rq/PEIRSOasqEU4lmjRgD7wYOhR2SvQeOv+SQ0\nyEEwmi/5GKu0x0VIEi4hj+IpIOasm99kuoU1hbk2dbvFBhbgOUD0KveCXkzw\nz9HwfnvkLcCDzV47sYcjfx3iT5NsSYq82dTVA0aUwzeYxnGd5ARJfccJe0ue\ntwJ4\r\n=igpp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/P2S/+e8OG4yPSJsOFi/0CJCedYFbR+Ij4TJOX9LUKAIgSY+A4XpzmaKF3KyHk2L8AN18SzZYCm0/vnasHghjHmk="}]},"_npmUser":{"name":"acostalima","email":"andreclima.pt@gmail.com"},"directories":{},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-fetch-api_1.0.0_1611589363205_0.7917620129883103"},"_hasShrinkwrap":false},"1.0.1":{"name":"react-native-fetch-api","description":"A fetch API polyfill for React Native with text streaming support.","version":"1.0.1","main":"fetch.js","author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"license":"MIT","keywords":["react-native","fetch","stream"],"devDependencies":{"@babel/core":"^7.12.3","@babel/eslint-parser":"^7.12.1","@babel/eslint-plugin":"^7.12.1","@babel/plugin-syntax-class-properties":"^7.12.1","@babel/preset-flow":"^7.12.1","@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@react-native-community/eslint-config":"^2.0.0","conventional-github-releaser":"^3.1.5","delay":"^4.4.0","eslint":"^6.5.1","eslint-config-prettier":"^6.15.0","eslint-plugin-flowtype":"^5.2.0","execa":"^5.0.0","flow-bin":"^0.136.0","husky":"^4.3.7","lint-staged":"^10.5.3","querystring":"^0.2.0","react-native-polyfill-globals":"^2.0.0","react-native-test-runner":"^2.0.0","react-native-url-polyfill":"^1.2.0","standard-version":"^9.1.0","text-encoding":"^0.7.0","web-streams-polyfill":"^3.0.1","zora":"^4.0.2"},"scripts":{"flow":"flow","lint":"eslint --cache --ignore-path .gitignore .","test:ios":"./run-tests.js --platform ios --simulator 'iPhone 11 (14.1)' test/index.js","test:android":"./run-tests.js --platform android --emulator Pixel_API_28_AOSP test/index.js","release":"standard-version","postrelease":"git push --follow-tags origin HEAD && conventional-github-releaser -p angular"},"dependencies":{"p-defer":"^3.0.0"},"peerDependencies":{"react-native":">=0.62"},"gitHead":"e445e649c05a3515d00feb75016f44abf5e89464","bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"homepage":"https://github.com/react-native-community/fetch#readme","_id":"react-native-fetch-api@1.0.1","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-d8A0X9slEGwC13+pcoR375OGWa7oWcWFjc+ThctPp0B7MBDeNnL0zjW8zHWL3JJe693rYwwXaMq87EmZoRaGog==","shasum":"d60046ff5d2e2d5e5a6db11e5cfc392f17c560fb","tarball":"https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-1.0.1.tgz","fileCount":14,"unpackedSize":41818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDvg/CRA9TVsSAnZWagAARGMP/1GXPRfK8RB77Ct3C/C7\nB+7s26efbeKg3gR4LwDNSNgDpDABmStrSOp2cYSilfHurQOBE4iS+yYwpUkp\nTSIULcPXe3TGc4xVYfp6RvDWVNtLvZKRVE64KJAakXXVhMNQukTeWk3klxSL\ngGIHpg6j2ZeF9FS0/oMn7+9IZIRC8ojKBBITNL610oqyzxx1XOwbxPBlqib9\nG+3f1tZmAh9S+OZ4dCuaKoiFmrjmNsNQb2bPrOcZOjJ/LxfVwlXHooGmvofa\nYS5hUUbQSbxwIPXQKcrVGe/di8MIoF5B7xrGxI2W0wgC3ONema5EsJstMRrK\n/PB8aTxHezAZ37APKifX2J7F/Sy1fONDtS70Tzk/FSFC0AyiM6AAiRW9SdHw\nURlfah5iGj0O1hri7yODTJg/lkbsDftisk57PrrPA51G4pM5JuFUJXZGn9kY\nAmWDj9fi/byxJMBJ55EdFSpkcxoAl0pcYfaG+qukoOqu5YNSisVftGOicyf1\nentzNqNBxPTHCcH02VcVY3bAjteOiVsyrZmK3DBSTlgV7QVktQlt31kwGm67\n1t4U4kqcVg3qPLGEx+Y9sfuIcJ0xolO60sFWRV9ahhVYGR/njqmdoQfEhzJK\n5ngFKOpY8TtK/GG2iBQYLoX0qNA7nqKGGe7spO1OehpIW2zluTEDOyf1o0MO\nIK3c\r\n=Fgko\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNGphs7JwPbVQJrEFvLJ+KZB3zJocgfjU1UBN3dun3uwIhAK5ak6hNQY1m/WwBDZ5VdS0vT9FzosuwtszXl/LFZhge"}]},"_npmUser":{"name":"acostalima","email":"andreclima.pt@gmail.com"},"directories":{},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-fetch-api_1.0.1_1611593790641_0.6962048680847579"},"_hasShrinkwrap":false},"1.0.2":{"name":"react-native-fetch-api","description":"A fetch API polyfill for React Native with text streaming support.","version":"1.0.2","main":"fetch.js","author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"license":"MIT","keywords":["react-native","fetch","stream"],"devDependencies":{"@babel/core":"^7.12.3","@babel/eslint-parser":"^7.12.1","@babel/eslint-plugin":"^7.12.1","@babel/plugin-syntax-class-properties":"^7.12.1","@babel/preset-flow":"^7.12.1","@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@react-native-community/eslint-config":"^2.0.0","conventional-github-releaser":"^3.1.5","delay":"^4.4.0","eslint":"^6.5.1","eslint-config-prettier":"^6.15.0","eslint-plugin-flowtype":"^5.2.0","execa":"^5.0.0","flow-bin":"^0.136.0","husky":"^4.3.7","lint-staged":"^10.5.3","querystring":"^0.2.0","react-native-polyfill-globals":"^2.0.0","react-native-test-runner":"^2.0.0","react-native-url-polyfill":"^1.2.0","standard-version":"^9.1.0","text-encoding":"^0.7.0","web-streams-polyfill":"^3.0.1","zora":"^4.0.2"},"scripts":{"flow":"flow","lint":"eslint --cache --ignore-path .gitignore .","test:ios":"./run-tests.js --platform ios --simulator 'iPhone 11 (14.1)' test/index.js","test:android":"./run-tests.js --platform android --emulator Pixel_API_28_AOSP test/index.js","release":"standard-version","postrelease":"git push --follow-tags origin HEAD && conventional-github-releaser -p angular"},"dependencies":{"p-defer":"^3.0.0"},"peerDependencies":{"react-native":">=0.62"},"gitHead":"42c5bc5471034456d1e5a3b53c81e117160220d9","bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"homepage":"https://github.com/react-native-community/fetch#readme","_id":"react-native-fetch-api@1.0.2","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-BNCImbKfcp+7NyOPu4MuF4nhEzxcJX5hhYYftOyGDywhZVdV7Q9LrqhbFUaxprwwMeNugQHi/VOY9Bip99iNkA==","shasum":"14acda0049f554625b96486d4a87a1c3e8448b59","tarball":"https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-1.0.2.tgz","fileCount":14,"unpackedSize":43516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFyCZCRA9TVsSAnZWagAAoNAP/0meWCP96AC7SmM0GtRH\nmJCQLqoMEtYqjdImMm+rLqhm9T7kolGkNSCLm/pYJ2Dw0wuMEN1+7bpMLqo8\njItkbpoc6wAnH6AlnsaITxyuJVw2AOixUjqbU6kUuzB/b6sbdLGMlx3LP5TW\nXbCu6hu9YAvG1s6yWmAP2CPLIuqdaZJHxFylozcoHOykKdhr0dpqqjc/TJz1\n5GSKfs3yjni0KxnNLlbTct3cIvAD94r6pzpHXC1CH3/0EyBCTg0+Ip6e2/WV\n7KnSgUQbzlmx5HdOyTeoWT3qWGnBA/4DvffVSd+6cYGP05RilJIHu92/iMRt\nYpBETKIsFw7OerNr+OjxAK+iAho7eX1SQ6tHMq8e1maOOmRTQzMW1Y+lzxy1\nzQSvWfPv1oNBL59cgaXvik0L/GCbLzfRx1el4jCw+6HSuf7w0Yid+BplRO+/\nYU0sSfVBIqh6Ovd9+8q6UyvXMOom67QCSpILSXF7bhEVg4e8BeC5T7282biF\nzGtZbhAPJliPe0tPajcnD3fghrW6u/vMg6g5NWopagl6dLOsdMf2msr3JUUV\n57N6dlGB9pRVgHRXhUMYL3mAPVWPjNPSBw8zGskWfptriEXGlM2Qop91kHnS\nn5c/sdEonsTA1S7DcjYwf9aKCg0u8uPnoSrYFoMawpB/7jhOITlCRIAOVevU\ny5oE\r\n=vTWq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5hJK6h7yq8lgjgUH17e+p49ESiFULzooAnHOtedeVzAIhAINCGdLpWTUGJi9Ly4T7btmRJYioy31MMc7RBW5OYJZl"}]},"_npmUser":{"name":"acostalima","email":"andreclima.pt@gmail.com"},"directories":{},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-fetch-api_1.0.2_1612128407989_0.6240760549683584"},"_hasShrinkwrap":false},"2.0.0":{"name":"react-native-fetch-api","description":"A fetch API polyfill for React Native with text streaming support.","version":"2.0.0","main":"fetch.js","author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"license":"MIT","keywords":["react-native","fetch","stream"],"devDependencies":{"@babel/core":"^7.12.3","@babel/eslint-parser":"^7.12.1","@babel/eslint-plugin":"^7.12.1","@babel/plugin-syntax-class-properties":"^7.12.1","@babel/preset-flow":"^7.12.1","@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@react-native-community/eslint-config":"^2.0.0","conventional-github-releaser":"^3.1.5","delay":"^4.4.0","eslint":"^6.5.1","eslint-config-prettier":"^6.15.0","eslint-plugin-flowtype":"^5.2.0","execa":"^5.0.0","flow-bin":"^0.136.0","husky":"^4.3.7","lint-staged":"^10.5.3","querystring":"^0.2.0","react-native-polyfill-globals":"^2.0.0","react-native-test-runner":"^5.0.0","react-native-url-polyfill":"^1.2.0","standard-version":"^9.1.0","text-encoding":"^0.7.0","web-streams-polyfill":"^3.0.1","zora":"^4.0.2"},"scripts":{"flow":"flow","lint":"eslint --cache --ignore-path .gitignore .","test:ios":"./run-tests.js --platform ios test/index.js","test:android":"./run-tests.js --platform android test/index.js","release":"standard-version","postrelease":"git push --follow-tags origin HEAD && conventional-github-releaser -p angular"},"dependencies":{"p-defer":"^3.0.0"},"gitHead":"74f6a96ba1d720e6effd42ee9a47655b44ec9e3b","bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"homepage":"https://github.com/react-native-community/fetch#readme","_id":"react-native-fetch-api@2.0.0","_nodeVersion":"15.10.0","_npmVersion":"7.5.3","dist":{"integrity":"sha512-GOA8tc1EVYLnHvma/TU9VTgLOyralO7eATRuCDchQveXW9Fr9vXygyq9iwqmM7YRZ8qRJfEt9xOS7OYMdJvRFw==","shasum":"c4af188b4fce3f3eaf1f1ff4e61dae1a00d4ffa0","tarball":"https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-2.0.0.tgz","fileCount":14,"unpackedSize":43943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2aAgCRA9TVsSAnZWagAAlJYP/R3VZMOBGClcbR8EE4Q9\nQpHQtBjYA6vtEp/ehST5jyFGupV1nVRN3ahtfX8jTFqn2vtiWH5X6Z3yPUJe\nZYWT1hYXnRCsim36pbhqS1DSIhboI/ErrUmC8iA2ru4/hZJsKnYU0XlIkHus\n9yf7nX/4Hlob0odffbsmWL9o9E+KRMSfXxnIB9eM0dxXmS+HPC+Bqm1NB+WV\nl1+IqQU8Yx2ziW/EJrLUrabAe776famx6c0WTGU2Ad3uuO9dIM5wIKtl2d9w\nhxD8vcHp+egFbeWlv4MlXzy4GEO0RyXrXPl/qPw+Ug1WLqmurJUOAtmi5Wbv\noFzX8qjs1ldBRRUOQa/5vPv3vtXAm8udgsb9tDjJYXFT1dm4Mfjgr97n1FhG\nfl2k1CnMRCdAChPhJLGuwnMhShakwZJFlXct5GDqP2qIPkACBMuK1MBa8Xu7\nQYwc2lQInEeqL6QeAdii1rWK2XehzdfI70xyHwKEJkDZrfm/diNxl5tnpAr0\nlghAboGzMX4GIvaCY3aobk2ARzSdk5Pim0xpNP5l7Di0/XILLYSkdLKycJUt\nMcj08+7LfcYaUuIK7wtJVlOerVde2jr66EMs+Bc7tBrH6uRD0Oe60eN5KsnD\n4uRFU0w83LxOUh5WVroOalsvuivQZge9AUqFO49j/TZ/TLMosKv1Yd/pzg1d\ncSIi\r\n=jL66\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8uIzsPH9ySA6v3aolQ1FEhw19Wex0/uq3f+Xx4B5ZIAIgfjIEqyjlT9xfiWW+fLBh4TCtX1TIJ1pzK15gxcap8R4="}]},"_npmUser":{"name":"acostalima","email":"andreclima.pt@gmail.com"},"directories":{},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-fetch-api_2.0.0_1624875039884_0.509390720614324"},"_hasShrinkwrap":false},"3.0.0":{"name":"react-native-fetch-api","description":"A fetch API polyfill for React Native with text streaming support.","version":"3.0.0","main":"fetch.js","author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"license":"MIT","keywords":["react-native","fetch","stream"],"devDependencies":{"@babel/core":"^7.12.3","@babel/eslint-parser":"^7.12.1","@babel/eslint-plugin":"^7.12.1","@babel/plugin-syntax-class-properties":"^7.12.1","@babel/preset-flow":"^7.12.1","@commitlint/cli":"^11.0.0","@commitlint/config-conventional":"^11.0.0","@react-native-community/eslint-config":"^2.0.0","conventional-github-releaser":"^3.1.5","delay":"^4.4.0","eslint":"^6.5.1","eslint-config-prettier":"^6.15.0","eslint-plugin-flowtype":"^5.2.0","execa":"^5.0.0","flow-bin":"^0.136.0","husky":"^4.3.7","lint-staged":"^10.5.3","querystring":"^0.2.0","react-native-polyfill-globals":"^2.0.0","react-native-test-runner":"^5.0.0","react-native-url-polyfill":"^1.2.0","standard-version":"^9.1.0","text-encoding":"^0.7.0","web-streams-polyfill":"^3.0.1","zora":"^4.0.2"},"scripts":{"flow":"flow","lint":"eslint --cache --ignore-path .gitignore .","test:ios":"./run-tests.js --platform ios test/index.js","test:android":"./run-tests.js --platform android test/index.js","release":"standard-version","postrelease":"git push --follow-tags origin HEAD && conventional-github-releaser -p angular"},"dependencies":{"p-defer":"^3.0.0"},"gitHead":"ca8b7df212da92fa63542e6ab8c1b1643a8e6c4a","bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"homepage":"https://github.com/react-native-community/fetch#readme","_id":"react-native-fetch-api@3.0.0","_nodeVersion":"15.10.0","_npmVersion":"7.5.3","dist":{"integrity":"sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==","shasum":"81e1bb6562c292521bc4eca52fe1097f4c1ebab5","tarball":"https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz","fileCount":14,"unpackedSize":40863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCFHiCRA9TVsSAnZWagAAuv4P/3xJRxuBG21e097Umj5v\nuj2WPegMxK22ixUHQL1eavnDt1yWFp/wqdhDoBGM8N3dQnFIsdZOXYTsqi59\n20EZR/ExfJDWkTmsYshxk0X0GkkFTFWI6vwA7IjZD6+Et8VFNcvr4aNuK1xG\n4vc2dWCio5g/zome/WFgESCunryOvCC23vx3rqQKU+I85iZnpe2lOMJqvXyq\n9QljJS6giSwXwkBm7sNIm2vPlcaYs0xpYWEn2B8nFyh0BAM6BbpqxmWXUDXk\nLoDJBqrt5BvOibVIphzWkJpaNqT+oIYAQ5Wbg2ssbvTEQ8v6nQe2hzaX/6l4\nwee89lMdeZv9AOSBa218+Dqpzyz3o/wFB3+RTDZiCEozC1xTyZHHu0YWhd2A\nWFJJpNouMwwbfhEFBakuz+O9L8qOBWxZ58k8QZd3XoaOrQJfqZKWIUJriNAq\n2i3kAPqkn9uWvGVMEbuoLCbm5HM2U0JGLHOZWEFRJ0v3ItNAFJARZcaVngNh\nFGuxBQDcTLLGn63J0pG7NGgbKkYhdAAQlJ4oAfMl2vnqAjQTHfWIqnAiauDE\nEozoP7MNPkaW1Is7ydqsjy8zzNLhwbbRfTcB9WwrlPLJSJGyMNmbOTcY8Rnt\na72YP1K8XBTpvpjc8MD5xdwOGTQf6q9ogR66gjdjdmtj8xf6Lh9Za/nlRnUk\nmgJT\r\n=DLfn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtdlfO7cX6WFUe7h4WvrfBJWanRncSPaa+WbvnCMfzVgIhAMgsH6hbxn7nH766t6Bni1XUmeBvCaWkSXnLqtNGVQ4f"}]},"_npmUser":{"name":"acostalima","email":"andreclima.pt@gmail.com"},"directories":{},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-fetch-api_3.0.0_1627935202048_0.8221541747205963"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-25T15:42:43.204Z","1.0.0":"2021-01-25T15:42:43.334Z","modified":"2022-05-14T17:46:52.724Z","1.0.1":"2021-01-25T16:56:30.730Z","1.0.2":"2021-01-31T21:26:48.130Z","2.0.0":"2021-06-28T10:10:39.992Z","3.0.0":"2021-08-02T20:13:22.198Z"},"maintainers":[{"name":"acostalima","email":"andreclima.pt@gmail.com"}],"description":"A fetch API polyfill for React Native with text streaming support.","homepage":"https://github.com/react-native-community/fetch#readme","keywords":["react-native","fetch","stream"],"repository":{"type":"git","url":"git+https://github.com/react-native-community/fetch.git"},"author":{"name":"André Costa Lima","email":"andreclima.pt@gmail.com","url":"https://github.com/acostalima/"},"bugs":{"url":"https://github.com/react-native-community/fetch/issues"},"license":"MIT","readme":"# fetch\n\n[![npm version][npm-image]][npm-url] [![ci][github-ci-image]][github-ci-url]\n\n[npm-url]:https://www.npmjs.com/package/react-native-fetch-api\n[npm-image]:https://img.shields.io/npm/v/react-native-fetch-api.svg\n[github-ci-url]:https://github.com/react-native-community/fetch/actions\n[github-ci-image]:https://github.com/react-native-community/fetch/workflows/Node%20CI/badge.svg\n\n> A fetch API polyfill for React Native with text streaming support\n\nThis is a fork of GitHub's fetch [polyfill](https://github.com/github/fetch), the fetch implementation React Native currently [provides](https://github.com/facebook/react-native/blob/master/Libraries/Network/fetch.js). This project features an alternative fetch implementation directy built on top of React Native's [Networking API](https://github.com/facebook/react-native/tree/master/Libraries/Network) instead of `XMLHttpRequest` for performance gains. At the same time, it aims to fill in some gaps of the [WHATWG specification](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) for fetch, namely the support for text streaming.\n\nIn practice, this implementation is a drop-in replacement to GitHub's polyfill as it closely follows its implementation. Do not use this implementation if your application does not require to stream text.\n\n## Motivation\n\nGitHub's fetch polyfill, originally designed with the intention to be used in web browsers without support for the fetch standard, most notably does not support the consumption of a response body as a stream.\n\nHowever, as React Native does not yet provide direct access to the underlying byte stream for responses, we either have to fallback to [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) or React Native's networking API for [iOS](https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Network/RCTNetworking.ios.js) and [Android](https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Network/RCTNetworking.android.js). Currently, only strings can be transfered through the bridge, thus binary data has to be base64-encoded ([source](https://github.com/react-native-community/discussions-and-proposals/issues/107)) and while React Native's XHR provides [progress events](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/progress_event) to receive incremental data, it concatenates the response string as data comes in. Although [very inefficient](https://github.com/jonnyreeves/fetch-readablestream/blob/cabccb98788a0141b001e6e775fc7fce87c62081/src/defaultTransportFactory.js#L33), the response can be sliced up, each chunk encoded into its UTF-8 representation with [TextEncoder](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) and finally enqueued to the stream.\n\nInstead of relying on `XMLHttpRequest`, which degrades performance, we remove it out of the equation and have fetch interact with React Native's Networking API directly instead. To make `Response.body` work, `ReadableStream`'s controller was integrated with native progress events. It's important to stress that progress events are only fired when the native response type is set to `text` (https://github.com/facebook/react-native/blob/v0.63.4/Libraries/Network/RCTNetworking.mm#L544-L547), therefore limiting streaming to text-only transfers. If you wish to consume binary data, either `blob` or `base64` response types have to be used. In this case, the downside is that the final response body is read as a whole and enqueued to the stream's controller as a single chunk. There is no way to read a partial response of a binary transfer.\n\nFor more context, read the following:\n- https://github.com/github/fetch/issues/746\n- https://github.com/facebook/react-native/issues/27741\n- https://hpbn.co/xmlhttprequest/#streaming-data-with-xhr\n\nRelated:\n- https://github.com/react-native-community/discussions-and-proposals/issues/99\n\n## Requirements\n\nReact Native v0.62.0+ is the minimum version supported where the [Networking API has been made public](https://github.com/facebook/react-native/commit/42ee5ec93425c95dee6125a6ff6864ec647636aa).\n\nThis implementation depends on the following web APIs which are not currently available in React Native:\n\n- [`TextEncoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextEncoder) \n- [`TextDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder/TextDecoder)\n- [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)\n\nIt should be possible remove the dependency on `TextEncoder` and `TextDecoder`, but not on `ReadableStream`. Either way, beware the bundle size of your application will inevitable increase.\n\nTo polyfill the above APIs, use [react-native-polyfill-globals](https://github.com/acostalima/react-native-polyfill-globals).\n\n## Install\n\n```\n$ npm install react-native-fetch-api --save\n```\n\n## Setup\n\nThe APIs provided by GitHub's implementation in React Native  have to be replaced by those provided by this implementation. To do so, check and install [react-native-polyfill-globals](https://github.com/acostalima/react-native-polyfill-globals) and follow the instructions therein.\n\n## Usage\n\nNo need to import anything after the [setup](#setup) is done. All APIs will be available globally.\n\nExample:\n\n```js\nfetch('https://jsonplaceholder.typicode.com/todos/1')\n  .then(response => response.json())\n  .then(json => console.log(json))\n```\n\nCheck fetch's [official documentation](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) to learn more about the concepts and extended usage.\n\n### Enable text streaming\n\nA non-standard option was added to `fetch` to enable incremental events in React Native's networking layer.\n\n```js\nfetch('https://jsonplaceholder.typicode.com/todos/1', { reactNative: { textStreaming: true } })\n  .then(response => response.body)\n  .then(stream => ...)\n```\n### Aborting requests\n\nIt's possible to [abort an on-going request](https://developers.google.com/web/updates/2017/09/abortable-fetch) and React Native already supports [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController), so there is no need for a polyfill.\n\n```js\nconst controller = new AbortController();\n\nfetch('https://jsonplaceholder.typicode.com/todos/1', { signal: controller.signal })\n  .then(response => response.json())\n  .then(json => console.log(json))\n```\n\nLearn more about aborting fetch at https://developers.google.com/web/updates/2017/09/abortable-fetch.\n\n### Cookies\n\nThere is no concept of Cross-Origin Resource Sharing (CORS) in native apps. React Native only accepts a boolean value for the [`credentials`](https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials) option. As such, to send cookies you can either use `same-origin` and `include`.\n\nThe `Set-Cookie` response header returned from the server is a [forbidden header name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name) and therefore can't be programmatically read with `response.headers.get()`. Instead, the platform's native networking stack automatically manages cookies for you.\n\nIf you run into issues with cookie-based authentication, read the following:\n- https://reactnative.dev/docs/network#known-issues-with-fetch-and-cookie-based-authentication\n- https://build.affinity.co/persisting-sessions-with-react-native-4c46af3bfd83\n- https://medium.com/locastic/react-native-cookie-based-authentication-80ee18f4c71b\n\nAlternatively, you may consider using the [react-native-cookies](https://github.com/react-native-cookies/cookies).\n\n### Request caching directive\n\nThe only values supported for the [`cache`](https://developer.mozilla.org/en-US/docs/Web/API/Request/cache) option are `no-cache` and `no-store` and Both achieve exactly the same result. All other values are ignored. Following GitHub's implementation, a cache-busting mechanism is provided by using the query parameter `_` which holds the number of milliseconds elapsed since the Epoch when either `no-cache` or `no-store` are specified.\n\n### Redirect modes directive\n\nThe fetch specification defines these values for the [`redirect`](https://developer.mozilla.org/en-US/docs/Web/API/Request/redirect) option: `follow` (the default), `error`, and `manual`. React Native does not accept such option but it does transparently follow a redirect response given the `Location` header for 30x status codes.\n\n## Tests\n\nTo run the test suite, you must use [`react-native-test-runner`](https://github.com/acostalima/react-native-test-runner) CLI. Run the `run-tests.js` wrapper script to spin up a local HTTP server to execute the networking tests against.\n\n### iOS\n\n```\n$ ./run-tests.js --platform ios --simulator '<simulator>' test/index.js \n```\n\nWhere `<simulator>` can be a combination of a device type and iOS version, e.g. `iPhone 11 (14.1)`, or a device UUID.\nCheck which simulators are available in your system by running the following command:\n\n```\n$ xcrun xctrace list devices\n```\n\n### Android\n\n```\n$ ./run-tests.js --platform android --emulator '<emulator>' test/index.js \n```\n\nWhere `<emulator>` is the name of the Android Virtual Device (AVD), e.g. `Pixel_API_28_AOSP`.\nCheck which emulators are available in your system by running the following command:\n\n```\n$ emulator -list-avds\n```\n\n","readmeFilename":"README.md"}