projen
Version:
CDK for software projects
157 lines • 20.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Renovatebot = exports.RenovatebotMinimumReleaseAgeBehaviour = exports.RenovatebotScheduleInterval = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const component_1 = require("./component");
const dependencies_1 = require("./dependencies");
const json_1 = require("./json");
/**
* How often to check for new versions and raise pull requests for version
* updates.
*
* @see https://docs.renovatebot.com/presets-schedule/
*/
var RenovatebotScheduleInterval;
(function (RenovatebotScheduleInterval) {
/**
* Run at any time
*/
RenovatebotScheduleInterval["ANY_TIME"] = "at any time";
/**
* Weekly schedule on early monday mornings
*/
RenovatebotScheduleInterval["EARLY_MONDAYS"] = "before 3am on Monday";
/**
* Schedule daily
*/
RenovatebotScheduleInterval["DAILY"] = "before 2am";
/**
* Schedule weekly
*/
RenovatebotScheduleInterval["WEEKLY"] = "before 3am on Monday";
/**
* Schedule monthly
*/
RenovatebotScheduleInterval["MONTHLY"] = "before 3am on the first day of the month";
/**
* Schedule quarterly
*/
RenovatebotScheduleInterval["QUARTERLY"] = "every 3 months on the first day of the month";
/**
* Schedule for weekends
*/
RenovatebotScheduleInterval["WEEKENDS"] = "every weekend";
/**
* Schedule for weekdays
*/
RenovatebotScheduleInterval["WEEKDAYS"] = "every weekday";
})(RenovatebotScheduleInterval || (exports.RenovatebotScheduleInterval = RenovatebotScheduleInterval = {}));
/**
* Behaviour when a release timestamp is missing for `minimumReleaseAge`.
*
* @see https://docs.renovatebot.com/configuration-options/#minimumreleaseagebehaviour
*/
var RenovatebotMinimumReleaseAgeBehaviour;
(function (RenovatebotMinimumReleaseAgeBehaviour) {
/**
* A release without a timestamp is not treated as stable.
*/
RenovatebotMinimumReleaseAgeBehaviour["TIMESTAMP_REQUIRED"] = "timestamp-required";
/**
* A release without a timestamp is treated as stable.
*/
RenovatebotMinimumReleaseAgeBehaviour["TIMESTAMP_OPTIONAL"] = "timestamp-optional";
})(RenovatebotMinimumReleaseAgeBehaviour || (exports.RenovatebotMinimumReleaseAgeBehaviour = RenovatebotMinimumReleaseAgeBehaviour = {}));
/**
* Defines renovatebot configuration for projen project.
*
* Ignores the versions controlled by Projen.
*/
class Renovatebot extends component_1.Component {
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Renovatebot", version: "0.103.12" };
/**
* The file holding the renovatebot configuration
*/
file;
_project;
explicitIgnores;
scheduleInterval;
labels;
marker;
overrideConfig;
minimumReleaseAge;
minimumReleaseAgeBehaviour;
constructor(project, options = {}) {
super(project);
this._project = project;
this.explicitIgnores = options.ignore ?? [];
this.labels = options.labels;
this.scheduleInterval = options.scheduleInterval ?? [
RenovatebotScheduleInterval.ANY_TIME,
];
(options.ignoreProjen ?? true) && this.explicitIgnores.push("projen");
this.overrideConfig = options.overrideConfig ?? {};
this.marker = options.marker ?? true;
this.minimumReleaseAge = options.minimumReleaseAge;
this.minimumReleaseAgeBehaviour = options.minimumReleaseAgeBehaviour;
this.file = new json_1.JsonFile(this._project, "renovate.json5", {
obj: () => this.createRenovateConfiguration(),
committed: true,
marker: this.marker,
});
}
createRenovateConfiguration() {
const renovateIgnore = [
...new Set(this._project.deps.all
.filter((dep) => dep.version || dep.type === dependencies_1.DependencyType.OVERRIDE)
.map((dep) => dep.name)
.concat(this.explicitIgnores)),
];
// Ignore GitHub Action updates in Projen created workspaces
const github = this._project.github;
if (github?.workflowsEnabled) {
const actions = github.workflows
.flatMap((workflow) => Object.values(workflow.jobs))
.flatMap((job) => job.steps)
.map((step) => step?.uses?.split("@")[0])
.filter((actionName) => !!actionName);
const reusableWorkflows = github.workflows
.flatMap((workflow) => Object.values(workflow.jobs))
.flatMap((job) => job.uses)
.map((reusableWorkflow) => reusableWorkflow?.split("@")[0]);
renovateIgnore.push(...new Set(actions));
renovateIgnore.push(...new Set(reusableWorkflows));
}
const extendsPresets = [
":preserveSemverRanges",
"config:recommended",
"group:allNonMajor",
"group:recommended",
"group:monorepos",
];
// Add Biome custom manager if Biome is configured
// Lazy require to avoid circular dependency (renovatebot -> biome -> project -> renovatebot)
const { Biome } = require("./javascript/biome/biome"); // eslint-disable-line @typescript-eslint/no-require-imports
if (Biome.of(this._project)) {
extendsPresets.push("customManagers:biomeVersions");
}
return {
labels: this.labels,
schedule: this.scheduleInterval,
minimumReleaseAge: this.minimumReleaseAge,
minimumReleaseAgeBehaviour: this.minimumReleaseAgeBehaviour,
extends: extendsPresets,
packageRules: [
{
matchDepTypes: ["devDependencies"],
matchUpdateTypes: ["patch", "minor"],
groupName: "devDependencies (non-major)",
},
],
ignoreDeps: renovateIgnore,
...this.overrideConfig,
};
}
}
exports.Renovatebot = Renovatebot;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVub3ZhdGVib3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVub3ZhdGVib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDJDQUF3QztBQUN4QyxpREFBZ0Q7QUFHaEQsaUNBQWtDO0FBcUVsQzs7Ozs7R0FLRztBQUNILElBQVksMkJBd0NYO0FBeENELFdBQVksMkJBQTJCO0lBQ3JDOztPQUVHO0lBQ0gsdURBQXdCLENBQUE7SUFFeEI7O09BRUc7SUFDSCxxRUFBc0MsQ0FBQTtJQUV0Qzs7T0FFRztJQUNILG1EQUFvQixDQUFBO0lBRXBCOztPQUVHO0lBQ0gsOERBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCxtRkFBb0QsQ0FBQTtJQUVwRDs7T0FFRztJQUNILHlGQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gseURBQTBCLENBQUE7SUFFMUI7O09BRUc7SUFDSCx5REFBMEIsQ0FBQTtBQUM1QixDQUFDLEVBeENXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBd0N0QztBQUVEOzs7O0dBSUc7QUFDSCxJQUFZLHFDQVVYO0FBVkQsV0FBWSxxQ0FBcUM7SUFDL0M7O09BRUc7SUFDSCxrRkFBeUMsQ0FBQTtJQUV6Qzs7T0FFRztJQUNILGtGQUF5QyxDQUFBO0FBQzNDLENBQUMsRUFWVyxxQ0FBcUMscURBQXJDLHFDQUFxQyxRQVVoRDtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxxQkFBUzs7SUFDeEM7O09BRUc7SUFDYSxJQUFJLENBQVc7SUFFZCxRQUFRLENBQVU7SUFFbEIsZUFBZSxDQUFXO0lBRTFCLGdCQUFnQixDQUFXO0lBRTNCLE1BQU0sQ0FBWTtJQUVsQixNQUFNLENBQVc7SUFFakIsY0FBYyxDQUFPO0lBRXJCLGlCQUFpQixDQUFVO0lBRTNCLDBCQUEwQixDQUF5QztJQUVwRixZQUFZLE9BQWdCLEVBQUUsVUFBOEIsRUFBRTtRQUM1RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixJ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QUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHO1lBQ3JCLHVCQUF1QjtZQUN2QixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixpQkFBaUI7U0FDbEIsQ0FBQztRQUVGLGtEQUFrRDtRQUNsRCw2RkFBNkY7UUFDN0YsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsNERBQTREO1FBQ25ILElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixjQUFjLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDL0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QywwQkFBMEIsRUFBRSxJQUFJLENBQUMsMEJBQTBCO1lBQzNELE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFlBQVksRUFBRTtnQkFDWjtvQkFDRSxhQUFhLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDbEMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO29CQUNwQyxTQUFTLEVBQUUsNkJBQTZCO2lCQUN6QzthQUNGO1lBQ0QsVUFBVSxFQUFFLGNBQWM7WUFDMUIsR0FBRyxJQUFJLENBQUMsY0FBYztTQUN2QixDQUFDO0lBQ0osQ0FBQzs7QUF2R0gsa0NBd0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHR5cGUgeyBHaXRIdWIgfSBmcm9tIFwiLi9naXRodWJcIjtcbmltcG9ydCB0eXBlIHsgSm9iLCBKb2JDYWxsaW5nUmV1c2FibGVXb3JrZmxvdyB9IGZyb20gXCIuL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcIi4vanNvblwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcIi4vcHJvamVjdFwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFJlbm92YXRlYm90XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVub3ZhdGVib3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEhvdyBvZnRlbiB0byBjaGVjayBmb3IgbmV3IHZlcnNpb25zIGFuZCByYWlzZSBwdWxsIHJlcXVlc3RzLlxuICAgKlxuICAgKiBDYW4gYmUgZ2l2ZW4gaW4gQ1JPTiBvciBMQVRFUiBmb3JtYXQsIGFuZCB1c2UgbXVsdGlwbGUgc2NoZWR1bGVzXG4gICAqIChlLmcuIGRpZmZlcmVudCBmb3Igd2Vla2RheXMgYW5kIHdlZWtlbmRzKS4gTXVsdGlwbGUgcnVsZXMgYXJlXG4gICAqIGhhbmRsZXMgYXMgT1IuXG4gICAqXG4gICAqIFNvbWUgbm9ybWFsIHNjaGVkdWxpbmcgdmFsdWVzIGRlZmluZWQgaW4gZW51bSBgUmVub3ZhdGVib3RTY2hlZHVsZUludGVydmFsYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL2NvbmZpZ3VyYXRpb24tb3B0aW9ucy8jc2NoZWR1bGVcbiAgICogQGRlZmF1bHQgW1wiYXQgYW55IHRpbWVcIl1cbiAgICovXG4gIHJlYWRvbmx5IHNjaGVkdWxlSW50ZXJ2YWw/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogWW91IGNhbiB1c2UgdGhlIGBpZ25vcmVgIG9wdGlvbiB0byBjdXN0b21pemUgd2hpY2ggZGVwZW5kZW5jaWVzIGFyZSB1cGRhdGVkLlxuICAgKiBUaGUgaWdub3JlIG9wdGlvbiBzdXBwb3J0cyBqdXN0IHBhY2thZ2UgbmFtZS5cbiAgICogQGRlZmF1bHQgW11cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZ25vcmVzIHVwZGF0ZXMgdG8gYHByb2plbmAuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgc2luY2UgcHJvamVuIHVwZGF0ZXMgbWF5IGNhdXNlIGNoYW5nZXMgaW4gY29tbWl0dGVkIGZpbGVzXG4gICAqIGFuZCBhbnRpLXRhbXBlciBjaGVja3Mgd2lsbCBmYWlsLlxuICAgKlxuICAgKiBQcm9qZW4gdXBncmFkZXMgYXJlIGNvdmVyZWQgdGhyb3VnaCB0aGUgYFByb2plblVwZ3JhZGVgIGNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVQcm9qZW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGxhYmVscyB0byBhcHBseSB0byB0aGUgY3JlYXRlZCBQUidzLlxuICAgKi9cbiAgcmVhZG9ubHkgbGFiZWxzPzogc3RyaW5nW107XG5cbiAgcmVhZG9ubHkgb3ZlcnJpZGVDb25maWc/OiBhbnk7XG5cbiAgcmVhZG9ubHkgbWFya2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTWluaW11bSByZWxlYXNlIGFnZSBmb3IgcGFja2FnZXMgYmVmb3JlIFJlbm92YXRlIHdpbGwgcHJvcG9zZSBhbiB1cGRhdGUuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBzdXBwbHkgY2hhaW4gc2VjdXJpdHkgZmVhdHVyZSB0byBhdm9pZCB1cGRhdGluZyB0byBuZXdseSBwdWJsaXNoZWQsXG4gICAqIHBvdGVudGlhbGx5IG1hbGljaW91cyB2ZXJzaW9ucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL2NvbmZpZ3VyYXRpb24tb3B0aW9ucy8jbWluaW11bXJlbGVhc2VhZ2VcbiAgICogQGRlZmF1bHQgLSBubyBtaW5pbXVtIHJlbGVhc2UgYWdlXG4gICAqL1xuICByZWFkb25seSBtaW5pbXVtUmVsZWFzZUFnZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBhIHJlbGVhc2UgdGltZXN0YW1wIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgYG1pbmltdW1SZWxlYXNlQWdlYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL2NvbmZpZ3VyYXRpb24tb3B0aW9ucy8jbWluaW11bXJlbGVhc2VhZ2ViZWhhdmlvdXJcbiAgICogQGRlZmF1bHQgUmVub3ZhdGVib3RNaW5pbXVtUmVsZWFzZUFnZUJlaGF2aW91ci5USU1FU1RBTVBfUkVRVUlSRURcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlQmVoYXZpb3VyPzogUmVub3ZhdGVib3RNaW5pbXVtUmVsZWFzZUFnZUJlaGF2aW91cjtcbn1cblxuLyoqXG4gKiBIb3cgb2Z0ZW4gdG8gY2hlY2sgZm9yIG5ldyB2ZXJzaW9ucyBhbmQgcmFpc2UgcHVsbCByZXF1ZXN0cyBmb3IgdmVyc2lvblxuICogdXBkYXRlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vcHJlc2V0cy1zY2hlZHVsZS9cbiAqL1xuZXhwb3J0IGVudW0gUmVub3ZhdGVib3RTY2hlZHVsZUludGVydmFsIHtcbiAgLyoqXG4gICAqIFJ1biBhdCBhbnkgdGltZVxuICAgKi9cbiAgQU5ZX1RJTUUgPSBcImF0IGFueSB0aW1lXCIsXG5cbiAgLyoqXG4gICAqIFdlZWtseSBzY2hlZHVsZSBvbiBlYXJseSBtb25kYXkgbW9ybmluZ3NcbiAgICovXG4gIEVBUkxZX01PTkRBWVMgPSBcImJlZm9yZSAzYW0gb24gTW9uZGF5XCIsXG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGRhaWx5XG4gICAqL1xuICBEQUlMWSA9IFwiYmVmb3JlIDJhbVwiLFxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSB3ZWVrbHlcbiAgICovXG4gIFdFRUtMWSA9IEVBUkxZX01PTkRBWVMsXG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIG1vbnRobHlcbiAgICovXG4gIE1PTlRITFkgPSBcImJlZm9yZSAzYW0gb24gdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGhcIixcblxuICAvKipcbiAgICogU2NoZWR1bGUgcXVhcnRlcmx5XG4gICAqL1xuICBRVUFSVEVSTFkgPSBcImV2ZXJ5IDMgbW9udGhzIG9uIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoXCIsXG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIGZvciB3ZWVrZW5kc1xuICAgKi9cbiAgV0VFS0VORFMgPSBcImV2ZXJ5IHdlZWtlbmRcIixcblxuICAvKipcbiAgICogU2NoZWR1bGUgZm9yIHdlZWtkYXlzXG4gICAqL1xuICBXRUVLREFZUyA9IFwiZXZlcnkgd2Vla2RheVwiLFxufVxuXG4vKipcbiAqIEJlaGF2aW91ciB3aGVuIGEgcmVsZWFzZSB0aW1lc3RhbXAgaXMgbWlzc2luZyBmb3IgYG1pbmltdW1SZWxlYXNlQWdlYC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vY29uZmlndXJhdGlvbi1vcHRpb25zLyNtaW5pbXVtcmVsZWFzZWFnZWJlaGF2aW91clxuICovXG5leHBvcnQgZW51bSBSZW5vdmF0ZWJvdE1pbmltdW1SZWxlYXNlQWdlQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEEgcmVsZWFzZSB3aXRob3V0IGEgdGltZXN0YW1wIGlzIG5vdCB0cmVhdGVkIGFzIHN0YWJsZS5cbiAgICovXG4gIFRJTUVTVEFNUF9SRVFVSVJFRCA9IFwidGltZXN0YW1wLXJlcXVpcmVkXCIsXG5cbiAgLyoqXG4gICAqIEEgcmVsZWFzZSB3aXRob3V0IGEgdGltZXN0YW1wIGlzIHRyZWF0ZWQgYXMgc3RhYmxlLlxuICAgKi9cbiAgVElNRVNUQU1QX09QVElPTkFMID0gXCJ0aW1lc3RhbXAtb3B0aW9uYWxcIixcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHJlbm92YXRlYm90IGNvbmZpZ3VyYXRpb24gZm9yIHByb2plbiBwcm9qZWN0LlxuICpcbiAqIElnbm9yZXMgdGhlIHZlcnNpb25zIGNvbnRyb2xsZWQgYnkgUHJvamVuLlxuICovXG5leHBvcnQgY2xhc3MgUmVub3ZhdGVib3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGZpbGUgaG9sZGluZyB0aGUgcmVub3ZhdGVib3QgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3Q6IFByb2plY3Q7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBsaWNpdElnbm9yZXM6IHN0cmluZ1tdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZWR1bGVJbnRlcnZhbDogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsYWJlbHM/OiBzdHJpbmdbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1hcmtlcj86IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdmVycmlkZUNvbmZpZz86IGFueTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltdW1SZWxlYXNlQWdlPzogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWluaW11bVJlbGVhc2VBZ2VCZWhhdmlvdXI/OiBSZW5vdmF0ZWJvdE1pbmltdW1SZWxlYXNlQWdlQmVoYXZpb3VyO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IFJlbm92YXRlYm90T3B0aW9ucyA9IHt9KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLl9wcm9qZWN0ID0gcHJvamVjdDtcbiAgICB0aGlzLmV4cGxpY2l0SWdub3JlcyA9IG9wdGlvbnMuaWdub3JlID8/IFtdO1xuICAgIHRoaXMubGFiZWxzID0gb3B0aW9ucy5sYWJlbHM7XG4gICAgdGhpcy5zY2hlZHVsZUludGVydmFsID0gb3B0aW9ucy5zY2hlZHVsZUludGVydmFsID8/IFtcbiAgICAgIFJlbm92YXRlYm90U2NoZWR1bGVJbnRlcnZhbC5BTllfVElNRSxcbiAgICBdO1xuICAgIChvcHRpb25zLmlnbm9yZVByb2plbiA/PyB0cnVlKSAmJiB0aGlzLmV4cGxpY2l0SWdub3Jlcy5wdXNoKFwicHJvamVuXCIpO1xuICAgIHRoaXMub3ZlcnJpZGVDb25maWcgPSBvcHRpb25zLm92ZXJyaWRlQ29uZmlnID8/IHt9O1xuICAgIHRoaXMubWFya2VyID0gb3B0aW9ucy5tYXJrZXIgPz8gdHJ1ZTtcbiAgICB0aGlzLm1pbmltdW1SZWxlYXNlQWdlID0gb3B0aW9ucy5taW5pbXVtUmVsZWFzZUFnZTtcbiAgICB0aGlzLm1pbmltdW1SZWxlYXNlQWdlQmVoYXZpb3VyID0gb3B0aW9ucy5taW5pbXVtUmVsZWFzZUFnZUJlaGF2aW91cjtcblxuICAgIHRoaXMuZmlsZSA9IG5ldyBKc29uRmlsZSh0aGlzLl9wcm9qZWN0LCBcInJlbm92YXRlLmpzb241XCIsIHtcbiAgICAgIG9iajogKCkgPT4gdGhpcy5jcmVhdGVSZW5vdmF0ZUNvbmZpZ3VyYXRpb24oKSxcbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICAgIG1hcmtlcjogdGhpcy5tYXJrZXIsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlbm92YXRlQ29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCByZW5vdmF0ZUlnbm9yZSA9IFtcbiAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgIHRoaXMuX3Byb2plY3QuZGVwcy5hbGxcbiAgICAgICAgICAuZmlsdGVyKChkZXApID0+IGRlcC52ZXJzaW9uIHx8IGRlcC50eXBlID09PSBEZXBlbmRlbmN5VHlwZS5PVkVSUklERSlcbiAgICAgICAgICAubWFwKChkZXApID0+IGRlcC5uYW1lKVxuICAgICAgICAgIC5jb25jYXQodGhpcy5leHBsaWNpdElnbm9yZXMpLFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgLy8gSWdub3JlIEdpdEh1YiBBY3Rpb24gdXBkYXRlcyBpbiBQcm9qZW4gY3JlYXRlZCB3b3Jrc3BhY2VzXG4gICAgY29uc3QgZ2l0aHViOiBHaXRIdWIgPSAodGhpcy5fcHJvamVjdCBhcyBhbnkpLmdpdGh1YjtcbiAgICBpZiAoZ2l0aHViPy53b3JrZmxvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCBhY3Rpb25zOiBzdHJpbmdbXSA9IGdpdGh1Yi53b3JrZmxvd3NcbiAgICAgICAgLmZsYXRNYXAoKHdvcmtmbG93KSA9PiBPYmplY3QudmFsdWVzKHdvcmtmbG93LmpvYnMpKVxuICAgICAgICAuZmxhdE1hcCgoam9iKSA9PiAoam9iIGFzIEpvYikuc3RlcHMpXG4gICAgICAgIC5tYXAoKHN0ZXApID0+IHN0ZXA/LnVzZXM/LnNwbGl0KFwiQFwiKVswXSlcbiAgICAgICAgLmZpbHRlcigoYWN0aW9uTmFtZSkgPT4gISFhY3Rpb25OYW1lKSBhcyBzdHJpbmdbXTtcblxuICAgICAgY29uc3QgcmV1c2FibGVXb3JrZmxvd3M6IHN0cmluZ1tdID0gZ2l0aHViLndvcmtmbG93c1xuICAgICAgICAuZmxhdE1hcCgod29ya2Zsb3cpID0+IE9iamVjdC52YWx1ZXMod29ya2Zsb3cuam9icykpXG4gICAgICAgIC5mbGF0TWFwKChqb2IpID0+IChqb2IgYXMgSm9iQ2FsbGluZ1JldXNhYmxlV29ya2Zsb3cpLnVzZXMpXG4gICAgICAgIC5tYXAoKHJldXNhYmxlV29ya2Zsb3cpID0+IHJldXNhYmxlV29ya2Zsb3c/LnNwbGl0KFwiQFwiKVswXSk7XG5cbiAgICAgIHJlbm92YXRlSWdub3JlLnB1c2goLi4ubmV3IFNldChhY3Rpb25zKSk7XG4gICAgICByZW5vdmF0ZUlnbm9yZS5wdXNoKC4uLm5ldyBTZXQocmV1c2FibGVXb3JrZmxvd3MpKTtcbiAgICB9XG5cbiAgICBjb25zdCBleHRlbmRzUHJlc2V0cyA9IFtcbiAgICAgIFwiOnByZXNlcnZlU2VtdmVyUmFuZ2VzXCIsXG4gICAgICBcImNvbmZpZzpyZWNvbW1lbmRlZFwiLFxuICAgICAgXCJncm91cDphbGxOb25NYWpvclwiLFxuICAgICAgXCJncm91cDpyZWNvbW1lbmRlZFwiLFxuICAgICAgXCJncm91cDptb25vcmVwb3NcIixcbiAgICBdO1xuXG4gICAgLy8gQWRkIEJpb21lIGN1c3RvbSBtYW5hZ2VyIGlmIEJpb21lIGlzIGNvbmZpZ3VyZWRcbiAgICAvLyBMYXp5IHJlcXVpcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSAocmVub3ZhdGVib3QgLT4gYmlvbWUgLT4gcHJvamVjdCAtPiByZW5vdmF0ZWJvdClcbiAgICBjb25zdCB7IEJpb21lIH0gPSByZXF1aXJlKFwiLi9qYXZhc2NyaXB0L2Jpb21lL2Jpb21lXCIpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICBpZiAoQmlvbWUub2YodGhpcy5fcHJvamVjdCkpIHtcbiAgICAgIGV4dGVuZHNQcmVzZXRzLnB1c2goXCJjdXN0b21NYW5hZ2VyczpiaW9tZVZlcnNpb25zXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbHM6IHRoaXMubGFiZWxzLFxuICAgICAgc2NoZWR1bGU6IHRoaXMuc2NoZWR1bGVJbnRlcnZhbCxcbiAgICAgIG1pbmltdW1SZWxlYXNlQWdlOiB0aGlzLm1pbmltdW1SZWxlYXNlQWdlLFxuICAgICAgbWluaW11bVJlbGVhc2VBZ2VCZWhhdmlvdXI6IHRoaXMubWluaW11bVJlbGVhc2VBZ2VCZWhhdmlvdXIsXG4gICAgICBleHRlbmRzOiBleHRlbmRzUHJlc2V0cyxcbiAgICAgIHBhY2thZ2VSdWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2hEZXBUeXBlczogW1wiZGV2RGVwZW5kZW5jaWVzXCJdLFxuICAgICAgICAgIG1hdGNoVXBkYXRlVHlwZXM6IFtcInBhdGNoXCIsIFwibWlub3JcIl0sXG4gICAgICAgICAgZ3JvdXBOYW1lOiBcImRldkRlcGVuZGVuY2llcyAobm9uLW1ham9yKVwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGlnbm9yZURlcHM6IHJlbm92YXRlSWdub3JlLFxuICAgICAgLi4udGhpcy5vdmVycmlkZUNvbmZpZyxcbiAgICB9O1xuICB9XG59XG4iXX0=