UNPKG

projen

Version:

CDK for software projects

107 lines 17.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SmithyBuild = void 0; const component_1 = require("../component"); const json_1 = require("../json"); /** * Smithy build configuration options * @see https://smithy.io/2.0/guides/building-models/build-config.html */ class SmithyBuild extends component_1.Component { constructor(project, options = {}) { super(project); this.version = options.version ?? "1.0"; this.outputDirectory = options.outputDirectory; this._imports = options.imports; this._projections = options.projections; this._plugins = options.plugins; this.ignoreMissingPlugins = options.ignoreMissingPlugins; this._maven = options.maven; this._sources = options.sources; this.manifest = { version: this.version, outputDirectory: this.outputDirectory, imports: () => this._imports, projections: () => this._projections, plugins: () => this._plugins, ignoreMissingPlugins: this.ignoreMissingPlugins, maven: () => this._maven, sources: () => this._sources, }; new json_1.JsonFile(this.project, "smithy-build.json", { obj: this.manifest, readonly: true, // we want "yarn add" to work and we have anti-tamper newline: false, // when file is edited by npm/yarn it doesn't include a newline }); } /** * Get configured projections */ get projections() { return this._projections ? { ...this._projections } : undefined; } /** * Get configured imports */ get imports() { return this._imports ? [...this._imports] : undefined; } /** * Get configured plugins */ get plugins() { return this._plugins ? { ...this._plugins } : undefined; } /** * Add a smithy build import */ addImport(imp) { this._imports ? this._imports.push(imp) : (this._imports = [`${imp}`]); } /** * Add smithy build projections */ addProjections(projections) { for (const [k, v] of Object.entries(projections)) { this._projections ? (this._projections[k] = v) : (this._projections = { [k]: v }); } } /** * Add smithy build plugins */ addPlugins(plugins) { for (const [k, v] of Object.entries(plugins)) { this._plugins ? (this._plugins[k] = v) : (this._plugins = { [k]: v }); } } /** * Add maven dependencies to the smithy build for the vs-code plugin */ addMavenDependencies(...dependencies) { this._maven = { dependencies: [...(this._maven?.dependencies ?? []), ...dependencies], repositories: this._maven?.repositories ?? [], }; } /** * Add maven repositories to the smithy build for the vs-code plugin */ addMavenRepositories(...repositories) { this._maven = { dependencies: this._maven?.dependencies ?? [], repositories: [...(this._maven?.repositories ?? []), ...repositories], }; } /** * Add relative paths to model source files or directories */ addSources(...sources) { this._sources ? this._sources.push(...sources) : (this._sources = [...sources]); } } exports.SmithyBuild = SmithyBuild; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21pdGh5LWJ1aWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NtaXRoeS9zbWl0aHktYnVpbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQXlDO0FBRXpDLGtDQUFtQztBQW1GbkM7OztHQUdHO0FBQ0gsTUFBYSxXQUFZLFNBQVEscUJBQVM7SUFvRHhDLFlBQVksT0FBZ0IsRUFBRSxVQUE4QixFQUFFO1FBQzVELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUVoQyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDNUIsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQ3BDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUM1QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lB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QUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxJQUFJLEVBQUU7WUFDN0MsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDO1NBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsR0FBRyxPQUFpQjtRQUNwQyxJQUFJLENBQUMsUUFBUTtZQUNYLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQTlKRCxrQ0E4SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE1hdmVuUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9qYXZhXCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCIuLi9qc29uXCI7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuXG50eXBlIFRyYW5zZm9ybSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcbnR5cGUgU21pdGh5Q29tbW9uID0ge1xuICBpbXBvcnRzPzogc3RyaW5nW107XG4gIHBsdWdpbnM/OiBQbHVnaW5zVHlwZTtcbn07XG50eXBlIFBsdWdpblZhbHVlID0ge1xuICBzZXJ2aWNlPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgUHJvamVjdGlvblZhbHVlID0gU21pdGh5Q29tbW9uICYge1xuICBhYnN0cmFjdD86IGJvb2xlYW47XG4gIHRyYW5zZm9ybXM/OiBUcmFuc2Zvcm1bXTtcbn07XG5leHBvcnQgdHlwZSBQcm9qZWN0aW9uS2V5ID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUHJvamVjdGlvbnNUeXBlID0gUmVjb3JkPFByb2plY3Rpb25LZXksIFByb2plY3Rpb25WYWx1ZT47XG5leHBvcnQgdHlwZSBQbHVnaW5LZXkgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBQbHVnaW5zVHlwZSA9IFJlY29yZDxQbHVnaW5LZXksIFBsdWdpblZhbHVlPjtcblxuLyoqXG4gKiBNYXZlbiByZXBvc2l0b3J5IGRlZmluaXRpb24gZm9yIGEgc21pdGh5IGJ1aWxkIGZpbGVcbiAqL1xuZXhwb3J0IHR5cGUgU21pdGh5TWF2ZW5SZXBvc2l0b3J5ID0gUGFydGlhbDxNYXZlblJlcG9zaXRvcnk+ICZcbiAgUGljazxNYXZlblJlcG9zaXRvcnksIFwidXJsXCI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNtaXRoeU1hdmVuQ29uZmlnIHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc21pdGh5IGRlcGVuZGVuY2llcywgZm9yIGV4YW1wbGUgW1wic29mdHdhcmUuYW1hem9uLnNtaXRoeTpzbWl0aHktY2xpOjEuMjcuMlwiXVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgbWF2ZW4gcmVwb3NpdG9yaWVzIGZvciBzbWl0aHkgZGVwZW5kZW5jaWVzXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3JpZXM6IFNtaXRoeU1hdmVuUmVwb3NpdG9yeVtdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBTbWl0aHlCdWlsZGBcbiAqIEBzZWUgaHR0cHM6Ly9zbWl0aHkuaW8vMi4wL2d1aWRlcy9idWlsZGluZy1tb2RlbHMvYnVpbGQtY29uZmlnLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbWl0aHlCdWlsZE9wdGlvbnMgZXh0ZW5kcyBTbWl0aHlDb21tb24ge1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdmVyc2lvbiBvZiBzbWl0aHktYnVpbGQuXG4gICAqIEBkZWZhdWx0IFwiMS4wXCJcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsb2NhdGlvbiB3aGVyZSBzbWl0aHkgcHJvamVjdGlvbnMgYXJlIHdyaXR0ZW4uXG4gICAqIEBkZWZhdWx0IC0gbm8gb3V0cHV0IGRpcmVjdG9yeVxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5Pzogc3RyaW5nO1xuICAvKipcbiAgICogTWFwIG9mIHByb2plY3Rpb25zIG5hbWUgdG8gcHJvamVjdGlvbiBjb25maWd1cmF0aW9uc1xuICAgKiBodHRwczovL2F3c2xhYnMuZ2l0aHViLmlvL3NtaXRoeS8xLjAvZ3VpZGVzL2J1aWxkaW5nLW1vZGVscy9idWlsZC1jb25maWcuaHRtbCNwcm9qZWN0aW9uc1xuICAgKiBAZGVmYXVsdCAtIG5vIHByb2plY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0aW9ucz86IFByb2plY3Rpb25zVHlwZTtcbiAgLyoqXG4gICAqIElmIGEgcGx1Z2luIGNhbid0IGJlIGZvdW5kLCBTbWl0aHkgd2lsbCBieSBkZWZhdWx0IGZhaWwgdGhlIGJ1aWxkLlxuICAgKiBUaGlzIHNldHRpbmcgY2FuIGJlIHNldCB0byB0cnVlIHRvIGFsbG93IHRoZSBidWlsZCB0byBwcm9ncmVzc1xuICAgKiBldmVuIGlmIGEgcGx1Z2luIGNhbid0IGJlIGZvdW5kIG9uIHRoZSBjbGFzc3BhdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gaWdub3JlTWlzc2luZ1BsdWdpbnMgc2V0IGluIHRoZSBzbWl0aHktYnVpbGQuanNvbiBmaWxlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVNaXNzaW5nUGx1Z2lucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBNYXZlbiBjb25maWd1cmF0aW9uLCB1c2VkIHRvIGRlY2xhcmUgZGVwZW5kZW5jaWVzIGZvciB0aGUgc21pdGh5IHZzLWNvZGUgcGx1Z2luXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvc21pdGh5LXZzY29kZS9ibG9iL21haW4vUkVBRE1FLm1kI2F1dGhvcmluZy1hLW1vZGVsXG4gICAqIEBkZWZhdWx0IC0gbm8gbWF2ZW4gY29uZmlndXJhdGlvbiBzZXQgaW4gdGhlIHNtaXRoeS1idWlsZC5qc29uIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IG1hdmVuPzogU21pdGh5TWF2ZW5Db25maWc7XG4gIC8qKlxuICAgKiBSZWxhdGl2ZSBwYXRocyB0byBtb2RlbCBzb3VyY2UgZmlsZXMgb3IgZGlyZWN0b3JpZXNcbiAgICogQGRlZmF1bHQgLSByZWZlciB0byBodHRwczovL3NtaXRoeS5pby8yLjAvZ3VpZGVzL2J1aWxkaW5nLW1vZGVscy9ncmFkbGUtcGx1Z2luLmh0bWw/aGlnaGxpZ2h0PXNvdXJjZSNzbWl0aHktbW9kZWwtc291cmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNtaXRoeSBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAqIEBzZWUgaHR0cHM6Ly9zbWl0aHkuaW8vMi4wL2d1aWRlcy9idWlsZGluZy1tb2RlbHMvYnVpbGQtY29uZmlnLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNtaXRoeUJ1aWxkIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHZlcnNpb24gb2Ygc21pdGh5LWJ1aWxkLlxuICAgKiBAZGVmYXVsdCBcIjEuMFwiXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBsb2NhdGlvbiB3aGVyZSBzbWl0aHkgcHJvamVjdGlvbnMgYXJlIHdyaXR0ZW4uXG4gICAqIEBkZWZhdWx0IC0gbm8gb3V0cHV0IGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBpbXBvcnRzIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiBzbWl0aHktYnVpbGQuanNvbiBmaWxlLlxuICAgKiBAZGVmYXVsdCBubyBpbXBvcnRzXG4gICAqL1xuICBwcml2YXRlIF9pbXBvcnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElmIGEgcGx1Z2luIGNhbid0IGJlIGZvdW5kLCBTbWl0aHkgd2lsbCBieSBkZWZhdWx0IGZhaWwgdGhlIGJ1aWxkLlxuICAgKiBUaGlzIHNldHRpbmcgY2FuIGJlIHNldCB0byB0cnVlIHRvIGFsbG93IHRoZSBidWlsZCB0byBwcm9ncmVzc1xuICAgKiBldmVuIGlmIGEgcGx1Z2luIGNhbid0IGJlIGZvdW5kIG9uIHRoZSBjbGFzc3BhdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gaWdub3JlTWlzc2luZ1BsdWdpbnMgc2V0IGluIHRoZSBzbWl0aHktYnVpbGQuanNvbiBmaWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWdub3JlTWlzc2luZ1BsdWdpbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgcHJvamVjdGlvbnMgbmFtZSB0byBwcm9qZWN0aW9uIGNvbmZpZ3VyYXRpb25zXG4gICAqIGh0dHBzOi8vYXdzbGFicy5naXRodWIuaW8vc21pdGh5LzEuMC9ndWlkZXMvYnVpbGRpbmctbW9kZWxzL2J1aWxkLWNvbmZpZy5odG1sI3Byb2plY3Rpb25zXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvamVjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3Byb2plY3Rpb25zPzogUHJvamVjdGlvbnNUeXBlO1xuICAvKipcbiAgICogTWFwIG9mIHBsdWdpbiBuYW1lIHRvIHBsdWdpbiBjb25maWd1cmF0aW9uc1xuICAgKiBodHRwczovL2F3c2xhYnMuZ2l0aHViLmlvL3NtaXRoeS8xLjAvZ3VpZGVzL2J1aWxkaW5nLW1vZGVscy9idWlsZC1jb25maWcuaHRtbCNwbHVnaW5zXG4gICAqIEBkZWZhdWx0IC0gbm8gcGx1Z2luc1xuICAgKi9cbiAgcHJpdmF0ZSBfcGx1Z2lucz86IFBsdWdpbnNUeXBlO1xuICAvKipcbiAgICogTWF2ZW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIFNtaXRoeSB2cy1jb2RlIGV4dGVuc2lvblxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9zbWl0aHktdnNjb2RlL2Jsb2IvbWFpbi9SRUFETUUubWQjYXV0aG9yaW5nLWEtbW9kZWxcbiAgICovXG4gIHByaXZhdGUgX21hdmVuPzogU21pdGh5TWF2ZW5Db25maWc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIG1vZGVsIHNvdXJjZSBmaWxlcy9kaXJlY3Rvcmllc1xuICAgKi9cbiAgcHJpdmF0ZSBfc291cmNlcz86IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFuaWZlc3Q6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBTbWl0aHlCdWlsZE9wdGlvbnMgPSB7fSkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgdGhpcy52ZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uID8/IFwiMS4wXCI7XG4gICAgdGhpcy5vdXRwdXREaXJlY3RvcnkgPSBvcHRpb25zLm91dHB1dERpcmVjdG9yeTtcbiAgICB0aGlzLl9pbXBvcnRzID0gb3B0aW9ucy5pbXBvcnRzO1xuICAgIHRoaXMuX3Byb2plY3Rpb25zID0gb3B0aW9ucy5wcm9qZWN0aW9ucztcbiAgICB0aGlzLl9wbHVnaW5zID0gb3B0aW9ucy5wbHVnaW5zO1xuICAgIHRoaXMuaWdub3JlTWlzc2luZ1BsdWdpbnMgPSBvcHRpb25zLmlnbm9yZU1pc3NpbmdQbHVnaW5zO1xuICAgIHRoaXMuX21hdmVuID0gb3B0aW9ucy5tYXZlbjtcbiAgICB0aGlzLl9zb3VyY2VzID0gb3B0aW9ucy5zb3VyY2VzO1xuXG4gICAgdGhpcy5tYW5pZmVzdCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgIG91dHB1dERpcmVjdG9yeTogdGhpcy5vdXRwdXREaXJlY3RvcnksXG4gICAgICBpbXBvcnRzOiAoKSA9PiB0aGlzLl9pbXBvcnRzLFxuICAgICAgcHJvamVjdGlvbnM6ICgpID0+IHRoaXMuX3Byb2plY3Rpb25zLFxuICAgICAgcGx1Z2luczogKCkgPT4gdGhpcy5fcGx1Z2lucyxcbiAgICAgIGlnbm9yZU1pc3NpbmdQbHVnaW5zOiB0aGlzLmlnbm9yZU1pc3NpbmdQbHVnaW5zLFxuICAgICAgbWF2ZW46ICgpID0+IHRoaXMuX21hdmVuLFxuICAgICAgc291cmNlczogKCkgPT4gdGhpcy5fc291cmNlcyxcbiAgICB9O1xuXG4gICAgbmV3IEpzb25GaWxlKHRoaXMucHJvamVjdCwgXCJzbWl0aHktYnVpbGQuanNvblwiLCB7XG4gICAgICBvYmo6IHRoaXMubWFuaWZlc3QsXG4gICAgICByZWFkb25seTogdHJ1ZSwgLy8gd2Ugd2FudCBcInlhcm4gYWRkXCIgdG8gd29yayBhbmQgd2UgaGF2ZSBhbnRpLXRhbXBlclxuICAgICAgbmV3bGluZTogZmFsc2UsIC8vIHdoZW4gZmlsZSBpcyBlZGl0ZWQgYnkgbnBtL3lhcm4gaXQgZG9lc24ndCBpbmNsdWRlIGEgbmV3bGluZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb25maWd1cmVkIHByb2plY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb2plY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9qZWN0aW9ucyA/IHsgLi4udGhpcy5fcHJvamVjdGlvbnMgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29uZmlndXJlZCBpbXBvcnRzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGltcG9ydHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltcG9ydHMgPyBbLi4udGhpcy5faW1wb3J0c10gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbmZpZ3VyZWQgcGx1Z2luc1xuICAgKi9cbiAgcHVibGljIGdldCBwbHVnaW5zKCkge1xuICAgIHJldHVybiB0aGlzLl9wbHVnaW5zID8geyAuLi50aGlzLl9wbHVnaW5zIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc21pdGh5IGJ1aWxkIGltcG9ydFxuICAgKi9cbiAgcHVibGljIGFkZEltcG9ydChpbXA6IHN0cmluZykge1xuICAgIHRoaXMuX2ltcG9ydHMgPyB0aGlzLl9pbXBvcnRzLnB1c2goaW1wKSA6ICh0aGlzLl9pbXBvcnRzID0gW2Ake2ltcH1gXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHNtaXRoeSBidWlsZCBwcm9qZWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGFkZFByb2plY3Rpb25zKHByb2plY3Rpb25zOiBQcm9qZWN0aW9uc1R5cGUpIHtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwcm9qZWN0aW9ucykpIHtcbiAgICAgIHRoaXMuX3Byb2plY3Rpb25zXG4gICAgICAgID8gKHRoaXMuX3Byb2plY3Rpb25zW2tdID0gdilcbiAgICAgICAgOiAodGhpcy5fcHJvamVjdGlvbnMgPSB7IFtrXTogdiB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIHNtaXRoeSBidWlsZCBwbHVnaW5zXG4gICAqL1xuICBwdWJsaWMgYWRkUGx1Z2lucyhwbHVnaW5zOiBQbHVnaW5zVHlwZSkge1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBsdWdpbnMpKSB7XG4gICAgICB0aGlzLl9wbHVnaW5zID8gKHRoaXMuX3BsdWdpbnNba10gPSB2KSA6ICh0aGlzLl9wbHVnaW5zID0geyBba106IHYgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtYXZlbiBkZXBlbmRlbmNpZXMgdG8gdGhlIHNtaXRoeSBidWlsZCBmb3IgdGhlIHZzLWNvZGUgcGx1Z2luXG4gICAqL1xuICBwdWJsaWMgYWRkTWF2ZW5EZXBlbmRlbmNpZXMoLi4uZGVwZW5kZW5jaWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX21hdmVuID0ge1xuICAgICAgZGVwZW5kZW5jaWVzOiBbLi4uKHRoaXMuX21hdmVuPy5kZXBlbmRlbmNpZXMgPz8gW10pLCAuLi5kZXBlbmRlbmNpZXNdLFxuICAgICAgcmVwb3NpdG9yaWVzOiB0aGlzLl9tYXZlbj8ucmVwb3NpdG9yaWVzID8/IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIG1hdmVuIHJlcG9zaXRvcmllcyB0byB0aGUgc21pdGh5IGJ1aWxkIGZvciB0aGUgdnMtY29kZSBwbHVnaW5cbiAgICovXG4gIHB1YmxpYyBhZGRNYXZlblJlcG9zaXRvcmllcyguLi5yZXBvc2l0b3JpZXM6IFNtaXRoeU1hdmVuUmVwb3NpdG9yeVtdKSB7XG4gICAgdGhpcy5fbWF2ZW4gPSB7XG4gICAgICBkZXBlbmRlbmNpZXM6IHRoaXMuX21hdmVuPy5kZXBlbmRlbmNpZXMgPz8gW10sXG4gICAgICByZXBvc2l0b3JpZXM6IFsuLi4odGhpcy5fbWF2ZW4/LnJlcG9zaXRvcmllcyA/PyBbXSksIC4uLnJlcG9zaXRvcmllc10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcmVsYXRpdmUgcGF0aHMgdG8gbW9kZWwgc291cmNlIGZpbGVzIG9yIGRpcmVjdG9yaWVzXG4gICAqL1xuICBwdWJsaWMgYWRkU291cmNlcyguLi5zb3VyY2VzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NvdXJjZXNcbiAgICAgID8gdGhpcy5fc291cmNlcy5wdXNoKC4uLnNvdXJjZXMpXG4gICAgICA6ICh0aGlzLl9zb3VyY2VzID0gWy4uLnNvdXJjZXNdKTtcbiAgfVxufVxuIl19