UNPKG

projen

Version:

CDK for software projects

95 lines • 14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GitHubProject = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const auto_approve_1 = require("./auto-approve"); const github_1 = require("./github"); const stale_1 = require("./stale"); const clobber_1 = require("../clobber"); const gitpod_1 = require("../gitpod"); const project_1 = require("../project"); const readme_1 = require("../readme"); const util_1 = require("../util"); const vscode_1 = require("../vscode"); /** * GitHub-based project. * * @deprecated This is a *temporary* class. At the moment, our base project * types such as `NodeProject` and `JavaProject` are derived from this, but we * want to be able to use these project types outside of GitHub as well. One of * the next steps to address this is to abstract workflows so that different * "engines" can be used to implement our CI/CD solutions. */ class GitHubProject extends project_1.Project { static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.github.GitHubProject", version: "0.103.15" }; /** * Access all github components. * * This will be `undefined` for subprojects. */ github; /** * Access all VSCode components. * * This will be `undefined` for subprojects. */ vscode; /** * Access for Gitpod * * This will be `undefined` if gitpod boolean is false */ gitpod; /** * Access for .devcontainer.json (used for GitHub Codespaces) * * This will be `undefined` if devContainer boolean is false */ devContainer; /** * Auto approve set up for this project. */ autoApprove; constructor(options) { super(options); // we only allow these global services to be used in root projects const github = options.github ?? !this.parent; this.github = github ? new github_1.GitHub(this, { projenCredentials: options.projenCredentials, ...options.githubOptions, }) : undefined; const vscode = options.vscode ?? !this.parent; this.vscode = vscode ? new vscode_1.VsCode(this) : undefined; this.gitpod = options.gitpod ? new gitpod_1.Gitpod(this) : undefined; this.devContainer = options.devContainer ? new vscode_1.DevContainer(this) : undefined; if (options.clobber ?? !this.parent) { new clobber_1.Clobber(this); } new readme_1.SampleReadme(this, options.readme); if (options.autoApproveOptions && this.github) { this.autoApprove = new auto_approve_1.AutoApprove(this.github, options.autoApproveOptions); } const stale = options.stale ?? false; if (stale && this.github) { new stale_1.Stale(this.github, options.staleOptions); } } /** * Marks the provided file(s) as being generated. This is achieved using the * github-linguist attributes. Generated files do not count against the * repository statistics and language breakdown. * * @param glob the glob pattern to match (could be a file path). * * @see https://github.com/github/linguist/blob/master/docs/overrides.md */ annotateGenerated(glob) { this.gitattributes.addAttributes((0, util_1.normalizePersistedPath)(glob), "linguist-generated"); } } exports.GitHubProject = GitHubProject; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0aHViLXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0aHViL2dpdGh1Yi1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxpREFBNkM7QUFHN0MscUNBQWtDO0FBSWxDLG1DQUFnQztBQUNoQyx3Q0FBcUM7QUFDckMsc0NBQW1DO0FBRW5DLHdDQUFxQztBQUVyQyxzQ0FBeUM7QUFDekMsa0NBQWlEO0FBQ2pELHNDQUFpRDtBQXNHakQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBTzs7SUFDeEM7Ozs7T0FJRztJQUNhLE1BQU0sQ0FBcUI7SUFFM0M7Ozs7T0FJRztJQUNhLE1BQU0sQ0FBcUI7SUFFM0M7Ozs7T0FJRztJQUNhLE1BQU0sQ0FBcUI7SUFFM0M7Ozs7T0FJRztJQUNhLFlBQVksQ0FBMkI7SUFFdkQ7O09BRUc7SUFDYSxXQUFXLENBQWU7SUFFMUMsWUFBWSxPQUE2QjtRQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixrRUFBa0U7UUFDbEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLGVBQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtnQkFDNUMsR0FBRyxPQUFPLENBQUMsYUFBYTthQUN6QixDQUFDO1lBQ0osQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXBELElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLHFCQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLHFCQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QyxJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUFXLENBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQ1gsT0FBTyxDQUFDLGtCQUFrQixDQUMzQixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1FBQ3JDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QixJQUFJLGFBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksaUJBQWlCLENBQUMsSUFBWTtRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDOUIsSUFBQSw2QkFBc0IsRUFBQyxJQUFJLENBQUMsRUFDNUIsb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDOztBQXZGSCxzQ0F3RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEF1dG9BcHByb3ZlT3B0aW9ucyB9IGZyb20gXCIuL2F1dG8tYXBwcm92ZVwiO1xuaW1wb3J0IHsgQXV0b0FwcHJvdmUgfSBmcm9tIFwiLi9hdXRvLWFwcHJvdmVcIjtcbmltcG9ydCB0eXBlIHsgQXV0b01lcmdlT3B0aW9ucyB9IGZyb20gXCIuL2F1dG8tbWVyZ2VcIjtcbmltcG9ydCB0eXBlIHsgR2l0SHViT3B0aW9ucyB9IGZyb20gXCIuL2dpdGh1YlwiO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSBcIi4vZ2l0aHViXCI7XG5pbXBvcnQgdHlwZSB7IEdpdGh1YkNyZWRlbnRpYWxzIH0gZnJvbSBcIi4vZ2l0aHViLWNyZWRlbnRpYWxzXCI7XG5cbmltcG9ydCB0eXBlIHsgU3RhbGVPcHRpb25zIH0gZnJvbSBcIi4vc3RhbGVcIjtcbmltcG9ydCB7IFN0YWxlIH0gZnJvbSBcIi4vc3RhbGVcIjtcbmltcG9ydCB7IENsb2JiZXIgfSBmcm9tIFwiLi4vY2xvYmJlclwiO1xuaW1wb3J0IHsgR2l0cG9kIH0gZnJvbSBcIi4uL2dpdHBvZFwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi9wcm9qZWN0XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgU2FtcGxlUmVhZG1lUHJvcHMgfSBmcm9tIFwiLi4vcmVhZG1lXCI7XG5pbXBvcnQgeyBTYW1wbGVSZWFkbWUgfSBmcm9tIFwiLi4vcmVhZG1lXCI7XG5pbXBvcnQgeyBub3JtYWxpemVQZXJzaXN0ZWRQYXRoIH0gZnJvbSBcIi4uL3V0aWxcIjtcbmltcG9ydCB7IERldkNvbnRhaW5lciwgVnNDb2RlIH0gZnJvbSBcIi4uL3ZzY29kZVwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBHaXRIdWJQcm9qZWN0YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHaXRIdWJQcm9qZWN0T3B0aW9ucyBleHRlbmRzIFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFkZCBhIEdpdHBvZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0cG9kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIFZTQ29kZSBpbnRlZ3JhdGlvbi5cbiAgICpcbiAgICogRW5hYmxlZCBieSBkZWZhdWx0IGZvciByb290IHByb2plY3RzLiBEaXNhYmxlZCBmb3Igbm9uLXJvb3QgcHJvamVjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHZzY29kZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgaW50ZWdyYXRpb24uXG4gICAqXG4gICAqIEVuYWJsZWQgYnkgZGVmYXVsdCBmb3Igcm9vdCBwcm9qZWN0cy4gRGlzYWJsZWQgZm9yIG5vbi1yb290IHByb2plY3RzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBnaXRodWI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBHaXRIdWIgaW50ZWdyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzZWUgR2l0SHViT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3B0aW9ucz86IEdpdEh1Yk9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZCBhIFZTQ29kZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAodXNlZCBmb3IgR2l0SHViIENvZGVzcGFjZXMpXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkZXZDb250YWluZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBgY2xvYmJlcmAgdGFzayB3aGljaCByZXNldHMgdGhlIHJlcG8gdG8gb3JpZ2luLlxuICAgKiBAZGVmYXVsdCAtIHRydWUsIGJ1dCBmYWxzZSBmb3Igc3VicHJvamVjdHNcbiAgICovXG4gIHJlYWRvbmx5IGNsb2JiZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgUkVBRE1FIHNldHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHsgZmlsZW5hbWU6ICdSRUFETUUubWQnLCBjb250ZW50czogJyMgcmVwbGFjZSB0aGlzJyB9XG4gICAqIEBleGFtcGxlIFwieyBmaWxlbmFtZTogJ3JlYWRtZS5tZCcsIGNvbnRlbnRzOiAnIyB0aXRsZScgfVwiXG4gICAqL1xuICByZWFkb25seSByZWFkbWU/OiBTYW1wbGVSZWFkbWVQcm9wcztcblxuICAvKipcbiAgICogRW5hYmxlIGFuZCBjb25maWd1cmUgdGhlICdhdXRvIGFwcHJvdmUnIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCAtIGF1dG8gYXBwcm92ZSBpcyBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b0FwcHJvdmVPcHRpb25zPzogQXV0b0FwcHJvdmVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgYXV0b21hdGljIG1lcmdpbmcgb24gR2l0SHViLiBIYXMgbm8gZWZmZWN0IGlmIGBnaXRodWIubWVyZ2lmeWBcbiAgICogaXMgc2V0IHRvIGZhbHNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhdXRvTWVyZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgYXV0b21hdGljIG1lcmdpbmcgb24gR2l0SHViLiBIYXMgbm8gZWZmZWN0IGlmXG4gICAqIGBnaXRodWIubWVyZ2lmeWAgb3IgYGF1dG9NZXJnZWAgaXMgc2V0IHRvIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHNlZSBkZWZhdWx0cyBpbiBgQXV0b01lcmdlT3B0aW9uc2BcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NZXJnZU9wdGlvbnM/OiBBdXRvTWVyZ2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBdXRvLWNsb3NlIHN0YWxlIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0cy4gVG8gZGlzYWJsZSBzZXQgYHN0YWxlYCB0byBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHNlZSBkZWZhdWx0cyBpbiBgU3RhbGVPcHRpb25zYFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhbGVPcHRpb25zPzogU3RhbGVPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBdXRvLWNsb3NlIG9mIHN0YWxlIGlzc3VlcyBhbmQgcHVsbCByZXF1ZXN0LiBTZWUgYHN0YWxlT3B0aW9uc2AgZm9yIG9wdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdGFsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENob29zZSBhIG1ldGhvZCBvZiBwcm92aWRpbmcgR2l0SHViIEFQSSBhY2Nlc3MgZm9yIHByb2plbiB3b3JrZmxvd3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlIGEgcGVyc29uYWwgYWNjZXNzIHRva2VuIG5hbWVkIFBST0pFTl9HSVRIVUJfVE9LRU5cbiAgICovXG4gIHJlYWRvbmx5IHByb2plbkNyZWRlbnRpYWxzPzogR2l0aHViQ3JlZGVudGlhbHM7XG59XG5cbi8qKlxuICogR2l0SHViLWJhc2VkIHByb2plY3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBhICp0ZW1wb3JhcnkqIGNsYXNzLiBBdCB0aGUgbW9tZW50LCBvdXIgYmFzZSBwcm9qZWN0XG4gKiB0eXBlcyBzdWNoIGFzIGBOb2RlUHJvamVjdGAgYW5kIGBKYXZhUHJvamVjdGAgYXJlIGRlcml2ZWQgZnJvbSB0aGlzLCBidXQgd2VcbiAqIHdhbnQgdG8gYmUgYWJsZSB0byB1c2UgdGhlc2UgcHJvamVjdCB0eXBlcyBvdXRzaWRlIG9mIEdpdEh1YiBhcyB3ZWxsLiBPbmUgb2ZcbiAqIHRoZSBuZXh0IHN0ZXBzIHRvIGFkZHJlc3MgdGhpcyBpcyB0byBhYnN0cmFjdCB3b3JrZmxvd3Mgc28gdGhhdCBkaWZmZXJlbnRcbiAqIFwiZW5naW5lc1wiIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBvdXIgQ0kvQ0Qgc29sdXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgR2l0SHViUHJvamVjdCBleHRlbmRzIFByb2plY3Qge1xuICAvKipcbiAgICogQWNjZXNzIGFsbCBnaXRodWIgY29tcG9uZW50cy5cbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIGB1bmRlZmluZWRgIGZvciBzdWJwcm9qZWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnaXRodWI6IEdpdEh1YiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQWNjZXNzIGFsbCBWU0NvZGUgY29tcG9uZW50cy5cbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIGB1bmRlZmluZWRgIGZvciBzdWJwcm9qZWN0cy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2c2NvZGU6IFZzQ29kZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQWNjZXNzIGZvciBHaXRwb2RcbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIGdpdHBvZCBib29sZWFuIGlzIGZhbHNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2l0cG9kOiBHaXRwb2QgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFjY2VzcyBmb3IgLmRldmNvbnRhaW5lci5qc29uICh1c2VkIGZvciBHaXRIdWIgQ29kZXNwYWNlcylcbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIGB1bmRlZmluZWRgIGlmIGRldkNvbnRhaW5lciBib29sZWFuIGlzIGZhbHNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGV2Q29udGFpbmVyOiBEZXZDb250YWluZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEF1dG8gYXBwcm92ZSBzZXQgdXAgZm9yIHRoaXMgcHJvamVjdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRvQXBwcm92ZT86IEF1dG9BcHByb3ZlO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEdpdEh1YlByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvLyB3ZSBvbmx5IGFsbG93IHRoZXNlIGdsb2JhbCBzZXJ2aWNlcyB0byBiZSB1c2VkIGluIHJvb3QgcHJvamVjdHNcbiAgICBjb25zdCBnaXRodWIgPSBvcHRpb25zLmdpdGh1YiA/PyAhdGhpcy5wYXJlbnQ7XG4gICAgdGhpcy5naXRodWIgPSBnaXRodWJcbiAgICAgID8gbmV3IEdpdEh1Yih0aGlzLCB7XG4gICAgICAgICAgcHJvamVuQ3JlZGVudGlhbHM6IG9wdGlvbnMucHJvamVuQ3JlZGVudGlhbHMsXG4gICAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zLFxuICAgICAgICB9KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB2c2NvZGUgPSBvcHRpb25zLnZzY29kZSA/PyAhdGhpcy5wYXJlbnQ7XG4gICAgdGhpcy52c2NvZGUgPSB2c2NvZGUgPyBuZXcgVnNDb2RlKHRoaXMpIDogdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5naXRwb2QgPSBvcHRpb25zLmdpdHBvZCA/IG5ldyBHaXRwb2QodGhpcykgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5kZXZDb250YWluZXIgPSBvcHRpb25zLmRldkNvbnRhaW5lclxuICAgICAgPyBuZXcgRGV2Q29udGFpbmVyKHRoaXMpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChvcHRpb25zLmNsb2JiZXIgPz8gIXRoaXMucGFyZW50KSB7XG4gICAgICBuZXcgQ2xvYmJlcih0aGlzKTtcbiAgICB9XG5cbiAgICBuZXcgU2FtcGxlUmVhZG1lKHRoaXMsIG9wdGlvbnMucmVhZG1lKTtcblxuICAgIGlmIChvcHRpb25zLmF1dG9BcHByb3ZlT3B0aW9ucyAmJiB0aGlzLmdpdGh1Yikge1xuICAgICAgdGhpcy5hdXRvQXBwcm92ZSA9IG5ldyBBdXRvQXBwcm92ZShcbiAgICAgICAgdGhpcy5naXRodWIsXG4gICAgICAgIG9wdGlvbnMuYXV0b0FwcHJvdmVPcHRpb25zLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFsZSA9IG9wdGlvbnMuc3RhbGUgPz8gZmFsc2U7XG4gICAgaWYgKHN0YWxlICYmIHRoaXMuZ2l0aHViKSB7XG4gICAgICBuZXcgU3RhbGUodGhpcy5naXRodWIsIG9wdGlvbnMuc3RhbGVPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFya3MgdGhlIHByb3ZpZGVkIGZpbGUocykgYXMgYmVpbmcgZ2VuZXJhdGVkLiBUaGlzIGlzIGFjaGlldmVkIHVzaW5nIHRoZVxuICAgKiBnaXRodWItbGluZ3Vpc3QgYXR0cmlidXRlcy4gR2VuZXJhdGVkIGZpbGVzIGRvIG5vdCBjb3VudCBhZ2FpbnN0IHRoZVxuICAgKiByZXBvc2l0b3J5IHN0YXRpc3RpY3MgYW5kIGxhbmd1YWdlIGJyZWFrZG93bi5cbiAgICpcbiAgICogQHBhcmFtIGdsb2IgdGhlIGdsb2IgcGF0dGVybiB0byBtYXRjaCAoY291bGQgYmUgYSBmaWxlIHBhdGgpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvbGluZ3Vpc3QvYmxvYi9tYXN0ZXIvZG9jcy9vdmVycmlkZXMubWRcbiAgICovXG4gIHB1YmxpYyBhbm5vdGF0ZUdlbmVyYXRlZChnbG9iOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdpdGF0dHJpYnV0ZXMuYWRkQXR0cmlidXRlcyhcbiAgICAgIG5vcm1hbGl6ZVBlcnNpc3RlZFBhdGgoZ2xvYiksXG4gICAgICBcImxpbmd1aXN0LWdlbmVyYXRlZFwiLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==