budgie-cli
Version:
Node CLI for Budgie.
61 lines • 2.88 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const createTypeScriptConverter_1 = require("./typescript/createTypeScriptConverter");
const typescriptConverter_1 = require("./typescript/typescriptConverter");
/**
* Creates and caches converters per language extension.
*/
class ConvertersBag {
constructor(creators, createConverterDependencies) {
this.creators = creators;
this.createConverterDependencies = createConverterDependencies;
/**
* Cached creation Promises for converters, keyed by language extension.
*/
this.converters = new Map();
}
/**
* Returns a cached converter, creating it as needed.
*
* @param languageExtension Language extension to create for.
* @returns Promise for the language's cached creator, if it exists, or an error during creation.
*/
get(languageExtension) {
return __awaiter(this, void 0, void 0, function* () {
let creation = this.converters.get(languageExtension);
if (creation === undefined) {
creation = this.startCreation(languageExtension);
this.converters.set(languageExtension, creation);
}
return creation;
});
}
/**
* Starts creation of a new converter, if the extension is known.
*
* @param languageExtension Language extension to create for.
* @returns Promise for the language's creator, or an error during creation.
*/
startCreation(languageExtension) {
return __awaiter(this, void 0, void 0, function* () {
const creator = this.creators.get(languageExtension);
return creator === undefined
? creator
: creator(this.createConverterDependencies);
});
}
}
exports.ConvertersBag = ConvertersBag;
exports.createConvertersBag = (createConverterDependencies) => new ConvertersBag(new Map([
[typescriptConverter_1.tsExtension, createTypeScriptConverter_1.createTypeScriptConverter],
]), createConverterDependencies);
//# sourceMappingURL=convertersBag.js.map