UNPKG

projen

Version:

CDK for software projects

107 lines • 19.5 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.JsiiProject = exports.Stability = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const jsii_build_1 = require("./jsii-build"); const typescript_1 = require("../typescript"); const util_1 = require("../util"); const EMAIL_REGEX = /^[^\s@]+@[^\s@]+$/; const URL_REGEX = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/; var Stability; (function (Stability) { Stability["EXPERIMENTAL"] = "experimental"; Stability["STABLE"] = "stable"; Stability["DEPRECATED"] = "deprecated"; })(Stability || (exports.Stability = Stability = {})); /** * Multi-language jsii library project * * @pjid jsii */ class JsiiProject extends typescript_1.TypeScriptProject { constructor(options) { const { authorEmail, authorUrl } = parseAuthorAddress(options); const defaultOptions = { repository: options.repositoryUrl, authorName: options.author, authorEmail, authorUrl, }; const forcedOptions = { releaseToNpm: false, // we have a jsii release workflow disableTsconfig: true, // jsii generates its own tsconfig.json docgen: false, // we use jsii-docgen here so disable typescript docgen }; const mergedOptions = (0, util_1.deepMerge)([ defaultOptions, options, forcedOptions, ]); super(mergedOptions); // Apply the jsii mixin using the constructs .with() pattern this.with(new jsii_build_1.JsiiBuild({ publishToMaven: options.publishToMaven, publishToPypi: options.publishToPypi ?? options.python, publishToGo: options.publishToGo, publishToNuget: options.publishToNuget ?? options.dotnet, compat: options.compat, compatIgnore: options.compatIgnore, excludeTypescript: options.excludeTypescript, docgenFilePath: options.docgenFilePath, compressAssembly: options.compressAssembly, jsiiVersion: options.jsiiVersion, stability: options.stability, docgen: options.docgen, releaseToNpm: options.releaseToNpm, npmTrustedPublishing: options.npmTrustedPublishing, codeArtifactOptions: options.codeArtifactOptions, workflowNodeVersion: this.nodeVersion, workflowBootstrapSteps: this.workflowBootstrapSteps, }, { ...this.getJobRunsOnConfig(options), ...(options.workflowContainerImage ? { container: { image: options.workflowContainerImage } } : {}), })); } /** * Generates the runs-on config for Jobs. * Throws error if 'runsOn' and 'runsOnGroup' are both set. * * @param options - 'runsOn' or 'runsOnGroup'. */ getJobRunsOnConfig(options) { return options.workflowRunsOnGroup ? { runsOnGroup: options.workflowRunsOnGroup } : options.workflowRunsOn ? { runsOn: options.workflowRunsOn } : {}; } } exports.JsiiProject = JsiiProject; _a = JSII_RTTI_SYMBOL_1; JsiiProject[_a] = { fqn: "projen.cdk.JsiiProject", version: "0.99.70" }; function parseAuthorAddress(options) { let authorEmail = options.authorEmail; let authorUrl = options.authorUrl; if (options.authorAddress) { if (options.authorEmail && options.authorEmail !== options.authorAddress) { throw new Error("authorEmail is deprecated and cannot be used in conjunction with authorAddress"); } if (options.authorUrl && options.authorUrl !== options.authorAddress) { throw new Error("authorUrl is deprecated and cannot be used in conjunction with authorAddress."); } if (EMAIL_REGEX.test(options.authorAddress)) { authorEmail = options.authorAddress; } else if (URL_REGEX.test(options.authorAddress)) { authorUrl = options.authorAddress; } else { throw new Error(`authorAddress must be either an email address or a URL: ${options.authorAddress}`); } } return { authorEmail, authorUrl }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Nkay9qc2lpLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBeUM7QUFRekMsOENBQWtEO0FBQ2xELGtDQUFvQztBQUVwQyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FDYixzTEFBc0wsQ0FBQztBQWtIekwsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDBDQUE2QixDQUFBO0lBQzdCLDhCQUFpQixDQUFBO0lBQ2pCLHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEI7QUFtREQ7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLDhCQUFpQjtJQUNoRCxZQUFZLE9BQTJCO1FBQ3JDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0QsTUFBTSxjQUFjLEdBQXNDO1lBQ3hELFVBQVUsRUFBRSxPQUFPLENBQUMsYUFBYTtZQUNqQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDMUIsV0FBVztZQUNYLFNBQVM7U0FDVixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUc7WUFDcEIsWUFBWSxFQUFFLEtBQUssRUFBRSxrQ0FBa0M7WUFDdkQsZUFBZSxFQUFFLElBQUksRUFBRSx1Q0FBdUM7WUFDOUQsTUFBTSxFQUFFLEtBQUssRUFBRSx1REFBdUQ7U0FDdkUsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0JBQVMsRUFBQztZQUM5QixjQUFjO1lBQ2QsT0FBTztZQUNQLGFBQWE7U0FDZCxDQUE2QixDQUFDO1FBRS9CLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVyQiw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLElBQUksQ0FDUCxJQUFJLHNCQUFTLENBQ1g7WUFDRSxj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Q0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNpaUJ1aWxkIH0gZnJvbSBcIi4vanNpaS1idWlsZFwiO1xuaW1wb3J0IHR5cGUge1xuICBHb1B1Ymxpc2hPcHRpb25zLFxuICBNYXZlblB1Ymxpc2hPcHRpb25zLFxuICBOdWdldFB1Ymxpc2hPcHRpb25zLFxuICBQeVBpUHVibGlzaE9wdGlvbnMsXG59IGZyb20gXCIuLi9yZWxlYXNlXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdCB9IGZyb20gXCIuLi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiLi4vdXRpbFwiO1xuXG5jb25zdCBFTUFJTF9SRUdFWCA9IC9eW15cXHNAXStAW15cXHNAXSskLztcbmNvbnN0IFVSTF9SRUdFWCA9XG4gIC8oKChbQS1aYS16XXszLDl9Oig/OlxcL1xcLyk/KSg/OltcXC07OiY9XFwrXFwkLFxcd10rQCk/W0EtWmEtejAtOVxcLlxcLV0rfCg/Ond3d1xcLnxbXFwtOzomPVxcK1xcJCxcXHddK0ApW0EtWmEtejAtOVxcLlxcLV0rKSgoPzpcXC9bXFwrfiVcXC9cXC5cXHdcXC1fXSopP1xcPz8oPzpbXFwtXFwrPSY7JUBcXC5cXHdfXSopIz8oPzpbXFwuXFwhXFwvXFxcXFxcd10qKSk/KS87XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaVByb2plY3RPcHRpb25zIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiLlwiXG4gICAqL1xuICByZWFkb25seSByb290ZGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXQgcmVwb3NpdG9yeSBVUkwuXG4gICAqIEBkZWZhdWx0ICRHSVRfUkVNT1RFXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5VXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGF1dGhvci5cbiAgICogQGRlZmF1bHQgJEdJVF9VU0VSX05BTUVcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCBvciBVUkwgb2YgdGhlIGxpYnJhcnkgYXV0aG9yLlxuICAgKiBAZGVmYXVsdCAkR0lUX1VTRVJfRU1BSUxcbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvckFkZHJlc3M6IHN0cmluZztcblxuICAvKipcbiAgICogUHVibGlzaCB0byBtYXZlblxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb01hdmVuPzogSnNpaUphdmFUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gcHlwaVxuICAgKiBAZGVmYXVsdCAtIG5vIHB1Ymxpc2hpbmdcbiAgICovXG4gIHJlYWRvbmx5IHB1Ymxpc2hUb1B5cGk/OiBKc2lpUHl0aG9uVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBQdWJsaXNoIEdvIGJpbmRpbmdzIHRvIGEgZ2l0IHJlcG9zaXRvcnkuXG4gICAqIEBkZWZhdWx0IC0gbm8gcHVibGlzaGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcHVibGlzaFRvR28/OiBKc2lpR29UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgcHVibGlzaFRvUHlQaWBcbiAgICovXG4gIHJlYWRvbmx5IHB5dGhvbj86IEpzaWlQeXRob25UYXJnZXQ7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggdG8gTnVHZXRcbiAgICogQGRlZmF1bHQgLSBubyBwdWJsaXNoaW5nXG4gICAqL1xuICByZWFkb25seSBwdWJsaXNoVG9OdWdldD86IEpzaWlEb3ROZXRUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgcHVibGlzaFRvTnVnZXRgXG4gICAqL1xuICByZWFkb25seSBkb3RuZXQ/OiBKc2lpRG90TmV0VGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBBdXRvbWF0aWNhbGx5IHJ1biBBUEkgY29tcGF0aWJpbGl0eSB0ZXN0IGFnYWluc3QgdGhlIGxhdGVzdCB2ZXJzaW9uIHB1Ymxpc2hlZCB0byBucG0gYWZ0ZXIgY29tcGlsYXRpb24uXG4gICAqXG4gICAqIC0gWW91IGNhbiBtYW51YWxseSBydW4gY29tcGF0aWJpbGl0eSB0ZXN0cyB1c2luZyBgeWFybiBjb21wYXRgIGlmIHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC5cbiAgICogLSBZb3UgY2FuIGlnbm9yZSBjb21wYXRpYmlsaXR5IGZhaWx1cmVzIGJ5IGFkZGluZyBsaW5lcyB0byBhIFwiLmNvbXBhdGlnbm9yZVwiIGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb21wYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBpZ25vcmUgZmlsZSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgdGVzdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiLmNvbXBhdGlnbm9yZVwiXG4gICAqL1xuICByZWFkb25seSBjb21wYXRJZ25vcmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYSBsaXN0IG9mIGdsb2IgcGF0dGVybnMuIEZpbGVzIG1hdGNoaW5nIGFueSBvZiB0aG9zZSBwYXR0ZXJucyB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgaW5wdXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGpzaWkgd2lsbCBpbmNsdWRlIGFsbCAqLnRzIGZpbGVzIChleGNlcHQgLmQudHMgZmlsZXMpIGluIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIGlucHV0LlxuICAgKiBUaGlzIGNhbiBiZSBwcm9ibGVtYXRpYyBmb3IgZXhhbXBsZSB3aGVuIHRoZSBwYWNrYWdlJ3MgYnVpbGQgb3IgdGVzdCBwcm9jZWR1cmUgZ2VuZXJhdGVzIC50cyBmaWxlc1xuICAgKiB0aGF0IGNhbm5vdCBiZSBjb21waWxlZCB3aXRoIGpzaWkncyBjb21waWxlciBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVUeXBlc2NyaXB0Pzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEZpbGUgcGF0aCBmb3IgZ2VuZXJhdGVkIGRvY3MuXG4gICAqIEBkZWZhdWx0IFwiQVBJLm1kXCJcbiAgICovXG4gIHJlYWRvbmx5IGRvY2dlbkZpbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWl0IGEgY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBhc3NlbWJseVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcHJlc3NBc3NlbWJseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGpzaWkgY29tcGlsZXIgdG8gdXNlLlxuICAgKlxuICAgKiBTZXQgdG8gXCIqXCIgaWYgeW91IHdhbnQgdG8gbWFudWFsbHkgbWFuYWdlIHRoZSB2ZXJzaW9uIG9mIGpzaWkgaW4geW91clxuICAgKiBwcm9qZWN0IGJ5IG1hbmFnaW5nIHVwZGF0ZXMgdG8gYHBhY2thZ2UuanNvbmAgb24geW91ciBvd24uXG4gICAqXG4gICAqIE5PVEU6IFRoZSBqc2lpIGNvbXBpbGVyIHJlbGVhc2VzIHNpbmNlIDUuMC4wIGFyZSBub3Qgc2VtYW50aWNhbGx5IHZlcnNpb25lZFxuICAgKiBhbmQgc2hvdWxkIHJlbWFpbiBvbiB0aGUgc2FtZSBtaW5vciwgc28gd2UgcmVjb21tZW5kIHVzaW5nIGEgYH5gIGRlcGVuZGVuY3lcbiAgICogKGUuZy4gYH41LjAuMGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIn41LjkuMFwiXG4gICAqIEBwam5ldyBcIn41LjkuMFwiXG4gICAqL1xuICByZWFkb25seSBqc2lpVmVyc2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gU3RhYmlsaXR5IHtcbiAgRVhQRVJJTUVOVEFMID0gXCJleHBlcmltZW50YWxcIixcbiAgU1RBQkxFID0gXCJzdGFibGVcIixcbiAgREVQUkVDQVRFRCA9IFwiZGVwcmVjYXRlZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzaWlKYXZhVGFyZ2V0IGV4dGVuZHMgTWF2ZW5QdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGphdmFQYWNrYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hdmVuR3JvdXBJZDogc3RyaW5nO1xuICByZWFkb25seSBtYXZlbkFydGlmYWN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc2lpUHl0aG9uVGFyZ2V0IGV4dGVuZHMgUHlQaVB1Ymxpc2hPcHRpb25zIHtcbiAgcmVhZG9ubHkgZGlzdE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNpaURvdE5ldFRhcmdldCBleHRlbmRzIE51Z2V0UHVibGlzaE9wdGlvbnMge1xuICByZWFkb25seSBkb3ROZXROYW1lc3BhY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGljb25Vcmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogR28gdGFyZ2V0IGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKc2lpR29UYXJnZXQgZXh0ZW5kcyBHb1B1Ymxpc2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YXJnZXQgcmVwb3NpdG9yeSBpbiB3aGljaCB0aGlzIG1vZHVsZSB3aWxsIGJlIHB1Ymxpc2hlZCAoZS5nLiBnaXRodWIuY29tL293bmVyL3JlcG8pLlxuICAgKlxuICAgKiBUaGUgbW9kdWxlIGl0c2VsZiB3aWxsIGFsd2F5cyBiZSBwdWJsaXNoZWQgdW5kZXIgYSBzdWJkaXJlY3RvcnkgbmFtZWQgYWNjb3JkaW5nXG4gICAqIHRvIHRoZSBgcGFja2FnZU5hbWVgIG9mIHRoZSBtb2R1bGUgKGUuZy4gZ2l0aHViLmNvbS9mb28vYmFyL3BrZykuXG4gICAqXG4gICAqIEBleGFtcGxlIGdpdGh1Yi5jb20vb3duZXIvcmVwb1xuICAgKi9cbiAgcmVhZG9ubHkgbW9kdWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgR28gcGFja2FnZSBuYW1lLlxuICAgKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCBwYWNrYWdlIG5hbWUgd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIEphdmFTY3JpcHQgbW9kdWxlIG5hbWVcbiAgICogYnkgcmVtb3Zpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIChlLmcuIEBwcm9qZW4vZm9vLWJhciB3aWxsIGJlIHByb2plbmZvb2JhcikuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIHRoZSBKYXZhU2NyaXB0IG1vZHVsZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdWZmaXggYXBwZW5kZWQgYXQgdGhlIGVuZCBvZiB0aGUgbW9kdWxlIHZlcnNpb24gKGUuZyBgXCItZGV2cHJlZml4XCJgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uU3VmZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE11bHRpLWxhbmd1YWdlIGpzaWkgbGlicmFyeSBwcm9qZWN0XG4gKlxuICogQHBqaWQganNpaVxuICovXG5leHBvcnQgY2xhc3MgSnNpaVByb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEpzaWlQcm9qZWN0T3B0aW9ucykge1xuICAgIGNvbnN0IHsgYXV0aG9yRW1haWwsIGF1dGhvclVybCB9ID0gcGFyc2VBdXRob3JBZGRyZXNzKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IFBhcnRpYWw8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zPiA9IHtcbiAgICAgIHJlcG9zaXRvcnk6IG9wdGlvbnMucmVwb3NpdG9yeVVybCxcbiAgICAgIGF1dGhvck5hbWU6IG9wdGlvbnMuYXV0aG9yLFxuICAgICAgYXV0aG9yRW1haWwsXG4gICAgICBhdXRob3JVcmwsXG4gICAgfTtcblxuICAgIGNvbnN0IGZvcmNlZE9wdGlvbnMgPSB7XG4gICAgICByZWxlYXNlVG9OcG06IGZhbHNlLCAvLyB3ZSBoYXZlIGEganNpaSByZWxlYXNlIHdvcmtmbG93XG4gICAgICBkaXNhYmxlVHNjb25maWc6IHRydWUsIC8vIGpzaWkgZ2VuZXJhdGVzIGl0cyBvd24gdHNjb25maWcuanNvblxuICAgICAgZG9jZ2VuOiBmYWxzZSwgLy8gd2UgdXNlIGpzaWktZG9jZ2VuIGhlcmUgc28gZGlzYWJsZSB0eXBlc2NyaXB0IGRvY2dlblxuICAgIH07XG5cbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gZGVlcE1lcmdlKFtcbiAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGZvcmNlZE9wdGlvbnMsXG4gICAgXSkgYXMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zO1xuXG4gICAgc3VwZXIobWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAvLyBBcHBseSB0aGUganNpaSBtaXhpbiB1c2luZyB0aGUgY29uc3RydWN0cyAud2l0aCgpIHBhdHRlcm5cbiAgICB0aGlzLndpdGgoXG4gICAgICBuZXcgSnNpaUJ1aWxkKFxuICAgICAgICB7XG4gICAgICAgICAgcHVibGlzaFRvTWF2ZW46IG9wdGlvbnMucHVibGlzaFRvTWF2ZW4sXG4gICAgICAgICAgcHVibGlzaFRvUHlwaTogb3B0aW9ucy5wdWJsaXNoVG9QeXBpID8/IG9wdGlvbnMucHl0aG9uLFxuICAgICAgICAgIHB1Ymxpc2hUb0dvOiBvcHRpb25zLnB1Ymxpc2hUb0dvLFxuICAgICAgICAgIHB1Ymxpc2hUb051Z2V0OiBvcHRpb25zLnB1Ymxpc2hUb051Z2V0ID8/IG9wdGlvbnMuZG90bmV0LFxuICAgICAgICAgIGNvbXBhdDogb3B0aW9ucy5jb21wYXQsXG4gICAgICAgICAgY29tcGF0SWdub3JlOiBvcHRpb25zLmNvbXBhdElnbm9yZSxcbiAgICAgICAgICBleGNsdWRlVHlwZXNjcmlwdDogb3B0aW9ucy5leGNsdWRlVHlwZXNjcmlwdCxcbiAgICAgICAgICBkb2NnZW5GaWxlUGF0aDogb3B0aW9ucy5kb2NnZW5GaWxlUGF0aCxcbiAgICAgICAgICBjb21wcmVzc0Fzc2VtYmx5OiBvcHRpb25zLmNvbXByZXNzQXNzZW1ibHksXG4gICAgICAgICAganNpaVZlcnNpb246IG9wdGlvbnMuanNpaVZlcnNpb24sXG4gICAgICAgICAgc3RhYmlsaXR5OiBvcHRpb25zLnN0YWJpbGl0eSxcbiAgICAgICAgICBkb2NnZW46IG9wdGlvbnMuZG9jZ2VuLFxuICAgICAgICAgIHJlbGVhc2VUb05wbTogb3B0aW9ucy5yZWxlYXNlVG9OcG0sXG4gICAgICAgICAgbnBtVHJ1c3RlZFB1Ymxpc2hpbmc6IG9wdGlvbnMubnBtVHJ1c3RlZFB1Ymxpc2hpbmcsXG4gICAgICAgICAgY29kZUFydGlmYWN0T3B0aW9uczogb3B0aW9ucy5jb2RlQXJ0aWZhY3RPcHRpb25zLFxuICAgICAgICAgIHdvcmtmbG93Tm9kZVZlcnNpb246IHRoaXMubm9kZVZlcnNpb24sXG4gICAgICAgICAgd29ya2Zsb3dCb290c3RyYXBTdGVwczogdGhpcy53b3JrZmxvd0Jvb3RzdHJhcFN0ZXBzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXRKb2JSdW5zT25Db25maWcob3B0aW9ucyksXG4gICAgICAgICAgLi4uKG9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZVxuICAgICAgICAgICAgPyB7IGNvbnRhaW5lcjogeyBpbWFnZTogb3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlIH0gfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBydW5zLW9uIGNvbmZpZyBmb3IgSm9icy5cbiAgICogVGhyb3dzIGVycm9yIGlmICdydW5zT24nIGFuZCAncnVuc09uR3JvdXAnIGFyZSBib3RoIHNldC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSAncnVuc09uJyBvciAncnVuc09uR3JvdXAnLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRKb2JSdW5zT25Db25maWcob3B0aW9uczogSnNpaVByb2plY3RPcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMud29ya2Zsb3dSdW5zT25Hcm91cFxuICAgICAgPyB7IHJ1bnNPbkdyb3VwOiBvcHRpb25zLndvcmtmbG93UnVuc09uR3JvdXAgfVxuICAgICAgOiBvcHRpb25zLndvcmtmbG93UnVuc09uXG4gICAgICAgID8geyBydW5zT246IG9wdGlvbnMud29ya2Zsb3dSdW5zT24gfVxuICAgICAgICA6IHt9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXV0aG9yQWRkcmVzcyhvcHRpb25zOiBKc2lpUHJvamVjdE9wdGlvbnMpIHtcbiAgbGV0IGF1dGhvckVtYWlsID0gb3B0aW9ucy5hdXRob3JFbWFpbDtcbiAgbGV0IGF1dGhvclVybCA9IG9wdGlvbnMuYXV0aG9yVXJsO1xuICBpZiAob3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgaWYgKG9wdGlvbnMuYXV0aG9yRW1haWwgJiYgb3B0aW9ucy5hdXRob3JFbWFpbCAhPT0gb3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYXV0aG9yRW1haWwgaXMgZGVwcmVjYXRlZCBhbmQgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhdXRob3JBZGRyZXNzXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmF1dGhvclVybCAmJiBvcHRpb25zLmF1dGhvclVybCAhPT0gb3B0aW9ucy5hdXRob3JBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYXV0aG9yVXJsIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYXV0aG9yQWRkcmVzcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKEVNQUlMX1JFR0VYLnRlc3Qob3B0aW9ucy5hdXRob3JBZGRyZXNzKSkge1xuICAgICAgYXV0aG9yRW1haWwgPSBvcHRpb25zLmF1dGhvckFkZHJlc3M7XG4gICAgfSBlbHNlIGlmIChVUkxfUkVHRVgudGVzdChvcHRpb25zLmF1dGhvckFkZHJlc3MpKSB7XG4gICAgICBhdXRob3JVcmwgPSBvcHRpb25zLmF1dGhvckFkZHJlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGF1dGhvckFkZHJlc3MgbXVzdCBiZSBlaXRoZXIgYW4gZW1haWwgYWRkcmVzcyBvciBhIFVSTDogJHtvcHRpb25zLmF1dGhvckFkZHJlc3N9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IGF1dGhvckVtYWlsLCBhdXRob3JVcmwgfTtcbn1cbiJdfQ==