You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					55 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					55 lines
				
				1.8 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								var __importDefault = (this && this.__importDefault) || function (mod) {
							 | 
						||
| 
								 | 
							
								    return (mod && mod.__esModule) ? mod : { "default": mod };
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								const debug_1 = __importDefault(require("debug"));
							 | 
						||
| 
								 | 
							
								const url_1 = require("url");
							 | 
						||
| 
								 | 
							
								// Built-in protocols
							 | 
						||
| 
								 | 
							
								const data_1 = __importDefault(require("./data"));
							 | 
						||
| 
								 | 
							
								const file_1 = __importDefault(require("./file"));
							 | 
						||
| 
								 | 
							
								const ftp_1 = __importDefault(require("./ftp"));
							 | 
						||
| 
								 | 
							
								const http_1 = __importDefault(require("./http"));
							 | 
						||
| 
								 | 
							
								const https_1 = __importDefault(require("./https"));
							 | 
						||
| 
								 | 
							
								const debug = debug_1.default('get-uri');
							 | 
						||
| 
								 | 
							
								function getUri(uri, opts, fn) {
							 | 
						||
| 
								 | 
							
								    const p = new Promise((resolve, reject) => {
							 | 
						||
| 
								 | 
							
								        debug('getUri(%o)', uri);
							 | 
						||
| 
								 | 
							
								        if (typeof opts === 'function') {
							 | 
						||
| 
								 | 
							
								            fn = opts;
							 | 
						||
| 
								 | 
							
								            opts = undefined;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (!uri) {
							 | 
						||
| 
								 | 
							
								            reject(new TypeError('Must pass in a URI to "get"'));
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        const parsed = url_1.parse(uri);
							 | 
						||
| 
								 | 
							
								        // Strip trailing `:`
							 | 
						||
| 
								 | 
							
								        const protocol = (parsed.protocol || '').replace(/:$/, '');
							 | 
						||
| 
								 | 
							
								        if (!protocol) {
							 | 
						||
| 
								 | 
							
								            reject(new TypeError(`URI does not contain a protocol: ${uri}`));
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        const getter = getUri.protocols[protocol];
							 | 
						||
| 
								 | 
							
								        if (typeof getter !== 'function') {
							 | 
						||
| 
								 | 
							
								            throw new TypeError(`Unsupported protocol "${protocol}" specified in URI: ${uri}`);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        resolve(getter(parsed, opts || {}));
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    if (typeof fn === 'function') {
							 | 
						||
| 
								 | 
							
								        p.then(rtn => fn(null, rtn), err => fn(err));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								        return p;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								(function (getUri) {
							 | 
						||
| 
								 | 
							
								    getUri.protocols = {
							 | 
						||
| 
								 | 
							
								        data: data_1.default,
							 | 
						||
| 
								 | 
							
								        file: file_1.default,
							 | 
						||
| 
								 | 
							
								        ftp: ftp_1.default,
							 | 
						||
| 
								 | 
							
								        http: http_1.default,
							 | 
						||
| 
								 | 
							
								        https: https_1.default
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								})(getUri || (getUri = {}));
							 | 
						||
| 
								 | 
							
								module.exports = getUri;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=index.js.map
							 |