| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- 'use strict';
 
- import AxiosError from '../core/AxiosError.js';
 
- import parseProtocol from './parseProtocol.js';
 
- import platform from '../platform/index.js';
 
- const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;
 
- /**
 
-  * Parse data uri to a Buffer or Blob
 
-  *
 
-  * @param {String} uri
 
-  * @param {?Boolean} asBlob
 
-  * @param {?Object} options
 
-  * @param {?Function} options.Blob
 
-  *
 
-  * @returns {Buffer|Blob}
 
-  */
 
- export default function fromDataURI(uri, asBlob, options) {
 
-   const _Blob = options && options.Blob || platform.classes.Blob;
 
-   const protocol = parseProtocol(uri);
 
-   if (asBlob === undefined && _Blob) {
 
-     asBlob = true;
 
-   }
 
-   if (protocol === 'data') {
 
-     uri = protocol.length ? uri.slice(protocol.length + 1) : uri;
 
-     const match = DATA_URL_PATTERN.exec(uri);
 
-     if (!match) {
 
-       throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);
 
-     }
 
-     const mime = match[1];
 
-     const isBase64 = match[2];
 
-     const body = match[3];
 
-     const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');
 
-     if (asBlob) {
 
-       if (!_Blob) {
 
-         throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);
 
-       }
 
-       return new _Blob([buffer], {type: mime});
 
-     }
 
-     return buffer;
 
-   }
 
-   throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);
 
- }
 
 
  |