123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- "use strict";
- /**
- * @todo Document why this abstraction exists, and the relationship between
- * environment, file managers, and plugin manager
- */
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var logger_1 = __importDefault(require("../logger"));
- var environment = /** @class */ (function () {
- function environment(externalEnvironment, fileManagers) {
- this.fileManagers = fileManagers || [];
- externalEnvironment = externalEnvironment || {};
- var optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];
- var requiredFunctions = [];
- var functions = requiredFunctions.concat(optionalFunctions);
- for (var i = 0; i < functions.length; i++) {
- var propName = functions[i];
- var environmentFunc = externalEnvironment[propName];
- if (environmentFunc) {
- this[propName] = environmentFunc.bind(externalEnvironment);
- }
- else if (i < requiredFunctions.length) {
- this.warn("missing required function in environment - " + propName);
- }
- }
- }
- environment.prototype.getFileManager = function (filename, currentDirectory, options, environment, isSync) {
- if (!filename) {
- logger_1.default.warn('getFileManager called with no filename.. Please report this issue. continuing.');
- }
- if (currentDirectory == null) {
- logger_1.default.warn('getFileManager called with null directory.. Please report this issue. continuing.');
- }
- var fileManagers = this.fileManagers;
- if (options.pluginManager) {
- fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());
- }
- for (var i = fileManagers.length - 1; i >= 0; i--) {
- var fileManager = fileManagers[i];
- if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {
- return fileManager;
- }
- }
- return null;
- };
- environment.prototype.addFileManager = function (fileManager) {
- this.fileManagers.push(fileManager);
- };
- environment.prototype.clearFileManagers = function () {
- this.fileManagers = [];
- };
- return environment;
- }());
- exports.default = environment;
- //# sourceMappingURL=environment.js.map
|