{"_id":"fileapi","_rev":"56-8e2dabc7167c5e2c0f8aae09b33cf7f5","name":"fileapi","description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","dist-tags":{"latest":"2.2.0"},"versions":{"2.0.0":{"name":"fileapi","version":"2.0.0","devDependencies":{"grunt":"~0.4.0","grunt-version":"*","grunt-contrib-jshint":"~0.2.0","grunt-contrib-concat":"*","grunt-contrib-uglify":"*","grunt-contrib-watch":"*","eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4","phantomjs":"latest"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"}],"license":"BSD","_id":"fileapi@2.0.0","dist":{"shasum":"52b080c8e47a5cd94b12937358d7fdab019a4a66","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.0.tgz","integrity":"sha512-egosiEh37Mln3CtPeU+j7VrZ5Y3+SFHXJxgygdvDzRjJdqUZ1n1CuTLvuWTz+iq1vsqFvdMt0yWDiyKcnZUIuQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG+rml60DfQAG5U6qQkl/Vi4IjXF+KbipRIDPJDr1z0wAiEAykL092p76rHS+QvC0xohU2C5cNihraCKdzOjAJoBjMY="}]},"_npmVersion":"1.1.61","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.2":{"name":"fileapi","version":"2.0.2","devDependencies":{"grunt":"~0.4.0","grunt-version":"*","grunt-contrib-jshint":"~0.2.0","grunt-contrib-concat":"*","grunt-contrib-uglify":"*","grunt-contrib-watch":"*","eventemitter2":"~0.4.9","semver":"~1.0.14","temporary":"~0.0.4","phantomjs":"latest"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt test"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"}],"license":"BSD","_id":"fileapi@2.0.2","dist":{"shasum":"0508cafa7e619e2483530efa564c79ed68ba873d","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.2.tgz","integrity":"sha512-IvbyCiQIUfJoXigtnqmSLTjV/sc0kw40ePDkQwhoTwkVdxCMU+LoqMpMZt/2aqnekIwA0X1AGewLpE+3q7RdSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICsYvDuPwpIPqjBg5KqzUy8UAlpu3OiE5kATmYLZDbOtAiAKW95lXK8d50i8x002SjIfOCEvHJCjbv8PFjf69RCVrA=="}]},"_npmVersion":"1.1.61","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.5":{"name":"fileapi","exportName":"FileAPI","version":"2.0.5","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.5","dist":{"shasum":"5580cc1d2a323e3715fa7ae9e664fc2a49e35b04","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.5.tgz","integrity":"sha512-F34GwOXW4ypH1h4hyfgw+jPhctDBY2gf0u6Cff/3l8oqdU4lciOGwmhtco6X7Jm2S1g6HpwYXauD/XqHjVGi8Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDtJpxtgvEi3suvwxeQQrqFszOV9n2vRUEppXF9Ld+prAiAUFSaSb9Y6HG25Z0o8gRafowSUFbrHvyHOPR7ccZWwpA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.6":{"name":"fileapi","exportName":"FileAPI","version":"2.0.6","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.6","dist":{"shasum":"c1a2e470b28ae5869c878ed1c46a8a84c4ac4c60","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.6.tgz","integrity":"sha512-e8bkP1BC57jAQ4IejDPvjEa8XkhSPSqaUCLVrubOFBOBqrOrPJ2ubAJuzd+OoKr+0MoEAQ+ZCjK0TxQSeWTSmw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzZhAGxEv6Q9aWEJI5auc8FrISKVeObrkTxMwsK88HvgIgVpL8tkIzi5DJlelzAJ2SlQBcYcM6VCLif5hPG3h+XO8="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.7":{"name":"fileapi","exportName":"FileAPI","version":"2.0.7","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.7","dist":{"shasum":"e043527e786da1cef58e57f384d52ef496c01d7a","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.7.tgz","integrity":"sha512-fnZq1Jq7eV1p33c1NwL/xmNcr/R0BdnrzTwJQJnt39w/usm+oqSDmqfs3xE5bfThmGbFpiu84aBpowAf9F1p+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUxb+nm4ABZWsnaE7YCvUXLOyeLDnvYQY+l0U5zUoOCwIgGac5WlZu21x/O5eKwUPOGMSQR9yjaN7IORVNGszWdtg="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.8":{"name":"fileapi","exportName":"FileAPI","version":"2.0.8","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.8","dist":{"shasum":"a650548e45e66803a2b9a1545de9689629c41c24","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.8.tgz","integrity":"sha512-RHjzvU24t3ohg1gsVmVfraYG+aZxAOaunwwEhzkFsi/e2iOBGLWXbtXsMDbqep2Y1p6I9OocLbHDfkDTixymiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZKRXhbP7duqsmXnLCUHZA7yd9ZABNP7Mx7WWddN7w8gIgRAvWkBU0RAf8JYBGVBsw3VNYzJgqI2ZCdSiguR7fyfE="}]},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.9":{"name":"fileapi","exportName":"FileAPI","version":"2.0.9","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.9","dist":{"shasum":"6fb4cb53c8f585a4d8350e3dd51ad1fcf4c7d230","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.9.tgz","integrity":"sha512-lfbzqWC5DyGAQQuUG1R+jRZJRiVwziJIKvpUr65XnY8z93Xy4NVySTQ6Pn3JoZ4I52VzSbGQFciNzaaydFsnEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEZ72IyVEhFhNXLojDSxHxxwix10Ld6Sb9dIHgFdpufyAiB3sOzarrZdfw1KYj3DBL7eadriPN71kWSPJAGtBLL6wQ=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.10":{"name":"fileapi","exportName":"FileAPI","version":"2.0.10","devDependencies":{"grunt":"~0.4.5","grunt-version":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-concat":"~0.4.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-contrib-connect":"~0.8.0","eventemitter2":"~0.4.13","semver":"~2.3.1 ","temporary":"~0.0.8","phantomjs":"~1.9.7-9","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.1","grunt-contrib-compress":"~0.9.1"},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.10","dist":{"shasum":"a35f913015cd5fa6b1067d0b9b54e1b9c9504253","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.10.tgz","integrity":"sha512-MsuxTdyR5C8bFMQHvN+u3Ljb3+PKyIxaUZqnVdSE3lLGMw6MnfWKHo0Vef3HGwtdKOKNQqvoXAg5MZFntCu2FA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQDU2spCJPxPY8/ALIhKdgDVjh7rov4VFL2uwGNy23egIgfPBrGHUHCFQDOfO4b7a0/1ZkrJNZkEKarcDV/S646oc="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.12":{"name":"fileapi","exportName":"FileAPI","version":"2.0.12","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"c6040a2c1398d70632e3bf0560275753517499da","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.12","_shasum":"b1dc6861c71f59661cef7e00dfc07e151adaee97","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"b1dc6861c71f59661cef7e00dfc07e151adaee97","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.12.tgz","integrity":"sha512-AOrzx8DZXk2spR/hV/O2u3hCKEuOhJ2yr9R41IpIQD3JBAeCWdwjIiXq15cYrck9SRjOkGCvmFgRoK/XvOhkew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1eLpdNzALoJjESHrbbAUXzv61qiESZUZ9i8yAJEl9kQIgaInmOHm05fdajDkkk/qsEZfZOkU4VG7HQ8w3G+FdzXk="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.13":{"name":"fileapi","exportName":"FileAPI","version":"2.0.13","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"513d44ee5bcc53227e3122d6e645d978987236f7","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.13","_shasum":"8f9f8ed13df07f44ea7ef8dd4e07552f635306c9","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"8f9f8ed13df07f44ea7ef8dd4e07552f635306c9","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.13.tgz","integrity":"sha512-+sxWWhdygacWP/RFhKWmWEAi6wMXF3sf38Zn1Q2l137mZdsTd616lOzW0YOwAWTiLa3/D2zYQRvGemQ41Sacpg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGXGkL8liuCeDMlq09bv4wUmCQx40SbIJhaepqPZk58SAiAYzeG6b+R2KZeuvecILjbw/DD4/5l54PC/FcTVcNO1IQ=="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.14":{"name":"fileapi","exportName":"FileAPI","version":"2.0.14","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"17116f9f7a0546163de0ebaa465e9117db10b7d6","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.14","_shasum":"8626a70964881efef9ab4e0ff18b9e7c14e7b093","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"8626a70964881efef9ab4e0ff18b9e7c14e7b093","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.14.tgz","integrity":"sha512-9rbupfkds34Jbf94UoxLpqns/AV7l9WjwaUQHD+s+UoXxbV3D2e390YQVUQSpUcOLAwFQ3rMRclG+Q1uCkSGhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcIcH+OxFZJUz+XbwHZLhMoTdJwLY4Ev6h6Xow98hEwgIgZAk9cD6ho8Np8erLV3JDyhb0219u9KPjrqILr404ks8="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.15":{"name":"fileapi","exportName":"FileAPI","version":"2.0.15","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"6c749578928814a4bbf120163f233cec949aa55d","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.15","_shasum":"7c1854fbe148797de6d6ba43d1bab8d0ecee2864","_from":".","_npmVersion":"2.11.2","_nodeVersion":"0.12.5","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"7c1854fbe148797de6d6ba43d1bab8d0ecee2864","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.15.tgz","integrity":"sha512-xmhmkdZSEmitrmo3ubQRF1yo5Mx2J+wqDWFVS9xOzMDuyJzFIF/flyd7Ra5xKBoCrZarkUG3IlZ1TQZzElr5sg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8F5N8PMKVR74ATH+1WjWNEEH1Aut2oWG77sr5bN3KowIhAJ8sss5VH9OhGGWDuCV7zUX11P7m+XGUZ7NLRJ0IDZQr"}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.17":{"name":"fileapi","exportName":"FileAPI","version":"2.0.17","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"1736e451e86ece7310feb10f9b0aac7d762f97d5","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.17","_shasum":"53a36c18a227cedc7d4245b5c9505463e2d1bf92","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"53a36c18a227cedc7d4245b5c9505463e2d1bf92","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.17.tgz","integrity":"sha512-dsH9/MIe213tqmANrTo+E+D8iJVB0ipT1TmmdQ/x+jZPkASGm0VjQHEVDpd+wu3sT/jsHrJ6sXaJQunffgKZKw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxhObNZ5BC5wS49oJgUe5oBHKl1uIoapzDeiCGWrOMbAiAUkkFUMIL5/Tt1p659f6FSuT7XySxZJcoZ6pqhBixYpg=="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.18":{"name":"fileapi","exportName":"FileAPI","version":"2.0.18","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"d66109898cc2a286d7b114c9c359e56d04c89df2","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.18","_shasum":"feefafd913ec3bafb95b18d830b342cde6a574cd","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"feefafd913ec3bafb95b18d830b342cde6a574cd","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.18.tgz","integrity":"sha512-0b1MdNxUtVke7PBDpdkwSJw6FQ9GhK91usmqs0on/lm/GWoIgsvzi5aFxYW+HmaIlmlAM2W7pY66yM4kdQmpJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiRnC3/ECIC0N2GpHoIStRmk/ga0ZxD9NfXoRalElfEwIhAM2UEB8P4QlWi62swr+eqrrRuxcHOPIcg8e0ln8xhxBc"}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{}},"2.0.19":{"name":"fileapi","exportName":"FileAPI","version":"2.0.19","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"3f9aff994c547ab090f5f7ccbec83714396a693a","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.19","_shasum":"ae4e7668f2081a6f80801344eb7985555be15f2d","_from":".","_npmVersion":"2.14.2","_nodeVersion":"4.0.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"ae4e7668f2081a6f80801344eb7985555be15f2d","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.19.tgz","integrity":"sha512-FoxPT9mEs6kEmKre7wm9gKoQg3mmv11a1nYLVc71stJGhLgK8kgQr3RqKV+a1uHk8ILAaOn4MBQxPJVUedmV4A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFwp0Z5r2Z+if2pt/Xh6CoTcMSUwjTxluRbh/pgUc2hcAiEAzhbId8zcQ0RMHgPYJwmuWC6zDg1eoZjpv+REoGgH6jw="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/fileapi-2.0.19.tgz_1455263407616_0.7066776554565877"},"directories":{}},"2.0.20":{"name":"fileapi","exportName":"FileAPI","version":"2.0.20","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"4fac7fdd80ec579fa9bc96591cc78888a3372843","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI","_id":"fileapi@2.0.20","_shasum":"7e90445f56c6e7a9c69b9350ac15ea5161a92ba8","_from":".","_npmVersion":"2.14.3","_nodeVersion":"4.1.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"dist":{"shasum":"7e90445f56c6e7a9c69b9350ac15ea5161a92ba8","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.20.tgz","integrity":"sha512-italGL/NCQNB3rZwA3uXYW6u1bNEe/ViFntYPHDDLnW0TgMJyOAmaAewuY6DJOdoPIr+KFFHQX6WFZupEKdmEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxYT1Uxt/JzE0KB+c9bi6aELN2Hsn/3SpPbeIGkWe8BwIgYUqxssxioYiRsJWacYHLSxEdn5qdzMuoBjfH9wQytgc="}]},"_npmOperationalInternal":{"host":"packages-6-west.internal.npmjs.com","tmp":"tmp/fileapi-2.0.20.tgz_1455646513006_0.7312707686796784"},"directories":{}},"2.0.21":{"name":"fileapi","exportName":"FileAPI","version":"2.0.21","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~2.3.1","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"bd0c7a0ad8f8829aa9ac2dc1ce1836b71f21eb1f","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.21","_shasum":"e8f01b408005147a8426e9247f7c064b581ded2d","_from":".","_npmVersion":"3.8.6","_nodeVersion":"6.1.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"e8f01b408005147a8426e9247f7c064b581ded2d","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.21.tgz","integrity":"sha512-N+tOjtkXGV8QVvp80mv1OFOZ6JHP/NicoeOY8Jr3o09Edj0YCUQjYOs5Ut82xg1vZguumYFLG7UVYSydN2lygg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGpY6iYehXcv/qh9rX6aMGuDxDVrBZreQ8DLey6fFwtQIgNrXTUs6Xqh8aCUrA2nWinjN5CMsPVtBxKXei6P9r8yY="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/fileapi-2.0.21.tgz_1469181701898_0.030639713630080223"},"directories":{}},"2.0.22":{"name":"fileapi","exportName":"FileAPI","version":"2.0.22","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"packageName":"FileAPI"},"scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"760c957cc1c6c58570d01637342d3df08a0fb410","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.22","_shasum":"f27ae65036544c17ecd039bd3c3b0bd9858650c4","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"f27ae65036544c17ecd039bd3c3b0bd9858650c4","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.22.tgz","integrity":"sha512-TGS2Lzq9O/yMg1tf1JOnF/KwAbWKpY+MWFVm1e+LX1MhRn4ATCNt0xiwtElU/762OwWUrV56L8R1WS6rJp8ocw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9yER4nv0ik30Vmvj2Snfr1C0fz2Ghv7Ca6R8tLJhWcAiBM4151ud/uGAA0isEIlGyB9rE5DRZ5EFj0H5MQOJqVhw=="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi-2.0.22.tgz_1511885040530_0.3583269363734871"},"directories":{}},"2.0.23":{"name":"fileapi","exportName":"FileAPI","version":"2.0.23","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"245fa07408480928ef8d9515bcf83d6ad8a6ffc6","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.23","_shasum":"85aec3b9838088c6ed5923b8de173d8c9c36594e","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"85aec3b9838088c6ed5923b8de173d8c9c36594e","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.23.tgz","integrity":"sha512-foz6/w4Gqvy2kghokcrePKQAImrmltcjJJukzv6EyzDi3UevTQGh5BCgy9HAhXq1qMqO5T2FFhTlWNzABFp3sw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwlJ0ZHUmPDmwH6bd0RNzXqoMroa/8Abb5nP/ukDYBPAiEA/tmm6w7TcF2pdiVBbQE/d0sn9PKwfNkXbT9W8tRO0xY="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi-2.0.23.tgz_1511943452047_0.85830995044671"},"directories":{}},"2.0.24":{"name":"fileapi","exportName":"FileAPI","version":"2.0.24","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","files":["./dist/","./plugins/","./*.*"],"jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"f9a4b84743b91cfb77316d416e48c5c917c729e7","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.24","_shasum":"2eba4099a9a9d7c34a0134572a717bb1ab676f48","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"2eba4099a9a9d7c34a0134572a717bb1ab676f48","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.24.tgz","integrity":"sha512-yvjjJUFic/piCkNG5lTbmMy/gWIeXhbfD2ltr++KiITcJyMG0wUm/szs57dIyqP1QRndQmc+ZIzkRVG3aBkNDA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2z6qJJkiR/WS65iz42uXJWs8oku6ywqK72q+/8stzWAiEA6K/hIE++V4e3f3QBf2Tv8RhWTiRcfVr4Zi7hJiXbD3Q="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi-2.0.24.tgz_1511945170008_0.031017961213365197"},"directories":{}},"2.0.25":{"name":"fileapi","exportName":"FileAPI","version":"2.0.25","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"~0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8","image-size":"~0.3.5"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","files":["dist","plugins","*.*"],"jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","gitHead":"18aafe0a759a0a36374fde989865488207c75ad6","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.25","_shasum":"6a7d27279b8c0cb9d3c526c6c0573a42a7c16402","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.6","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"shasum":"6a7d27279b8c0cb9d3c526c6c0573a42a7c16402","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.25.tgz","integrity":"sha512-Bc2ud4jc1VyHdTyQyrV/MbEPOYLR5MrB1O5hheSxVPvYiW+/kRVHxmtAuAKarvhaKkTFIo6NRg2E/LGDyL1nMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFAOy6zJisDjAwB1OT/yErU5nbO2fzIor+OShlAkzaBwAiBzXIAdpZeK5GLDN73zV/TQ+eyjt0OAedrTsihLSrslfQ=="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi-2.0.25.tgz_1511958968395_0.30625066510401666"},"directories":{}},"2.0.26":{"name":"fileapi","exportName":"FileAPI","version":"2.0.26","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"^0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","image-size":"~0.3.5","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose","build":"grunt build"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","dependencies":{"grunt-cli":"^1.3.2"},"gitHead":"30366826c6b28898026714f80db43f5bfd5fd92c","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.26","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"integrity":"sha512-6FFdXPEs4Ar2C5O/iw3T/68ynNDc+u6VgTHaq6A3VWiA2owWziuoqCilqNn7SFh9a1BZweqr1iImvl1l+nvrjg==","shasum":"e6a56e752a6e81438b0aebc1886324baf659acb5","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.26.tgz","fileCount":2350,"unpackedSize":91417669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHL0ACRA9TVsSAnZWagAAFX0P/RRwo0PCW6XfyWwc9jOW\no67ubKmA3BILfDRS4uXy+3QdRRgruWeqzM+EwArmUAI02cZEC9MjVqFIXXFT\n+iiOmfny0WzXr7p7J8bCIWgnxXKgbIk8zhJ5B4GTEwpPOSy8MjMvzPP/0Yyx\nkw0ycy0ZMNJNlRvykcMHapLKvtoHran3fWEIdr+w0rKE9NZccYQIb8mtUL+k\niiDlEXGZK32jfKxedf8AkgEnEPAloGp4zuMkKfr09c5pgPbSqxuDsvsnpxc3\nk05esQGDNeKogOIT7/yuLyhuKXdNib1gelPecftUi1mxgNfSg6alo20oGLJ2\nI+HE8sw3q1yaZo5GJ4JC9PGLhihaswVELloNBFB9ExQYm9b3eqeHj7q7Zk6t\nUG4886XcBqwbYPfJiSVMGcktTSCnTSQ4nHFyFCFkgbJlYF2AfUf0Dz015C2f\nU6IZzPOmKA59TVnfaVhmgPHfUY1tjP/tjd6TTgtgvL2Prnqe7WZ+Ulow8A5J\n8DKkwTbfnJwaYPOwNcsF1/Pr6e1/ALgpbu9eISxgKU+pXd6n4hW/WV2cAPIf\nXd1SF12ltMz0fD98Fjo72VNW7SfR7D830n4UG+tYBIdBl7bv/E7svfQqG5Wd\nSmKMyRxsB3Wlu77COBaz4EvDqFDcicIspU9husNDcYo14ygk4o5mnD52mZVa\ny0se\r\n=wmAx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL1mqWiOdO0KRagEZQPqZ9tTP+O6wfNv3uZ9IjSh0CRQIgZ+X5uaOpddoLndycZXpsYJhUJKCPQ14uPLb2VCeVWEc="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi_2.0.26_1545387260891_0.7923070266287311"},"_hasShrinkwrap":false},"2.0.27":{"name":"fileapi","exportName":"FileAPI","version":"2.0.27","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","grunt":"^0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","image-size":"~0.3.5","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose","build":"grunt build"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","dependencies":{"grunt-cli":"^1.3.2"},"gitHead":"c9155bfb6b25da83724e6d6b45bc0edaa969b81b","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.0.27","_npmVersion":"6.4.1","_nodeVersion":"11.1.0","_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"dist":{"integrity":"sha512-4M12KDRYqid3OredliP3W7V6nCV7gX9WYE6EY9FVZJfdheL/xO1n4RG/vFPv6gwf3X/1GwKgllKs/0Ml/fJvMA==","shasum":"ad5458a1b70750d87c7ef28a1d668a754fbf3c24","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.0.27.tgz","fileCount":21,"unpackedSize":845257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSHoqCRA9TVsSAnZWagAAi5oP/RKgJKwqj3r4tWW8tX+S\nGHmlN22iuHo2dbx59x7iMitzFJ9pdDFCJewyzK06XN4QEzFKBKAae0I4PCN/\nCQNllNuf2+5ASWQnJcX0WHrgRofFNaY7/Ijo4usHXJ6dAgBksBgP/F1j8fCg\nPCLuyY4AytcScLb/o09tvC969cWqzHRlGblxYg9SutcyxbhJU3aazClYJq6h\nmr1IJfEuyk8C0eFFhMy7MopQipInXEhK+TzL5ebMPSdvhoYkwmv2z76PdHj6\nrg4B30zw25kx9bNvSIKTnOIsO+S2FmAm8dGfJWr4qtLQWuuPtwWynq7L8jL5\nWG6spbTHIyuMAzu7PkyfiPfI6goTvqRSXmlOmDE5HfU1xa4I6L+v60RVxCAI\nW6Xm97vYvmk59T0h+ZhDCk2cUJjyjX1k5WghbemvJ69P5VHC3OvRnt39BqDM\nM2GmszERtvg6/mPwjwVdkbEYBI4VDvLbF1GSVbwvCD2ZfhJ5ZKmJ0tW93u0T\n2ILL9iTitiG7Ofv8pk5n8i3WTY+Fe5Jo0MZZkS8L8UDmLkk8V3WYvQLXPikl\nIf3QEIOvy8zsiZ6Vd/NCICTUB9WP8BcDtVTbWrpyMz1St5DxdhIhNLjDDAs5\nlenj+UBV0Ma1VDPO63SkJla5ElSzxAUtVbFQ/ES5h7NBhrQX5QVNPyrgM4jh\nZlTI\r\n=JOqd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzO9h4DBkCh0ATUnDEZxT6LWprT12zeIlgZuqb+uKV/QIhAIoAe7exMB5iSx7DZ1a4ECn91scOHK8I7bYzrow+GkBr"}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi_2.0.27_1548253738018_0.98484926709032"},"_hasShrinkwrap":false},"2.1.0":{"name":"fileapi","exportName":"FileAPI","version":"2.1.0","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","flex-sdk":"^4.6.0-0","grunt":"^0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","image-size":"~0.3.5","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose","build":"grunt build"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","dependencies":{"grunt-cli":"^1.3.2"},"gitHead":"1b3af7a7d01d408323407a37c4f13d91100e0641","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.1.0","_nodeVersion":"11.1.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-EynQE48/gCZpmsBXkhCP3+8mx92N9SYDenF56A/Upj6g/MrXsCFTMyJ6sqIU95TEUFsQb8eyZWPl4T2KRoIybQ==","shasum":"309622db30cfc68092d1874dbdb6b201d03b611f","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.1.0.tgz","fileCount":21,"unpackedSize":845753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+h3RCRA9TVsSAnZWagAAM4UP/RArNdd76HxEk/vjkqS5\nopIpGJr3I6bhuz+ND7trrDyPruKsvWzhladsTkcr0tb+NMEjd7XPd4Guoy7J\nJqO4OAcjSiLvVDjrukngCijeyF1FgNr0uq6C7yUMCbrWcEfeIALsRS+KRsdo\noZjjM3l0kXf2FMh7qZ0LQd7YyGulZ6CYm/6p3vM6mGIsSQQ2TgobjUak+tKy\nV3gUKkxzJS4FaXgGCP3DcHgZbdsYLKGdWsul+JO5r/6l1A17kjUQ6GFEGMLg\ndRVhpTElM95adD1GogCK+Nw7Etfugt6FedKAOd1d4ajtkd3oVHRMvaBAZc0p\nRKEfudeowhRWFc89f67LTOzqP1Ncd3zwAtAkgpN7Whn9Ryfip3f11padvBok\n1rCOGfDLH8fqg10QGFdlUFPAwawk3mXoP+IoYNJpMPHht+h6740e6V4Jt+17\nna653CCpLOp6i2rlTESCKBSxPu2Va/0TtIVSnDBaL9vhvWqzw+sUTda4XKjp\ndla0wTHqKVgnoQ6p5Bf0SFcgy4Og3FvuEC0oBGJeFzqEv8AySD6CLXbDrwul\nDVEjLiHBnoH3ajjmIlylHGbFUy4qUJXTlj57o9EBW9v7pcx1GuG+zTUoTP0m\nucgC5/iZJwBsfdcIzNKiu9wD4KxOgLPx1tWmx1137EcFYbF2uv9DAxjPovEP\nikeg\r\n=W8la\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy+e7NFhSCitCL4fROikXCxb0tx11JXWwiurq6JHS6sAIgKSXZF+EvilBdF3Qq5MZo9oEt60dpMKfp6oiZWuVxXbU="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi_2.1.0_1559895504870_0.23544354866739758"},"_hasShrinkwrap":false},"2.1.1":{"name":"fileapi","exportName":"FileAPI","version":"2.1.1","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","flex-sdk":"^4.6.0-0","grunt":"^0.4.5","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","image-size":"~0.3.5","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose","build":"grunt build"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","dependencies":{"grunt-cli":"^1.3.2"},"gitHead":"e89888fa7602478a3fd7e6d22391bc5f332758a2","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.1.1","_nodeVersion":"11.1.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-I5vNZ1ZiCCujks8vJb3TJJuO8F2PrUysYpjR4Zv/zs4LUf5kG89CzV8So9JBdihNA/9K11twYT5IEtZvlPNONA==","shasum":"ea07832640d6274e2adfda896c2b5487ec075935","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.1.1.tgz","fileCount":21,"unpackedSize":846677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+jY7CRA9TVsSAnZWagAA/CEQAJ+qtLDe2pPUWP0pvVf3\nxeQR+Dqyrwqi5vsah3n5EYcUAMvbRIna0XQMmnUFDjnes03MMiM737iT3enA\nbRPJGdedYg05BZguO3zE7cxLPJj22i8r4yJNrA++qGZsMi0QcZqvBEyCp/4M\nbzvtcSqBe83SdkoqixKW+Tt5r1U8619qlrikeFdJYsmZhSR6hYoUYn0/9IUG\n0I18s+LKQgEaqhWp4gLBjhJl8wnTsdU4ze7eWx6K2bjX1xRe3ft1yS7lLqeG\nR0YQnm90CeTGLHQf6lRoYmCSZhR+9bukwd3v5RwKV7SSHA8j1jKjSh/0OY1L\nOatCccEDDc9F/bIRv+VyZ+7en1RfTbI4VDgFGr8h57UeGmafnmJ3rYzj3nq4\ngqoJOiaTv1IpODnbPRjdWVDhrZpaz1rzo7J5HQgOu6gOaYEEthDiRtEc1H2q\noZ59LpTRdiqC0AMAZcWO0Rp9h/ob3z0h9As8dEniVD0X18zoqd6txX+Sbe0p\npZBG1d5U5G0Fg7SYJVa/Ua7CWrvoGEZ6UWSHgtbN/LTxac+Wz7AZFbTisLWr\nsZvgwApAtGHVgno1Gfi8MxO0R3uzy0nDGjg3KtIOJ6mZQm6ygieVgRgO5tqH\ndqrBbWZcg6djAHLyEa0vVqH6UUWCvzZzT5/fpCcn6kyMearf7992U+hoUNOc\nVZF5\r\n=1T8c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHsoUOqLL0Diucp6wYTv+mhGDZsur0jMrxiEWD+EG61cAiEA7QuPoQqYIQh4+pb20s+tB/Y6yPZEQCZLU9XZWLDWeA0="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi_2.1.1_1559901755076_0.264853133357452"},"_hasShrinkwrap":false},"2.2.0":{"name":"fileapi","exportName":"FileAPI","version":"2.2.0","devDependencies":{"connect-busboy":"~0.0.2","eventemitter2":"~0.4.13","express":"~4.12.3","flex-sdk":"^4.6.0-0","grunt":"^0.4.5","grunt-cli":"^1.3.2","grunt-contrib-compress":"~0.9.1","grunt-contrib-concat":"~0.4.0","grunt-contrib-connect":"~0.8.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-uglify":"~0.5.0","grunt-contrib-watch":"~0.6.1","grunt-curl":"~2.0.2","grunt-mxmlc":"~0.5.2","grunt-version":"~0.3.0","image-size":"~0.3.5","phantomjs":"~1.9.7-9","qs":"~2.4.1","semver":"~5.0.0","temporary":"~0.0.8"},"peerDependencies":{},"description":"FileAPI — a set of  javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.","main":"dist/FileAPI.js","jam":{"name":"FileAPI"},"scripts":{"test":"grunt tests --verbose","build":"grunt build"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"keywords":["FileAPI","upload","file","html5","chunked"],"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","dependencies":{},"gitHead":"6f4fb87d32ef12b281ba2bc22bb52b85c21c4ad1","bugs":{"url":"https://github.com/mailru/FileAPI/issues"},"homepage":"https://github.com/mailru/FileAPI#readme","_id":"fileapi@2.2.0","_nodeVersion":"13.11.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Fv1hJ1TjtVT/IpXGC2gcnL7tYDMeXRcHoynainff+cP0pGup2PQzRQTmDKsXZkTMF9/06miz3yeCXwIR9C5kWQ==","shasum":"5f68547e4cfa82838491ff7b581835954116d6e5","tarball":"https://registry.npmjs.org/fileapi/-/fileapi-2.2.0.tgz","fileCount":17,"unpackedSize":556951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTk9oCRA9TVsSAnZWagAARlMP/0BfynsUvCCrc/llAfo6\n8fZk+nsfqPj8Uicvw90OOyKmsGW8UnD+g4N8m6jEI40XgA02Dc2snJQox7ia\nQSlzpZMYQQBXh6Ug/A1ayN4tYYZ7N4M5r2zVxe++pfmAHC6FlBN9pTKVMpML\n8D8pzYdnT55p/c1pdFn8VjG2AzBx/W767CxrcqcPvesVszCimsYUu0RtrBuG\n1P1AbyvaP0iY68gsOZNTC5pOS+Tv+3aPXSnJLwPLi5VYqBCsOZq9nUpyAQe7\n1Yfi4U7P+YijvGp78z6pWM7A/t5+LgWXqoYe2i36cK7EipNOaAcLrENCnWku\nNKepp6SwgdZFua8xDi4gvs5NlARObqxZjyKxiUlXVCToSHnVae94NQjZV4a5\nUXh1Qo3jQjlRRN6GUGSV423eopGIGLUgeFZI1gLV17CMFEDnPNhJlu8KbmKZ\nhyu+zDBcy+aHO6bSqaIONmvViGe0vEvLx+3tUT9V8gMXekAoor+Jb/fsTVbG\nLL/ydVrhw+qcGlezXeQ+HJvp2stYpzAbmQrL6Ka1OwH6sPymicPZXYIkltTO\nrhtUFaJbS82OZDFA3/KKLeZziCmTlRB1hK0u7QDdJqhrNSgxSjAygLMGX/m2\n2mOvuiZG3Ie+IF0clavIzb/u9RWfji/Snu8QSnkYc80pKwSTEL+c6HiOiZQJ\nloLW\r\n=lSUL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2xKb652lUu1LQGVTzNXo0fIgndb5pk3M16YCkqVisyAiEA9LxblyaduIPgnToQBJYHTCyBFrBtw4QN+TA8YR/KUb8="}]},"maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"_npmUser":{"name":"rubaxa","email":"ibnRubaXa@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/fileapi_2.2.0_1598967656265_0.3944923074991109"},"_hasShrinkwrap":false}},"readme":"﻿<a name=\"FileAPI\"></a>\n## FileAPI <img src=\"https://api.travis-ci.org/mailru/FileAPI.png?branch=master\"/>\nA set of JavaScript tools for working with files.\n\n<a name=\"started\"></a>\n### Get started\n\nDownload the files from the [dist](https://github.com/mailru/FileAPI/tree/master/dist) directory, and then:\n\n```html\n\t<div>\n\t\t<!-- \"js-fileapi-wrapper\" -- required class -->\n\t\t<div class=\"js-fileapi-wrapper upload-btn\">\n\t\t\t<div class=\"upload-btn__txt\">Choose files</div>\n\t\t\t<input id=\"choose\" name=\"files\" type=\"file\" multiple />\n\t\t</div>\n\t\t<div id=\"images\"><!-- previews --></div>\n\t</div>\n\n\t<script>window.FileAPI = { staticPath: '/js/FileAPI/dist/' };</script>\n\t<script src=\"/js/FileAPI/dist/FileAPI.min.js\"></script>\n\t<script>\n\t\tvar choose = document.getElementById('choose');\n\t\tFileAPI.event.on(choose, 'change', function (evt){\n\t\t\tvar files = FileAPI.getFiles(evt); // Retrieve file list\n\n\t\t\tFileAPI.filterFiles(files, function (file, info/**Object*/){\n\t\t\t\tif( /^image/.test(file.type) ){\n\t\t\t\t\treturn\tinfo.width >= 320 && info.height >= 240;\n\t\t\t\t}\n\t\t\t\treturn\tfalse;\n\t\t\t}, function (files/**Array*/, rejected/**Array*/){\n\t\t\t\tif( files.length ){\n\t\t\t\t\t// Make preview 100x100\n\t\t\t\t\tFileAPI.each(files, function (file){\n\t\t\t\t\t\tFileAPI.Image(file).preview(100).get(function (err, img){\n\t\t\t\t\t\t\timages.appendChild(img);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\n\t\t\t\t\t// Uploading Files\n\t\t\t\t\tFileAPI.upload({\n\t\t\t\t\t\turl: './ctrl.php',\n\t\t\t\t\t\tfiles: { images: files },\n\t\t\t\t\t\tprogress: function (evt){ /* ... */ },\n\t\t\t\t\t\tcomplete: function (err, xhr){ /* ... */ }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t</script>\n```\n\n---\n\n<a name=\"FileAPI.setup\"></a>\n### Setup options\nEdit the file `crossdomain.xml` and place it to the root of the domain to which files will be uploaded.\n\n```html\n\t<script>\n\t\twindow.FileAPI = {\n\t\t\t  debug: false   // debug mode, see Console\n\t\t\t, cors: false    // if used CORS, set `true`\n\t\t\t, media: false   // if used WebCam, set `true`\n\t\t\t, staticPath: '/js/FileAPI/dist/' // path to '*.swf'\n\t\t\t, postNameConcat: function (name, idx){\n\t\t\t\t// Default: object[foo]=1&object[bar][baz]=2\n\t\t\t\t// .NET: https://github.com/mailru/FileAPI/issues/121#issuecomment-24590395\n\t\t\t\treturn\tname + (idx != null ? '['+ idx +']' : '');\n\t\t\t}\n\t\t};\n\t</script>\n\t<script src=\"/js/FileAPI/dist/FileAPI.min.js\"></script>\n\n\t<!-- OR -->\n\n\t<script>\n\t\twindow.FileAPI = { /* options */ };\n\t\trequire(['FileAPI'], function (FileAPI){\n\t\t\t// ...\n\t\t});\n\t</script>\n```\n\n---\n\n\n<a name=\"FileAPI.getFiles\"></a>\n### getFiles(input`:HTMLInputElement|Event|$.Event`)`:Array`\nRetrieve file list from `input` element or `event` object, also support `jQuery`.\n\n* input — `HTMLInputElement`, `change` and `drop` event, `jQuery` collection or `jQuery.Event`\n\n```js\nvar el = document.getElement('my-input');\nFileAPI.event.on(el, 'change', function (evt/**Event*/){\n\t// Retrieve file list\n\tvar files = FileAPI.getFiles(el);\n\n\t// or event\n\tvar files = FileAPI.getFiles(evt);\n});\n```\n\n---\n\n\n<a name=\"FileAPI.getInfo\"></a>\n### getInfo(file`:Object`, callback`:Function`)`:void`\nGet info of file (see also: FileAPI.addInfoReader).\n\n* file — file object (https://developer.mozilla.org/en-US/docs/DOM/File)\n* callback — function, called after collected info of file\n\n```js\n// Get info of image file (FileAPI.exif.js included)\nFileAPI.getInfo(file, function (err/**String*/, info/**Object*/){\n\tif( !err ){\n\t\tconsole.log(info); // { width: 800, height: 600, exif: {..} }\n\t}\n});\n\n// Get info of mp3 file (FileAPI.id3.js included)\nFileAPI.getInfo(file, function (err/**String*/, info/**Object*/){\n\tif( !err ){\n\t\tconsole.log(info); // { title: \"...\", album: \"...\", artists: \"...\", ... }\n\t}\n});\n```\n\n---\n\n<a name=\"FileAPI.filterFiles\"></a>\n### filterFiles(files`:Array`, filter`:Function`, callback`:Function`)`:void`\nFiltering the list of files, with additional information about files.\nSee also: FileAPI.getInfo and FileAPI.addInfoReader.\n\n* files — original list of files\n* filter — function, takes two arguments: `file` — the file itself, `info` — additional information.\n* callback — function: `list` — files that match the condition, `other` — all the rest.\n\n```js\n// Get list of file\nvar files = FileAPI.getFiles(input);\n\n// Filter the List\nFileAPI.filterFiles(files, function (file/**Object*/, info/**Object*/){\n\tif( /^image/.test(file.type) && info ){\n\t\treturn\tinfo.width > 320 && info.height > 240;\n\t} else {\n\t\treturn\tfile.size < 20 * FileAPI.MB;\n\t}\n}, function (list/**Array*/, other/**Array*/){\n\tif( list.length ){\n\t\t// ..\n\t}\n});\n```\n\n---\n\n<a name=\"FileAPI.getDropFiles\"></a>\n### getDropFiles(evt`:Event|$.Event`, callback`:Function`)`:void`\nGet a list of files, including directories.\n\n* evt — `drop` event\n* callback — function, takes one argument, a list of files\n\n```js\nFileAPI.event.on(document, 'drop', function (evt/**Event*/){\n\tevt.preventDefault();\n\n\t// Get a list of files\n\tFileAPI.getDropFiles(evt, function (files/**Array*/){\n\t\t// ...\n\t});\n});\n```\n\n---\n\n<a name=\"FileAPI.upload\"></a>\n### upload(opts`:Object`)`:XmlHttpRequest`\nUploading files to the server (successively). Returns XHR-like object.\nIt is important to remember to correctly worked flash-transport server response body must not be empty,\nfor example, you can pass, just text \"ok\".\n\n* opts — options object, see [Upload options](#options)\n\n```js\nvar el = document.getElementById('my-input');\nFileAPI.event.on(el, 'change', function (evt/**Event*/){\n\tvar files = FileAPI.getFiles(evt);\n\tvar xhr = FileAPI.upload({\n\t\turl: 'http://rubaxa.org/FileAPI/server/ctrl.php',\n\t\tfiles: { file: files[0] },\n\t\tcomplete: function (err, xhr){\n\t\t\tif( !err ){\n\t\t\t\tvar result = xhr.responseText;\n\t\t\t\t// ...\n\t\t\t}\n\t\t}\n\t});\n});\n```\n\n---\n\n<a name=\"FileAPI.addInfoReader\"></a>\n### addInfoReader(mime`:RegExp`, handler`:Function`)`:void`\nAdds a handler for the collection of information about a file.\nSee also: FileAPI.getInfo and FileAPI.filterFiles.\n\n* mime — pattern of mime-type\n* handler — takes two arguments: `file` object and `complete` function callback\n\n```js\nFileAPI.addInfoReader(/^image/, function (file/**File*/, callback/**Function*/){\n\t// http://www.nihilogic.dk/labs/exif/exif.js\n\t// http://www.nihilogic.dk/labs/binaryajax/binaryajax.js\n\tFileAPI.readAsBinaryString(file, function (evt/**Object*/){\n\t\tif( evt.type == 'load' ){\n\t\t\tvar binaryString = evt.result;\n\t\t\tvar oFile = new BinaryFile(binaryString, 0, file.size);\n\t\t\tvar exif  = EXIF.readFromBinaryFile(oFile);\n\t\t\tcallback(false, { 'exif': exif || {} });\n\t\t}\n\t\telse if( evt.type == 'error' ){\n\t\t\tcallback('read_as_binary_string');\n\t\t}\n\t\telse if( evt.type == 'progress' ){\n\t\t\t// ...\n\t\t}\n\t});\n});\n```\n\n---\n\n<a name=\"FileAPI.readAsDataURL\"></a>\n### readAsDataURL(file`:Object`, callback`:Function`)`:void`\nReading the contents of the specified `File` as `dataURL`.\n\n* file — file object\n* callback — function, receives a result\n\n```js\nFileAPI.readAsDataURL(file, function (evt/**Object*/){\n\tif( evt.type == 'load' ){\n\t\t// Success\n\t \tvar dataURL = evt.result;\n\t} else if( evt.type =='progress' ){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t} else {\n\t\t// Error\n\t}\n})\n```\n\n---\n\n<a name=\"FileAPI.readAsBinaryString\"></a>\n### readAsBinaryString(file`:Object`, callback`:Function`)`:void`\nReading the contents of the specified `File` as `BinaryString`.\n\n* file — file object\n* callback — function, receives a result\n\n```js\nFileAPI.readAsBinaryString(file, function (evt/**Object*/){\n\tif( evt.type == 'load' ){\n\t\t// Success\n\t \tvar binaryString = evt.result;\n\t} else if( evt.type =='progress' ){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t} else {\n\t\t// Error\n\t}\n})\n```\n\n---\n\n<a name=\"FileAPI.readAsArrayBuffer\"></a>\n### readAsArrayBuffer(file`:Object`, callback`:Function`)`:void`\nReading the contents of the specified `File` as `ArrayBuffer`.\n\n* file — file object\n* callback — function, receives a result\n\n```js\nFileAPI.readAsArrayBuffer(file, function (evt/**Object*/){\n\tif( evt.type == 'load' ){\n\t\t// Success\n\t \tvar arrayBuffer = evt.result;\n\t} else if( evt.type =='progress' ){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t} else {\n\t\t// Error\n\t}\n})\n```\n\n---\n\n<a name=\"FileAPI.readAsText\"></a>\n### readAsText(file`:Object`, callback`:Function`)`:void`\nReading the contents of the specified `File` as `text`.\n\n* file — file object\n* callback — function, receives a result\n\n```js\nFileAPI.readAsText(file, function (evt/**Object*/){\n\tif( evt.type == 'load' ){\n\t\t// Success\n\t \tvar text = evt.result;\n\t} else if( evt.type =='progress' ){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t} else {\n\t\t// Error\n\t}\n})\n```\n\n---\n\n<a name=\"FileAPI.readAsText-encoding\"></a>\n### readAsText(file`:Object`, encoding`:String`, callback`:Function`)`:void`\nReading the contents of the specified `File` as `text`.\n\n* encoding — a string indicating the encoding to use for the returned data. By default, UTF-8.\n\n```js\nFileAPI.readAsText(file, \"utf-8\", function (evt/**Object*/){\n\tif( evt.type == 'load' ){\n\t\t// Success\n\t \tvar text = evt.result;\n\t} else if( evt.type =='progress' ){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t} else {\n\t\t// Error\n\t}\n})\n```\n\n---\n\n\n<a name=\"options\" data-name=\"Upload options\"></a>\n## Upload options\n\n<a name=\"options.url\"></a>\n### url`:String`\nA string containing the URL to which the request is sent.\n\n---\n\n<a name=\"options.data\"></a>\n### data`:Object`\nAdditional post data to be sent along with the file uploads.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tdata: { 'session-id': 123 },\n\tfiles: { ... },\n});\n```\n\n---\n\n<a name=\"options.uploadMethod\"></a>\n### uploadMethod`:String`\nRequest method, HTML5 only.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tuploadMethod: 'PUT',\n\tfiles: { .. },\n});\n```\n\n---\n\n<a name=\"options.uploadCredentials\"></a>\n### uploadCredentials`:Boolean`\nPass credentials to upload request, HTML5 only.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tuploadCredentials: false,\n\tfiles: { .. },\n});\n```\n\n---\n\n<a name=\"options.headers\"></a>\n### headers`:Object`\nAdditional request headers, HTML5 only.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\theaders: { 'x-upload': 'fileapi' },\n\tfiles: { .. },\n});\n```\n\n---\n\n<a name=\"options.cache\"></a>\n### cache`:Boolean`\nSetting to true removes the default timestamp URL parameter.\n\n---\n\n<a name=\"options.files\"></a>\n### files`:Object`\nKey-value object, `key` — post name, `value` — File or FileAPI.Image object.\n\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: {\n\t\taudio: files\n\t}\n});\n```\n\n---\n\n<a name=\"options.chunkSize\"></a>\n### chunkSize`:Number`\nChunk size in bytes, HTML5 only.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { images: fileList },\n\tchunkSize: 0.5 * FileAPI.MB\n});\n```\n\n---\n\n<a name=\"options.chunkUploadRetry\"></a>\n### chunkUploadRetry`:Number`\nNumber of retries during upload chunks, HTML5 only.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { images: fileList },\n\tchunkSize: 0.5 * FileAPI.MB,\n\tchunkUploadRetry: 3\n});\n```\n\n--\n\n<a name=\"options.imageTransform\"></a>\n### imageTransform`:Object`\nRules of changes the original image on the client.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { image: imageFiles },\n\t// Changes the original image\n\timageTransform: {\n\t\t// resize by max side\n\t\tmaxWidth: 800,\n\t\tmaxHeight: 600,\n\t\t// Add watermark\n\t\toverlay: [{ x: 10, y: 10, src: '/i/watemark.png', rel: FileAPI.Image.RIGHT_BOTTOM }]\n\t}\n});\n```\n\n--\n\n<a name=\"options.imageTransform-multi\"></a>\n### imageTransform`:Object`\nRules of image transformation on the client, for more images.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { image: imageFiles },\n\timageTransform: {\n\t\t// resize by max side\n\t\t'huge': { maxWidth: 800, maxHeight: 600 },\n\t\t// crop & resize\n\t\t'medium': { width: 320, height: 240, preview: true },\n\t\t// crop & resize + watemark\n\t\t'small': {\n\t\t\twidth: 100, height: 100,\n\t\t\t// Add watermark\n\t\t\toverlay: [{ x: 5, y: 5, src: '/i/watemark.png', rel: FileAPI.Image.RIGHT_BOTTOM }]\n\t\t}\n\t}\n});\n```\n\n--\n\n<a name=\"options.imageTransform-jpeg\"></a>\n### imageTransform`:Object`\nConvert all images to jpeg or png.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { image: imageFiles },\n\timageTransform: {\n\t\ttype: 'image/jpeg',\n\t\tquality: 0.86 // jpeg quality\n\t}\n});\n```\n\n\n<a name=\"options.imageOriginal\"></a>\n### imageOriginal`:Boolean`\nSent to the server the original image or not, if defined imageTransform option.\n\n--\n\n<a name=\"options.imageAutoOrientation\"></a>\n### imageAutoOrientation`:Boolean`\nAuto-rotate images on the basis of EXIF.\n\n--\n\n<a name=\"options.prepare\"></a>\n### prepare`:Function`\nPrepare options upload for a particular file.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tprepare: function (file/**Object*/, options/**Object*/){\n\t\toptions.data.secret = utils.getSecretKey(file.name);\n\t}\n});\n```\n\n--\n\n<a name=\"options.upload\"></a>\n### upload`:Function`\nStart uploading.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tupload: function (xhr/**Object*/, options/**Object*/){\n\t\t// ...\n\t}\n});\n```\n\n--\n\n<a name=\"options.fileupload\"></a>\n### fileupload`:Function`\nStart file uploading.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tfileupload: function (file/**Object*/, xhr/**Object*/, options/**Object*/){\n\t\t// ...\n\t}\n});\n```\n\n--\n\n<a name=\"options.progress\"></a>\n### progress`:Function`\nCallback for upload progress events.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tprogress: function (evt/**Object*/, file/**Object*/, xhr/**Object*/, options/**Object*/){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t}\n});\n```\n\n--\n\n<a name=\"options.fileprogress\"></a>\n### fileprogress`:Function`\nCallback for upload file progress events.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tfileprogress: function (evt/**Object*/, file/**Object*/, xhr/**Object*/, options/**Object*/){\n\t\tvar pr = evt.loaded/evt.total * 100;\n\t}\n});\n```\n\n--\n\n<a name=\"options.complete\"></a>\n### complete`:Function`\nCallback for end upload requests.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tcomplete: function (err/**String*/, xhr/**Object*/, file/**Object/, options/**Object*/){\n\t\tif( !err ){\n\t\t\t// All files successfully uploaded.\n\t\t}\n\t}\n});\n```\n\n--\n\n<a name=\"options.filecomplete\"></a>\n### filecomplete`:Function`\nCallback for end upload requests.\n\n```js\nvar xhr = FileAPI.upload({\n\turl: '...',\n\tfiles: { .. }\n\tfilecomplete: function (err/**String*/, xhr/**Object*/, file/**Object/, options/**Object*/){\n\t\tif( !err ){\n\t\t\t// File successfully uploaded\n\t\t\tvar result = xhr.responseText;\n\t\t}\n\t}\n});\n```\n\n---\n\n<a name=\"File\"></a>\n## File object\n\n<a name=\"File.name\"></a>\n### name\nThe name of the file referenced by the File object.\n\n<a name=\"File.type\"></a>\n### type\nThe type (MIME type) of the file referenced by the File object.\n\n<a name=\"File.size\"></a>\n### size\nThe size (in bytes) of the file referenced by the File object.\n\n\n---\n\n\n<a name=\"FileAPI.event\"></a>\n## FileAPI.event\n\n<a name=\"FileAPI.event.on\"></a>\n### on(el`:HTMLElement`, events`:String`, handler`:Function`)`:void`\nAttach an event handler function.\n\n* el — DOM element\n* events — one or more space-separated event types.\n* handler — A function to execute when the event is triggered.\n\n---\n\n<a name=\"FileAPI.event.off\"></a>\n### off(el`:HTMLElement`, events`:String`, handler`:Function`)`:void`\nRemove an event handler.\n\n* el — DOM element\n* events — one or more space-separated event types.\n* handler — a handler function previously attached for the event(s).\n\n---\n\n<a name=\"FileAPI.event.one\"></a>\n### one(el`:HTMLElement`, events`:String`, handler`:Function`)`:void`\nAttach an event handler function. The handler is executed at most once.\n\n* el — DOM element\n* events — one or more space-separated event types.\n* handler — a function to execute when the event is triggered.\n\n---\n\n<a name=\"FileAPI.event.dnd\"></a>\n### dnd(el`:HTMLElement`, hover`:Function`, handler`:Function`)`:void`\nAttach an drag and drop event handler function.\n\n* el — drop zone\n* hover — `dragenter` and `dragleave` listener\n* handler — `drop` event handler.\n\n```js\nvar el = document.getElementById('dropzone');\nFileAPI.event.dnd(el, function (over){\n\tel.style.backgroundColor = over ? '#f60': '';\n}, function (files){\n\tif( files.length ){\n\t\t// Upload their.\n\t}\n});\n\n// or jQuery\n$('#dropzone').dnd(hoverFn, dropFn);\n```\n\n---\n\n<a name=\"FileAPI.event.dnd.off\"></a>\n### dnd.off(el`:HTMLElement`, hover`:Function`, handler`:Function`)`:void`\nRemove an drag and drop event handler function.\n\n* el — drop zone\n* hover — `dragenter` and `dragleave` listener\n* handler — `drop` event handler.\n\n```js\n// Native\nFileAPI.event.dnd.off(el, hoverFn, dropFn);\n\n// jQuery\n$('#dropzone').dndoff(hoverFn, dropFn);\n```\n\n--\n\n<a name=\"FileAPI.Image\"></a>\n## FileAPI.Image\nClass for working with images\n\n### constructor(file`:Object`)`:void`\nThe constructor takes a single argument, the `File` object.\n\n* file — the `File` object\n\n```js\nFileAPI.Image(imageFile).get(function (err/**String*/, img/**HTMLElement*/){\n\tif( !err ){\n\t\tdocument.body.appendChild( img );\n\t}\n});\n```\n\n---\n\n<a name=\"FileAPI.Image.crop\"></a>\n### crop(width`:Number`, height`:Number`)`:FileAPI.Image`\nCrop image by width and height.\n\n* width — new image width\n* height — new image height\n\n```js\nFileAPI.Image(imageFile)\n\t.crop(640, 480)\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n### crop(x`:Number`, y`:Number`, width`:Number`, height`:Number`)`:FileAPI.Image`\nCrop image by x, y, width and height.\n\n* x — offset from the top corner\n* y — offset from the left corner\n\n```js\nFileAPI.Image(imageFile)\n\t.crop(100, 50, 320, 240)\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.resize\"></a>\n### resize(width`:Number`, height`:Number`[, strategy`:String`])`:FileAPI.Image`\nResize image.\n\n* width — new image width\n* height — new image height\n* strategy — enum: `min`, `max`, `preview`, `width`, `height`. By default `undefined`.\n\n```js\nFileAPI.Image(imageFile)\n\t.resize(320, 240)\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n\n// Resize image on by max side.\nFileAPI.Image(imageFile)\n\t.resize(320, 240, 'max')\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n\n// Resize image on by fixed height.\nFileAPI.Image(imageFile)\n\t.resize(240, 'height')\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.preview\"></a>\n### preview(width`:Number`[, height`:Number`])`:FileAPI.Image`\nCrop and resize image.\n\n* width — new image width\n* height — new image height\n\n```js\nFileAPI.Image(imageFile)\n\t.preview(100, 100)\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.rotate\"></a>\n### rotate(deg`:Number`)`:FileAPI.Image`\nRotate image.\n\n* deg — rotation angle in degrees\n\n```js\nFileAPI.Image(imageFile)\n\t.rotate(90)\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.filter\"></a>\n### filter(callback`:Function`)`:FileAPI.Image`\nApply filter function. Only `HTML5`.\n\n* callback — takes two arguments, `canvas` element and `done` method.\n\n```js\nFileAPI.Image(imageFile)\n\t.filter(function (canvas/**HTMLCanvasElement*/, doneFn/**Function*/){\n\t\t// bla-bla-lba\n\t\tdoneFn();\n\t})\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n\n---\n\n### filter(name`:String`)`:FileAPI.Image`\nUses [CamanJS](http://camanjs.com/), include it before FileAPI library.\n\n* name — CamanJS filter name (custom or preset)\n\n```js\nCaman.Filter.register(\"my-funky-filter\", function () {\n\t// http://camanjs.com/guides/#Extending\n});\n\nFileAPI.Image(imageFile)\n\t.filter(\"my-funky-filter\") // or .filter(\"vintage\")\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.overlay\"></a>\n### overlay(images`:Array`)`:FileAPI.Image`\nAdd overlay images, eg: watermark.\n\n* images — array of overlays\n\n```js\nFileAPI.Image(imageFile)\n\t.overlay([\n\t\t// Left corner.\n\t\t{ x: 10, y: 10, w: 100, h: 10, src: '/i/watermark.png' },\n\n\t\t// Right bottom corner.\n\t\t{ x: 10, y: 10, src: '/i/watermark.png', rel: FileAPI.Image.RIGHT_BOTTOM }\n\t])\n\t.get(function (err/**String*/, img/**HTMLElement*/){\n\n\t})\n;\n```\n\n---\n\n<a name=\"FileAPI.Image.get\"></a>\n### get(fn`:Function`)`:FileAPI.Image`\nGet the final image.\n\n* fn — complete callback\n\n---\n\n<a name=\"FileAPI.Camera\"></a>\n## FileAPI.Camera\nTo work with a webcam, be sure to set `FileAPI.media: true`.\n\n\n<a name=\"FileAPI.Camera.publish\"></a>\n### publish(el`:HTMLElement`, options`:Object`, callback`:Function`)`:void`\nPublication of the camera.\n\n* el — target\n* options — { `width: 100%`, `height: 100%`, `start: true` }\n* callback — the first parameter is a possible error, the second instance of FileAPI.Camera\n\n```js\nvar el = document.getElementById('cam');\nFileAPI.Camera.publish(el, { width: 320, height: 240 }, function (err, cam/**FileAPI.Camera*/){\n\tif( !err ){\n\t\t// The webcam is ready, you can use it.\n\t}\n});\n```\n\n---\n\n<a name=\"FileAPI.Camera.start\"></a>\n### start(callback`:Function`)`:void`\nTurn on the camera.\n\n* callback — will be called when the camera ready\n\n```js\nvar el = document.getElementById('cam');\nFileAPI.Camera.publish(el, { start: false }, function (err, cam/**FileAPI.Camera*/){\n\tif( !err ){\n\t\t// Turn on\n\t\tcam.start(function (err){\n\t\t\tif( !err ){\n\t\t\t\t// The camera is ready for use.\n\t\t\t}\n\t\t});\n\t}\n});\n```\n\n---\n\n<a name=\"FileAPI.Camera.stop\"></a>\n### stop()`:void`\nTurn off the camera.\n\n---\n\n<a name=\"FileAPI.Camera.shot\"></a>\n### shot()`:FileAPI.Image`\nTake a picture with the camera.\n\n```js\nvar el = document.getElementById('cam');\nFileAPI.Camera.publish(el, function (err, cam/**FileAPI.Camera*/){\n\tif( !err ){\n\t\tvar shot = cam.shot(); // take a picture\n\n\t\t// create thumbnail 100x100\n\t\tshot.preview(100).get(function (err, img){\n\t\t\tpreviews.appendChild(img);\n\t\t});\n\n\t\t// and/or\n\t\tFileAPI.upload({\n\t\t\turl: '...',\n\t\t\tfiles: { cam: shot\n\t\t});\n\t}\n});\n```\n\n---\n\n<a name=\"const\" data-name=\"Const\"></a>\n## Constants\n\n<a name=\"FileAPI.KB\"></a>\n### FileAPI.KB`:Number`\n1024 bytes\n\n<a name=\"FileAPI.MB\"></a>\n### FileAPI.MB`:Number`\n1048576 bytes\n\n<a name=\"FileAPI.GB\"></a>\n### FileAPI.GB`:Number`\n1073741824 bytes\n\n<a name=\"FileAPI.TB\"></a>\n### FileAPI.TB`:Number`\n1.0995116e+12 bytes\n\n---\n\n<a name=\"FileAPI.utils\"></a>\n## Utils\n\n<a name=\"FileAPI.each\"></a>\n### FileAPI.each(obj`:Object|Array`, callback`:Function`[, thisObject`:Mixed`])`:void`\nIterate over an object or array, executing a function for each matched element.\n\n* obj — array or object\n* callback — a function to execute for each element.\n* thisObject — object to use as `this` when executing `callback`.\n\n--\n\n<a name=\"FileAPI.extend\"></a>\n### FileAPI.extend(dst`:Object`, src`:Object`)`:Object`\nMerge the contents of two objects together into the first object.\n\n* dst — an object that will receive the new properties\n* src — an object containing additional properties to merge in.\n\n--\n\n<a name=\"FileAPI.filter\"></a>\n### FileAPI.filter(array`:Array`, callback`:Function`[, thisObject`:Mixed`)`:Object`\nCreates a new array with all elements that pass the test implemented by the provided function.\n\n* array — original Array\n* callback — Function to test each element of the array.\n* thisObject — object to use as `this` when executing `callback`.\n\n---\n\n<a name=\"support\"><a/>\n## Support\n<ul>\n\t<li>Multiupload: all browsers that support HTML5 or Flash</li>\n\t<li>Drag'n'Drop upload: files (HTML5) & directories (Chrome 21+)</li>\n\t<li>Chunked file upload (HTML5)</li>\n\t<li>Upload one file: all browsers</li>\n\t<li>\n\t\tWorking with Images: IE6+, FF 3.6+, Chrome 10+, Opera 11.1+, Safari 6+\n\t\t<ul>\n\t\t\t<li>crop, resize, preview & rotate (HTML5 or Flash)</li>\n\t\t\t<li>auto orientation by exif (HTML5, if include FileAPI.exif.js or Flash)</li>\n\t\t</ul>\n\t</li>\n</ul>\n\n<a name=\"FileAPI.support.html5\"></a>\n### FileAPI.support.html5`:Boolean`\nHTML5 browser support\n\n<a name=\"FileAPI.support.cors\"></a>\n### FileAPI.support.cors`:Boolean`\nThis cross-origin resource sharing is used to enable cross-site HTTP requests.\n\n<a name=\"FileAPI.support.dnd\"></a>\n### FileAPI.support.dnd`:Boolean`\nDrag'n'drop events support.\n\n<a name=\"FileAPI.support.flash\"></a>\n### FileAPI.support.flash`:Boolean`\nAvailability Flash plugin.\n\n<a name=\"FileAPI.support.canvas\"></a>\n### FileAPI.support.canvas`:Boolean`\nCanvas support.\n\n<a name=\"FileAPI.support.dataURI\"></a>\n### FileAPI.support.dataURI`:Boolean`\nSupport dataURI as src for image.\n\n<a name=\"FileAPI.support.chunked\"></a>\n### FileAPI.support.chunked`:Boolean`\nSupport chunked upload.\n\n---\n\n<a name=\"flash\"></a>\n## Flash\nFlash is very \"buggy\" thing :]\nThe server response can not be empty.\nTherefore, in the event of a successful uploading `http status` should be only `200 OK`.\n\n<a name=\"flash.settings\"></a>\n### Settings\nFlash settings.\nIt is advisable to place flash on the same server where the files will be uploaded.\n\n```html\n<script>\n\tvar FileAPI = {\n\t \t// @default: \"./dist/\"\n\t\tstaticPath: '/js/',\n\n\t\t // @default: FileAPI.staticPath + \"FileAPI.flash.swf\"\n\t\tflashUrl: '/statics/FileAPI.flash.swf',\n\n\t\t// @default: FileAPI.staticPath + \"FileAPI.flash.image.swf\"\n\t\tflashImageUrl: '/statics/FileAPI.flash.image.swf'\n\t};\n</script>\n<script src=\"/js/FileAPI.min.js\"></script>\n```\n\n---\n\n<a name=\"crossdomain.xml\"></a>\n### crossdomain.xml\nNecessarily make this file on the server.\nDo not forget to replace `youdomain.com` on the name of your domain.\n\n```xml\n<?xml version=\"1.0\"?>\n<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">\n<cross-domain-policy>\n\t<site-control permitted-cross-domain-policies=\"all\"/>\n\t<allow-access-from domain=\"youdomain.com\" secure=\"false\"/>\n\t<allow-access-from domain=\"*.youdomain.com\" secure=\"false\"/>\n\t<allow-http-request-headers-from domain=\"*\" headers=\"*\" secure=\"false\"/>\n</cross-domain-policy>\n```\n\n---\n\n<a name=\"flash.request\"></a>\n### request\nThe following sample HTTP POST request is sent from Flash Player to a server-side script if no parameters are specified:\n\n```xml\nPOST /server/ctrl.php HTTP/1.1\nAccept: text/*\nContent-Type: multipart/form-data;\nboundary=----------Ij5ae0ae0KM7GI3KM7\nUser-Agent: Shockwave Flash\nHost: www.youdomain.com\nContent-Length: 421\nConnection: Keep-Alive\nCache-Control: no-cache\n\n------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7\nContent-Disposition: form-data; name=\"Filename\"\n\nMyFile.jpg\n------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7\nContent-Disposition: form-data; name=\"Filedata\"; filename=\"MyFile.jpg\"\nContent-Type: application/octet-stream\n\n[[..FILE_DATA_HERE..]]\n------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7\nContent-Disposition: form-data; name=\"Upload\"\n\nSubmit Query\n------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--\n```\n\n---\n\n<a name=\"flash.security\"></a>\n### Security\nBy default `FileAPI.flash.swf` allows access from any domain via `Security.allowDomain(\"*\")`.\nThis can lead to same origin bypass vulnerability if swf is loaded from the same domain as your critical data.\nTo prevent this, allow only your domains [here](https://github.com/mailru/FileAPI/blob/master/flash/core/src/ru/mail/communication/JSCallbackPresenter.as#L25) and rebuild flash.\n\n---\n\n<a name=\"server\"></a>\n## Server settings\n\n<a name=\"server.iframe\"></a>\n### IFrame/JSONP\n\n```php\n<script>\n(function (ctx, jsonp){\n\t'use strict';\n\tvar status = {{httpStatus}}, statusText = \"{{httpStatusText}}\", response = \"{{responseBody}}\";\n\ttry {\n\t\tctx[jsonp](status, statusText, response);\n\t} catch (e){\n\t\tvar data = \"{\\\"id\\\":\\\"\"+jsonp+\"\\\",\\\"status\\\":\"+status+\",\\\"statusText\\\":\\\"\"+statusText+\"\\\",\\\"response\\\":\\\"\"+response.replace(/\\\"/g, '\\\\\\\\\\\"')+\"\\\"}\";\n\t\ttry {\n\t\t\tctx.postMessage(data, document.referrer);\n\t\t} catch (e){}\n\t}\n})(window.parent, '{{request_param_callback}}');\n</script>\n\n<!-- or -->\n\n<?php\n\tinclude './FileAPI.class.php';\n\n\tif( strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' ){\n\t\t// Retrieve File List\n\t\t$files\t= FileAPI::getFiles();\n\n\t\t// ... your logic\n\n\t\t// JSONP callback name\n\t\t$jsonp\t= isset($_REQUEST['callback']) ? trim($_REQUEST['callback']) : null;\n\n\t\t// Server response: \"HTTP/1.1 200 OK\"\n\t\tFileAPI::makeResponse(array(\n\t\t\t  'status' => FileAPI::OK\n\t\t\t, 'statusText' => 'OK'\n\t\t\t, 'body' => array('count' => sizeof($files))\n\t\t), $jsonp);\n\t\texit;\n\t}\n?>\n```\n\n---\n\n<a name=\"server.CORS\"></a>\n### CORS\nEnable CORS.\n\n```php\n<?php\n\t// Permitted types of request\n    header('Access-Control-Allow-Methods: POST, OPTIONS');\n\n    // Describe custom headers\n    header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Range, Content-Disposition, Content-Type');\n\n    // A comma-separated list of domains\n    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);\n\n\t// Allow cookie\n\theader('Access-Control-Allow-Credentials: true');\n\n    if( $_SERVER['REQUEST_METHOD'] == 'OPTIONS' ){\n        exit;\n    }\n\n    if( $_SERVER['REQUEST_METHOD'] == 'POST' ){\n        // ...\n    }\n?>\n```\n\n---\n\n<a name=\"server.chunked\"></a>\n### Chunked file upload\nClient and server communicate to each other using the following HTTP headers and status codes.<br/>\nClient explicitly sets the following headers:<br/>\n<ul>\n\t<li>Content-Range: bytes &lt;start-offset&gt;-&lt;end-offset&gt;/&lt;total&gt;</li>\n\t<li>Content-Disposition: attachment; filename=&lt;file-name&gt;</li>\n</ul>\nAny other headers are set by a target browser and are not used by client. Library does not provide any facilities to track a file uniqueness across requests, it's left on developer's consideration.<br/>\nResponse codes:\n<ul>\n\t<li>200 - last chunk is uploaded</li>\n\t<li>201 - chunk is successfully saved</li>\n\t<li>416 - range is not acceptable error, recoverable</li>\n\t<li>500 - server error, recoverable</li>\n</ul>\nFor recoverable errors server tries to resend chunk `chunkUploadRetry` times then fails.<br/\nResponse headers:\n<ul>\n\t<li>X-Last-Known-Byte: int, library tries to resend chunk from the given offset. Applicable to response codes 200 and 416</li>\n</ul>\nAll the other codes - fatal error, user's involvement is recommended.\n\n---\n\n\n<a name=\"buttons.examples\"></a>\n## Buttons examples\n\n<a name=\"buttons.examples.base\"></a>\n### Base\nSimple input[type=\"file\"]\n\n```html\n<span class=\"js-fileapi-wrapper\" style=\"position: relative; display: inline-block;\">\n    <input name=\"files\" type=\"file\" multiple/>\n</span>\n```\n\n---\n\n<a name=\"buttons.examples.button\"></a>\n### Button\nStylized button.\n\n```html\n<style>\n.upload-btn {\n    width: 130px;\n    height: 25px;\n    overflow: hidden;\n    position: relative;\n    border: 3px solid #06c;\n    border-radius: 5px;\n    background: #0cf;\n\n}\n    .upload-btn:hover {\n        background: #09f;\n    }\n    .upload-btn__txt {\n        z-index: 1;\n        position: relative;\n        color: #fff;\n        font-size: 18px;\n        font-family: \"Helvetica Neue\";\n        line-height: 24px;\n        text-align: center;\n        text-shadow: 0 1px 1px #000;\n    }\n    .upload-btn input {\n        top: -10px;\n        right: -40px;\n        z-index: 2;\n        position: absolute;\n        cursor: pointer;\n        opacity: 0;\n        filter: alpha(opacity=0);\n        font-size: 50px;\n    }\n</style>\n<div class=\"js-fileapi-wrapper upload-btn\">\n    <div class=\"upload-btn__txt\">Upload files</div>\n    <input name=\"files\" type=\"file\" multiple />\n</div>\n```\n\n\n---\n\n\n<a name=\"buttons.examples.link\"></a>\n### Link\nButton like link.\n\n```html\n<style>\n.upload-link {\n    color: #36c;\n    display: inline-block;\n    *zoom: 1;\n    *display: inline;\n    overflow: hidden;\n    position: relative;\n    padding-bottom: 2px;\n    text-decoration: none;\n}\n    .upload-link__txt {\n        z-index: 1;\n        position: relative;\n        border-bottom: 1px dotted #36c;\n    }\n        .upload-link:hover .upload-link__txt {\n            color: #f00;\n            border-bottom-color: #f00;\n        }\n\n    .upload-link input {\n        top: -10px;\n        right: -40px;\n        z-index: 2;\n        position: absolute;\n        cursor: pointer;\n        opacity: 0;\n        filter: alpha(opacity=0);\n        font-size: 50px;\n    }\n</style>\n<a class=\"js-fileapi-wrapper upload-link\">\n    <span class=\"upload-link__txt\">Upload photo</span>\n    <input name=\"photo\" type=\"file\" accept=\"image/*\" />\n</a>\n```\n\n---\n\n<a name=\"install\" data-name=\"Installation\"></a>\n## Installation, testing, assembling\n`npm install fileapi`<br/>\n`cd fileapi`<br/>\n`npm install`<br/>\n`grunt`\n\n\n---\n\n\n<a name=\"Changelog\"></a>\n## Changelog\n\n### 2.0.20\n<ul>\n\t<li>#369: * IEMobile</li>\n</ul>\n\n\n### 2.0.19\n<ul>\n\t<li>#367: * [flash] allow gif and bmp to resize</li>\n</ul>\n\n\n### 2.0.18\n<ul>\n\t<li>#364: * Camera#stop</li>\n\t<li>#363: * support `Blob` in `FileAPI.getInfo`</li>\n\t<li>#361: + upload zero-files</li>\n</ul>\n\n\n### 2.0.16-2.0.17\n<ul>\n\t<li>#353: debug mode vs. IE</li>\n\t<li>#352: correct filename via flash-uploading</li>\n</ul>\n\n\n### 2.0.12-2.0.15 (!)\n<ul>\n\t<li>#346, #342, #344: fixes for XSS into Flash-transport</li>\n</ul>\n\n\n### 2.0.11\n<ul>\n\t<li>#322, #308: dnd & safari + $.fn.dnd (store all dropped items)</li>\n\t<li>#319: NodeJS tesing</li>\n\t<li>#317, #313: fixed \"malformed entry.name (OSX Unicode NFD)\"</li>\n\t<li>#311: fixed \"Arithmetic result exceeded 32 bits\"</li>\n</ul>\n\n\n### 2.0.10\n<ul>\n\t<li>#289: * WebCam & html5 == false</li>\n\t<li>#199, #265: flash fix 2015 error with BitmapData</li>\n\t<li>#177: IE9, IE11 flash.camera remembered settigns</li>\n\t<li>#254: check 'onLoadFnName' before call</li>\n\t<li>#272: fixed `entry.createReader().readEntries`</li>\n</ul>\n\n\n### 2.0.9\n<ul>\n\t<li>#253: fixed `proxyXHR.loaded`</li>\n\t<li>#250: + check `disabled`-attr</li>\n</ul>\n\n\n### 2.0.8\n<ul>\n\t<li>Two new resize strategies `width` and `height`</li>\n</ul>\n\n\n### 2.0.7\n<ul>\n\t<li>#214: iframe transport under IE8</li>\n\t<li>Fixed iframe-transport (remove `disabled`-attr for input)</li>\n</ul>\n\n\n### 2.0.6\n<ul>\n\t<li>#240: Fixed `FileAPI.event.dnd.off`</li>\n</ul>\n\n\n### 2.0.5\n<ul>\n\t<li>+ #228: check callbacks with regexp</li>\n\t<li>* Updated devDepending</li>\n\t<li>+ #207: support EXIF.Orientation == 4, 5 & 7 </li>\n</ul>\n\n\n### 2.0.4\n<ul>\n\t<li>+ #176: Add params to the beginning of form</li>\n\t<li>+ #190: Add 204 as a successful response</li>\n\t<li>+ #192: many bugfixes; + `retry` & `multipass` options; + QUnit-tests for BigSizeImage</li>\n</ul>\n\n### 2.0.3\n<ul>\n\t<li>+ QUnit-tests for iframe-transport</li>\n\t<li>+ `postMessage` for iframe-transport</li>\n\t<li>+ `jsonp: \"callback\"` option</li>\n\t<li>* resize: `imageTransform.type` rename to `imageTransform.strategy` (!!!)</li>\n\t<li>+ https://github.com/mailru/FileAPI/pull/165 (#140: fix)</li>\n</ul>\n\n### 2.0.2\n<ul>\n\t<li>+ test: upload headers</li>\n\t<li>+ test: upload + camanjs</li>\n\t<li>+ test: upload + autoOrientation</li>\n\t<li>FileAPI.class.php: + HTTP header Content-Type: application/json</li>\n\t<li>#143: + `FileAPI.flashWebcamUrl` option</li>\n\t<li>* merge v1.2.7</li>\n\t<li>+ `FileAPI.formData: true` option</li>\n</ul>\n\n### 2.0.1\n<ul>\n\t<li>+ support 'filter' prop in imageTransform</li>\n</ul>\n\n### 2.0.0\n<ul>\n\t<li>+ FileAPI.Camera (HTML5 and Flash fallback)</li>\n\t<li>+ jquery.fileapi.js, see <a href=\"http://rubaxa.github.io/jquery.fileapi/\">demo</a></li>\n\t<li>+ npm support</li>\n\t<li>+ grunt support</li>\n\t<li>+ requirejs support</li>\n\t<li>+ [#80](https://https://github.com/mailru/FileAPI/issues/80): FileAPI.Image.fn.overlay</li>\n \t<li>`imageTransform` — now supports: `crop`, `type`, `quality` and `overlay` properties.</li>\n\t<li>Improved the documentation</li>\n\t<li>+iOS fix (https://github.com/blueimp/JavaScript-Load-Image)</li>\n\t<li>[#121](https://github.com/mailru/FileAPI/issues/121): + FileAPI.`postNameConcat:Function(name, idx)`</li>\n\t<li>[#116](https://github.com/mailru/FileAPI/issues/116): + `cache:false` option for FileAPI.upload</li>\n</ul>\n\n\n### 1.2.6\n<ul>\n\t<li>[#91](https://github.com/mailru/FileAPI/issues/91): replace `new Image` to `FileAPI.newImage`</li>\n\t<li>+ FileAPI.withCredentials: true</li>\n\t<li>[#90](https://github.com/mailru/FileAPI/issues/90): Fixed `progress` event</li>\n\t<li>[#105](https://github.com/mailru/FileAPI/issues/105): Fixed `image/jpg` -> `image/jpeg`</li>\n\t<li>[#108](https://github.com/mailru/FileAPI/issues/108): Check width/height before resize by type(min/max)</li>\n</ul>\n\n\n### 1.2.5\n<ul>\n\t<li>[#86](https://github.com/mailru/FileAPI/issues/86): Smarter upload recovery</li>\n\t<li>[#87](https://github.com/mailru/FileAPI/issues/87): Fixed upload files into browsers that do not support FormData</li>\n\t<li>Fixed support \"accept\" attribute for Flash.</li>\n\t<li>Fixed detection of HTML5 support for FireFox 3.6</li>\n\t<li> + FileAPI.html5 option, default \"true\"</li>\n</ul>\n\n\n### 1.2.4\n<ul>\n\t<li>Fixed auto orientation image by EXIF (Flash)</li>\n\t<li>Fixed image dimensions after rotate (Flash)</li>\n\t<li>[#82](https://github.com/mailru/FileAPI/issues/82): \"undefined\" data-fields cause exceptions</li>\n\t<li>[#83](https://github.com/mailru/FileAPI/issues/83): Allow requests without files</li>\n\t<li>[#84](https://github.com/mailru/FileAPI/pull/84): Fixed connection abort when waiting for connection recovery</li>\n</ul>\n\n\n### 1.2.3\n<ul>\n\t<li>[#77](https://github.com/mailru/FileAPI/pull/77): Fixed flash.abort(), [#75](https://github.com/mailru/FileAPI/issues/75)</li>\n\t<li>- `FileAPI.addMime`</li>\n\t<li>+ `FileAPI.accept` — fallback for flash.</li>\n</ul>\n\n\n### 1.2.2\n<ul>\n\t<li>[#67](https://github.com/mailru/FileAPI/pull/67): Added correct httpStatus for upload fail, [#62](https://github.com/mailru/FileAPI/pull/68)</li>\n\t<li>[#68](https://github.com/mailru/FileAPI/pull/68) Added \"Content-Type\" for chunked upload, [#65](https://github.com/mailru/FileAPI/pull/65)</li>\n\t<li>[#69](https://github.com/mailru/FileAPI/issues/69): Fixed network down recovery</li>\n\t<li>Fixed progress event, [#66](https://github.com/mailru/FileAPI/issues/66)</li>\n\t<li>Increase flash stage size, [#73](https://github.com/mailru/FileAPI/pull/73)</li>\n\t<li>- array index from POST-param \"name\", [#72](https://github.com/mailru/FileAPI/issues/72)</li>\n\t<li>- dependency on FileAPI.Image for FileAPI.Flash</li>\n</ul>\n\n\n### 1.2.1\n<ul>\n\t<li>[#64](https://github.com/mailru/FileAPI/issues/64): Bufixed for [#63](https://github.com/mailru/FileAPI/issues/63)</li>\n</ul>\n\n\n### 1.2.0\n<ul>\n\t<li>[#57](https://github.com/mailru/FileAPI/issues/57): Chunked file upload</li>\n</ul>\n\n\n### 1.1.0\n<ul>\n\t<li>[#54](https://github.com/mailru/FileAPI/issues/54): added `FileAPI.flashUrl` and `FileAPI.flashImageUrl`</li>\n</ul>\n\n\n### 1.0.1\n<ul>\n\t<li>[#51](https://github.com/mailru/FileAPI/issues/51): remove circular references from `file-objects` (Flash transport)</li>\n\t<li>added `changelog`</li>\n</ul>\n\n\n### 1.0.0\n<ul>\n\t<li>first release</li>\n</ul>\n","maintainers":[{"name":"rubaxa","email":"ibnRubaXa@gmail.com"}],"time":{"modified":"2022-06-18T00:41:19.123Z","created":"2013-10-14T10:40:52.087Z","2.0.0":"2013-10-14T10:40:55.091Z","2.0.2":"2013-11-10T16:44:03.125Z","2.0.4":"2014-02-21T04:44:03.409Z","2.0.5":"2014-07-24T05:41:28.985Z","2.0.6":"2014-08-10T09:33:33.729Z","2.0.7":"2014-09-10T05:07:45.162Z","2.0.8":"2014-09-17T10:31:21.547Z","2.0.9":"2014-09-30T05:27:14.821Z","2.0.10":"2015-01-19T07:08:36.499Z","2.0.12":"2015-08-28T09:14:43.523Z","2.0.13":"2015-08-31T12:01:01.097Z","2.0.14":"2015-09-11T13:10:35.491Z","2.0.15":"2015-09-11T15:56:56.602Z","2.0.17":"2015-10-20T08:03:02.363Z","2.0.18":"2016-01-12T10:19:24.316Z","2.0.19":"2016-02-12T07:50:12.207Z","2.0.20":"2016-02-16T18:15:18.241Z","2.0.21":"2016-07-22T10:01:43.901Z","2.0.22":"2017-11-28T16:04:04.441Z","2.0.23":"2017-11-29T08:17:36.492Z","2.0.24":"2017-11-29T08:46:11.029Z","2.0.25":"2017-11-29T12:36:09.911Z","2.0.26":"2018-12-21T10:14:23.511Z","2.0.27":"2019-01-23T14:28:58.140Z","2.1.0":"2019-06-07T08:18:25.014Z","2.1.1":"2019-06-07T10:02:35.201Z","2.2.0":"2020-09-01T13:40:56.503Z"},"author":{"name":"Konstantin Lebedev","email":"ibnRubaXa@gmail.com"},"repository":{"type":"git","url":"git://github.com/mailru/FileAPI.git"},"users":{"parroit":true,"batosai":true,"chirag8642":true},"readmeFilename":"README.md","keywords":["FileAPI","upload","file","html5","chunked"],"contributors":[{"name":"Vladimir Demidov","email":"v.demidov@corp.mail.ru"},{"name":"Ilya Lebedev","email":"ilya@lebedev.net"},{"name":"Mikhail Bezoyan","email":"mbezoyan@gmail.com"}],"license":"BSD","homepage":"https://github.com/mailru/FileAPI#readme","bugs":{"url":"https://github.com/mailru/FileAPI/issues"}}