UNPKG

1.85 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5const debug_1 = __importDefault(require("debug"));
6const url_1 = require("url");
7// Built-in protocols
8const data_1 = __importDefault(require("./data"));
9const file_1 = __importDefault(require("./file"));
10const ftp_1 = __importDefault(require("./ftp"));
11const http_1 = __importDefault(require("./http"));
12const https_1 = __importDefault(require("./https"));
13const debug = (0, debug_1.default)('get-uri');
14function getUri(uri, opts, fn) {
15 const p = new Promise((resolve, reject) => {
16 debug('getUri(%o)', uri);
17 if (typeof opts === 'function') {
18 fn = opts;
19 opts = undefined;
20 }
21 if (!uri) {
22 reject(new TypeError('Must pass in a URI to "get"'));
23 return;
24 }
25 const parsed = (0, url_1.parse)(uri);
26 // Strip trailing `:`
27 const protocol = (parsed.protocol || '').replace(/:$/, '');
28 if (!protocol) {
29 reject(new TypeError(`URI does not contain a protocol: ${uri}`));
30 return;
31 }
32 const getter = getUri.protocols[protocol];
33 if (typeof getter !== 'function') {
34 throw new TypeError(`Unsupported protocol "${protocol}" specified in URI: ${uri}`);
35 }
36 resolve(getter(parsed, opts || {}));
37 });
38 if (typeof fn === 'function') {
39 p.then(rtn => fn(null, rtn), err => fn(err));
40 }
41 else {
42 return p;
43 }
44}
45(function (getUri) {
46 getUri.protocols = {
47 data: data_1.default,
48 file: file_1.default,
49 ftp: ftp_1.default,
50 http: http_1.default,
51 https: https_1.default
52 };
53})(getUri || (getUri = {}));
54module.exports = getUri;
55//# sourceMappingURL=index.js.map
\No newline at end of file