url-file-manager.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. };
  9. return function (d, b) {
  10. extendStatics(d, b);
  11. function __() { this.constructor = d; }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. };
  14. })();
  15. var __importDefault = (this && this.__importDefault) || function (mod) {
  16. return (mod && mod.__esModule) ? mod : { "default": mod };
  17. };
  18. Object.defineProperty(exports, "__esModule", { value: true });
  19. var isUrlRe = /^(?:https?:)?\/\//i;
  20. var url_1 = __importDefault(require("url"));
  21. var request;
  22. var abstract_file_manager_js_1 = __importDefault(require("../less/environment/abstract-file-manager.js"));
  23. var logger_1 = __importDefault(require("../less/logger"));
  24. var UrlFileManager = /** @class */ (function (_super) {
  25. __extends(UrlFileManager, _super);
  26. function UrlFileManager() {
  27. return _super !== null && _super.apply(this, arguments) || this;
  28. }
  29. UrlFileManager.prototype.supports = function (filename, currentDirectory, options, environment) {
  30. return isUrlRe.test(filename) || isUrlRe.test(currentDirectory);
  31. };
  32. UrlFileManager.prototype.loadFile = function (filename, currentDirectory, options, environment) {
  33. return new Promise(function (fulfill, reject) {
  34. if (request === undefined) {
  35. try {
  36. request = require('native-request');
  37. }
  38. catch (e) {
  39. request = null;
  40. }
  41. }
  42. if (!request) {
  43. reject({ type: 'File', message: 'optional dependency \'native-request\' required to import over http(s)\n' });
  44. return;
  45. }
  46. var urlStr = isUrlRe.test(filename) ? filename : url_1.default.resolve(currentDirectory, filename);
  47. /** native-request currently has a bug */
  48. var hackUrlStr = urlStr.indexOf('?') === -1 ? urlStr + '?' : urlStr;
  49. request.get(hackUrlStr, function (error, body, status) {
  50. if (status === 404) {
  51. reject({ type: 'File', message: "resource '" + urlStr + "' was not found\n" });
  52. return;
  53. }
  54. if (error) {
  55. reject({ type: 'File', message: "resource '" + urlStr + "' gave this Error:\n " + error + "\n" });
  56. return;
  57. }
  58. if (!body) {
  59. logger_1.default.warn("Warning: Empty body (HTTP " + status + ") returned by \"" + urlStr + "\"");
  60. }
  61. fulfill({ contents: body, filename: urlStr });
  62. });
  63. });
  64. };
  65. return UrlFileManager;
  66. }(abstract_file_manager_js_1.default));
  67. exports.default = UrlFileManager;
  68. //# sourceMappingURL=url-file-manager.js.map