construct-hub 0.4.408 → 0.4.409
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2 -2
- package/lib/construct-hub.js +1 -1
- package/lib/package-sources/code-artifact.js +1 -1
- package/lib/package-sources/npmjs/couch-changes.lambda-shared.js +6 -4
- package/lib/package-sources/npmjs/npm-js-follower.lambda.bundle/index.js +8 -4
- package/lib/package-sources/npmjs/npm-js-follower.lambda.bundle/index.js.map +2 -2
- package/lib/package-sources/npmjs/npm-js-follower.lambda.js +2 -2
- package/lib/package-sources/npmjs.js +1 -1
- package/lib/package-tag/index.js +3 -3
- package/lib/package-tag-group/index.js +2 -2
- package/lib/preload-file/index.js +1 -1
- package/lib/s3/storage.js +1 -1
- package/lib/spdx-license.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
@@ -20923,6 +20923,6 @@
|
|
20923
20923
|
"symbolId": "src/package-sources/npmjs:NpmJsProps"
|
20924
20924
|
}
|
20925
20925
|
},
|
20926
|
-
"version": "0.4.
|
20927
|
-
"fingerprint": "
|
20926
|
+
"version": "0.4.409",
|
20927
|
+
"fingerprint": "NuFR9A7BKdUFVeRvoffiFX4CaRtnfXjdnYaWqZOQLdo="
|
20928
20928
|
}
|
package/lib/construct-hub.js
CHANGED
@@ -393,7 +393,7 @@ class ConstructHub extends constructs_1.Construct {
|
|
393
393
|
}
|
394
394
|
exports.ConstructHub = ConstructHub;
|
395
395
|
_a = JSII_RTTI_SYMBOL_1;
|
396
|
-
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.
|
396
|
+
ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.409" };
|
397
397
|
/**
|
398
398
|
* How possibly risky operations (such as doc-generation, which requires
|
399
399
|
* installing the indexed packages in order to trans-literate sample code) are
|
@@ -278,5 +278,5 @@ class CodeArtifact {
|
|
278
278
|
}
|
279
279
|
exports.CodeArtifact = CodeArtifact;
|
280
280
|
_a = JSII_RTTI_SYMBOL_1;
|
281
|
-
CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.
|
281
|
+
CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.409" };
|
282
282
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFRb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QyxvRkFBK0U7QUFDL0Usb0ZBTWdEO0FBQ2hELDJDQUFpRDtBQWNqRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENB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LFVBQVUsK0RBQW1DO1lBQzdDLFNBQVMsRUFBRSwyQ0FBaUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2VEgsb0NBd1RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBBd3MsIER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgR3JhcGhXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBNZXRyaWMsXG4gIE1ldHJpY09wdGlvbnMsXG4gIFN0YXRpc3RpYyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuUmVwb3NpdG9yeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYXJ0aWZhY3QnO1xuaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBJQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgY29kZUFydGlmYWN0UmVwb3NpdG9yeVVybCxcbiAgbGFtYmRhRnVuY3Rpb25VcmwsXG4gIGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsLFxuICBzcXNRdWV1ZVVybCxcbn0gZnJvbSAnLi4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuLi9tZXRyaWMtdXRpbHMnO1xuaW1wb3J0IHR5cGUge1xuICBJUGFja2FnZVNvdXJjZSxcbiAgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLFxuICBQYWNrYWdlU291cmNlQmluZFJlc3VsdCxcbn0gZnJvbSAnLi4vcGFja2FnZS1zb3VyY2UnO1xuaW1wb3J0IHsgQ29kZUFydGlmYWN0Rm9yd2FyZGVyIH0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QvY29kZS1hcnRpZmFjdC1mb3J3YXJkZXInO1xuaW1wb3J0IHtcbiAgTUVUUklDU19OQU1FU1BBQ0UsXG4gIE1ldHJpY05hbWUsXG4gIERPTUFJTl9OQU1FX0RJTUVOU0lPTixcbiAgRE9NQUlOX09XTkVSX0RJTUVOU0lPTixcbiAgUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTixcbn0gZnJvbSAnLi9jb2RlYXJ0aWZhY3QvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuaW1wb3J0IHsgUzNTdG9yYWdlRmFjdG9yeSB9IGZyb20gJy4uL3MzL3N0b3JhZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVBcnRpZmFjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDb2RlQXJ0aWZhY3QgcmVwb3NpdG9yeSB3aGVyZSBwYWNrYWdlcyBhcmUgb2J0YWluZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IENmblJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgd2hlcmUgcGFja2FnZXMgd2lsbCBiZSBzdGFnZWQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ/OiBJQnVja2V0O1xufVxuXG4vKipcbiAqIEEgcGFja2FnZSBzb3VyY2UgdGhhdCBvYnRhaW5zIHBhY2thZ2UgZGF0YSBmcm9tIGFuIG5wbSBDb2RlQXJ0aWZhY3RcbiAqIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlQXJ0aWZhY3QgaW1wbGVtZW50cyBJUGFja2FnZVNvdXJjZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBDb2RlQXJ0aWZhY3RQcm9wcykge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHtcbiAgICAgIGRlbnlMaXN0LFxuICAgICAgaW5nZXN0aW9uLFxuICAgICAgbGljZW5zZUxpc3QsXG4gICAgICBtb25pdG9yaW5nLFxuICAgICAgb3ZlcnZpZXdEYXNoYm9hcmQsXG4gICAgICBxdWV1ZSxcbiAgICB9OiBQYWNrYWdlU291cmNlQmluZE9wdGlvbnNcbiAgKTogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQge1xuICAgIGNvbnN0IGlkUHJlZml4ID0gdGhpcy5wcm9wcy5yZXBvc2l0b3J5Lm5vZGUucGF0aDtcbiAgICBjb25zdCByZXBvc2l0b3J5SWQgPSBgJHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyfToke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZX0vJHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWV9YDtcblxuICAgIGNvbnN0IHN0b3JhZ2VGYWN0b3J5ID0gUzNTdG9yYWdlRmFjdG9yeS5nZXRPckNyZWF0ZShzY29wZSk7XG4gICAgY29uc3QgYnVja2V0ID1cbiAgICAgIHRoaXMucHJvcHMuYnVja2V0IHx8XG4gICAgICBzdG9yYWdlRmFjdG9yeS5uZXdCdWNrZXQoc2NvcGUsIGAke2lkUHJlZml4fS9TdGFnaW5nQnVja2V0YCwge1xuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgICBsaWZlY3ljbGVSdWxlczogW3sgZXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCkgfV0sXG4gICAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkKGluZ2VzdGlvbik7XG5cbiAgICBjb25zdCBkbHEgPSBuZXcgUXVldWUoc2NvcGUsIGAke2lkUHJlZml4fS9ETFFgLCB7XG4gICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRUQsXG4gICAgICByZXRlbnRpb25QZXJpb2Q6IER1cmF0aW9uLmRheXMoMTQpLFxuICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9yd2FyZGVyID0gbmV3IENvZGVBcnRpZmFjdEZvcndhcmRlcihcbiAgICAgIHNjb3BlLFxuICAgICAgYCR7aWRQcmVmaXh9L0ZvcndhcmRlcmAsXG4gICAgICB7XG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogZGxxLFxuICAgICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfV0gSGFuZGxlIENvZGVBcnRpZmFjdCBFdmVudEJyaWRnZSBldmVudHNgLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIEFXU19FTUZfRU5WSVJPTk1FTlQ6ICdMb2NhbCcsXG4gICAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICAgIFFVRVVFX1VSTDogcXVldWUucXVldWVVcmwsXG4gICAgICAgIH0sXG4gICAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNjApLFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgIH1cbiAgICApO1xuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb3J3YXJkZXIpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBxdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhmb3J3YXJkZXIpO1xuICAgIGZvcndhcmRlci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFsnY29kZWFydGlmYWN0OkdldFBhY2thZ2VWZXJzaW9uQXNzZXQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgICAgICBzZXJ2aWNlOiAnY29kZWFydGlmYWN0JyxcbiAgICAgICAgICAgIHJlc291cmNlOiAncGFja2FnZScsXG4gICAgICAgICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiBbXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgICAgICAgICAnbnBtJywgLy8gcGFja2FnZSBmb3JtYXRcbiAgICAgICAgICAgICAgJyonLCAvLyBuYW1lc3BhY2UvcGFja2FnZS1uYW1lXG4gICAgICAgICAgICBdLmpvaW4oJy8nKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZShzY29wZSwgYCR7aWRQcmVmaXh9L0V2ZW50QnJpZGdlYCwge1xuICAgICAgZGVzY3JpcHRpb246IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9FdmVudEJyaWRnZWAsXG4gICAgICBldmVudFBhdHRlcm46IHtcbiAgICAgICAgc291cmNlOiBbJ2F3cy5jb2RlYXJ0aWZhY3QnXSxcbiAgICAgICAgZGV0YWlsVHlwZTogWydDb2RlQXJ0aWZhY3QgUGFja2FnZSBWZXJzaW9uIFN0YXRlIENoYW5nZSddLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBkb21haW5Pd25lcjogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXJdLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWVdLFxuICAgICAgICAgIHJlcG9zaXRvcnlOYW1lOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lXSxcbiAgICAgICAgICBwYWNrYWdlRm9ybWF0OiBbJ25wbSddLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9yd2FyZGVyKV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmYWlsdXJlQWxhcm0gPSBmb3J3YXJkZXJcbiAgICAgIC5tZXRyaWNFcnJvcnMoKVxuICAgICAgLmNyZWF0ZUFsYXJtKHNjb3BlLCBgJHtpZFByZWZpeH0vRm9yd2FyZGVyL0ZhaWx1cmVzYCwge1xuICAgICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9Gb3J3YXJkZXJgLFxuICAgICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICAgYFRoZSBDb2RlQXJ0aWZhY3QgZm93YXJkZXIgZm9yICR7cmVwb3NpdG9yeUlkfSBpcyBmYWlsaW5nYCxcbiAgICAgICAgICAnJyxcbiAgICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvcndhcmRlcil9YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOlxuICAgICAgICAgIENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogMyxcbiAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZEhpZ2hTZXZlcml0eUFsYXJtKFxuICAgICAgYENvZGVBcnRpZmFjdDoke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZX0gRmFpbHVyZXNgLFxuICAgICAgZmFpbHVyZUFsYXJtXG4gICAgKTtcblxuICAgIGNvbnN0IGRscU5vdEVtcHR5QWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJ21WaXNpYmxlICsgbUhpZGRlbicsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbVZpc2libGU6IGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgIH0pLFxuICAgICAgICBtSGlkZGVuOiBkbHEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzTm90VmlzaWJsZSh7XG4gICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9ETFFOb3RFbXB0eWAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICcnLFxuICAgICAgICBgTGluayB0byB0aGUgbGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvcndhcmRlcil9YCxcbiAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKGRscSl9YCxcbiAgICAgIF0uam9pbignL24nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMSxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFEgTm90IEVtcHR5YCxcbiAgICAgIGRscU5vdEVtcHR5QWxhcm1cbiAgICApO1xuXG4gICAgcnVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtLCBkbHFOb3RFbXB0eUFsYXJtKTtcblxuICAgIG92ZXJ2aWV3RGFzaGJvYXJkLmFkZERMUU1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgYENvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0gRExRYCxcbiAgICAgIGRscVxuICAgICk7XG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkQ29uY3VycmVudEV4ZWN1dGlvbk1ldHJpY1RvRGFzaGJvYXJkKFxuICAgICAgZm9yd2FyZGVyLFxuICAgICAgYCR7aWRQcmVmaXh9L0ZvcndhcmRlckxhbWJkYWBcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGBDb2RlQXJ0aWZhY3Q6ICR7cmVwb3NpdG9yeUlkfWAsXG4gICAgICBsaW5rczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0NvZGVBcnRpZmFjdCcsXG4gICAgICAgICAgdXJsOiBjb2RlQXJ0aWZhY3RSZXBvc2l0b3J5VXJsKHRoaXMucHJvcHMucmVwb3NpdG9yeSksXG4gICAgICAgICAgcHJpbWFyeTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdGb3J3YXJkZXIgRnVuY3Rpb24nLFxuICAgICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdTZWFyY2ggTG9nIGdyb3VwJyxcbiAgICAgICAgICB1cmw6IGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKGZvcndhcmRlciksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnRExRJyxcbiAgICAgICAgICB1cmw6IHNxc1F1ZXVlVXJsKGRscSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgZGFzaGJvYXJkV2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRnVuY3Rpb24gSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljSW52b2NhdGlvbnMoeyBsYWJlbDogJ0ludm9jYXRpb25zJyB9KSksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9yd2FyZGVyLm1ldHJpY0Vycm9ycyh7IGxhYmVsOiAnRXJyb3JzJyB9KSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtmb3J3YXJkZXIubWV0cmljRHVyYXRpb24oeyBsYWJlbDogJ0R1cmF0aW9uJyB9KV0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdEZWFkIExldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0hpZGRlbiBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBkbHEubWV0cmljQXBwcm94aW1hdGVBZ2VPZk9sZGVzdE1lc3NhZ2Uoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnT2xkZXN0IE1lc3NhZ2UgQWdlJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdRdWFsaXR5IE1ldHJpY3MnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKFxuICAgICAgICAgICAgICAgIHRoaXMubWV0cmljTm90SnNpaUVuYWJsZWRDb3VudCh7IGxhYmVsOiAnTm90IGEganNpaSBwYWNrYWdlJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNJbmVsaWdpYmxlTGljZW5zZSh7IGxhYmVsOiAnSW5lbGlnaWJsZSBMaWNlbnNlJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNEZW55TGlzdGVkQ291bnQoeyBsYWJlbDogJ0RlbnkgTGlzdGVkJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNEZWxldGVkQ291bnQoeyBsYWJlbDogJ0RlbGV0aW9uIEV2ZW50cycgfSksXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY291bnQgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgaWdub3JlZCBkdWUgdG8gYmVpbmcgaW4gdGhlIGRlbnkgbGlzdC5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNEZW55TGlzdGVkQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcixcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERU5ZX0xJU1RFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byB1c2luZyBhbiBpbmVsb2lnaWJsZSBsaWNlbnNlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0luZWxpZ2libGVMaWNlbnNlKG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5JTkVMSUdJQkxFX0xJQ0VOU0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGFja2FnZSB2ZXJzaW9ucyB0aGF0IHdlcmUgZGVsZXRlZCBmcm9tIENvZGVBcnRpZmFjdCAodGhvc2UgZXZlbnRzIGFyZSBub3RcbiAgICogaGFuZGxlZCBjdXJyZW50bHkpLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbGV0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuREVMRVRFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgZG8gbm90IGhhdmUgYSBqc2lpIGFzc2VtYmx5IGluIHRoZSBwYWNrYWdlLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY05vdEpzaWlFbmFibGVkQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5PVF9KU0lJX0VOQUJMRURfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
@@ -9,6 +9,8 @@ const JSONStream = require("JSONStream");
|
|
9
9
|
const NPM_REGISTRY_URL = 'https://registry.npmjs.org/';
|
10
10
|
const REQUEST_DEADLINE_MS = 30000;
|
11
11
|
const REQUEST_ATTEMPT_TIMEOUT_MS = 5000;
|
12
|
+
const DEFAULT_BATCH_SIZE = 100;
|
13
|
+
const MAX_CONNS_PER_HOST = 100;
|
12
14
|
/**
|
13
15
|
* A utility class that helps with traversing CouchDB database changes streams
|
14
16
|
* in a promise-based, page-by-page manner.
|
@@ -24,7 +26,7 @@ class CouchChanges extends events_1.EventEmitter {
|
|
24
26
|
this.agent = new https_1.Agent({
|
25
27
|
keepAlive: true,
|
26
28
|
keepAliveMsecs: 5000,
|
27
|
-
maxSockets:
|
29
|
+
maxSockets: MAX_CONNS_PER_HOST,
|
28
30
|
// This timeout is separate from the request timeout, and is here to
|
29
31
|
// prevent stalled/idle connections
|
30
32
|
timeout: 60000,
|
@@ -47,7 +49,7 @@ class CouchChanges extends events_1.EventEmitter {
|
|
47
49
|
* @returns a page of changes.
|
48
50
|
*/
|
49
51
|
async changes(since, opts) {
|
50
|
-
const batchSize = opts?.batchSize ??
|
52
|
+
const batchSize = opts?.batchSize ?? DEFAULT_BATCH_SIZE;
|
51
53
|
const changesUrl = new url_1.URL(this.database, this.baseUrl);
|
52
54
|
changesUrl.searchParams.set('limit', batchSize.toFixed());
|
53
55
|
changesUrl.searchParams.set('since', since.toString());
|
@@ -156,7 +158,7 @@ function requestPromise(url, options, body) {
|
|
156
158
|
const req = (0, https_1.request)(url, options ?? {}, ok);
|
157
159
|
req.on('error', ko);
|
158
160
|
req.on('timeout', () => {
|
159
|
-
req.destroy(new RetryableError(`Timeout after ${
|
161
|
+
req.destroy(new RetryableError(`Timeout after ${options.timeout}ms, aborting request`));
|
160
162
|
});
|
161
163
|
req.end(body && JSON.stringify(body, null, 2));
|
162
164
|
});
|
@@ -185,4 +187,4 @@ function gunzip(readable) {
|
|
185
187
|
readable.pipe(gz, { end: true });
|
186
188
|
return gz;
|
187
189
|
}
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1RDtBQUV2RCw2QkFBMEI7QUFDMUIsK0JBQW9DO0FBQ3BDLHlDQUF5QztBQUV6QyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsS0FBTSxDQUFDO0FBRW5DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSyxDQUFDO0FBRXpDOzs7R0FHRztBQUNILE1BQWEsWUFBYSxTQUFRLHFCQUFZO0lBSzVDOzs7T0FHRztJQUNILFlBQW1CLE9BQWUsRUFBRSxRQUFnQjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQUNSLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUs7WUFDckIsVUFBVSxFQUFFLENBQUM7WUFFYixvRUFBb0U7WUFDcEUsbUNBQW1DO1lBQ25DLE9BQU8sRUFBRSxLQUFNO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxTQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQVEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQ2xCLEtBQXNCLEVBQ3RCLElBQXND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Q0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQWtFRCxTQUFTLE1BQU0sQ0FBQyxRQUFrQjtJQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFBLG1CQUFZLEdBQUUsQ0FBQztJQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UsIE91dGdvaW5nSHR0cEhlYWRlcnMgfSBmcm9tICdodHRwJztcbmltcG9ydCB7IEFnZW50LCByZXF1ZXN0LCBSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJ2h0dHBzJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IFVSTCB9IGZyb20gJ3VybCc7XG5pbXBvcnQgeyBjcmVhdGVHdW56aXAgfSBmcm9tICd6bGliJztcbmltcG9ydCAqIGFzIEpTT05TdHJlYW0gZnJvbSAnSlNPTlN0cmVhbSc7XG5cbmNvbnN0IE5QTV9SRUdJU1RSWV9VUkwgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJztcblxuY29uc3QgUkVRVUVTVF9ERUFETElORV9NUyA9IDMwXzAwMDtcblxuY29uc3QgUkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVMgPSA1XzAwMDtcblxuLyoqXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBoZWxwcyB3aXRoIHRyYXZlcnNpbmcgQ291Y2hEQiBkYXRhYmFzZSBjaGFuZ2VzIHN0cmVhbXNcbiAqIGluIGEgcHJvbWlzZS1iYXNlZCwgcGFnZS1ieS1wYWdlIG1hbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIENvdWNoQ2hhbmdlcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWdlbnQ6IEFnZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IFVSTDtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gYmFzZVVybCAgdGhlIENvdWNoREIgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gZGF0YWJhc2UgdGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGZvciB3aGljaCBjaGFuZ2VzIGFyZSBmZXRjaGVkLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGJhc2VVcmw6IHN0cmluZywgZGF0YWJhc2U6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgLy8gU2V0dGluZyB1cCBmb3Iga2VlcC1hbGl2ZSBjb25uZWN0aW9ucy5cbiAgICB0aGlzLmFnZW50ID0gbmV3IEFnZW50KHtcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICAgIGtlZXBBbGl2ZU1zZWNzOiA1XzAwMCxcbiAgICAgIG1heFNvY2tldHM6IDQsXG5cbiAgICAgIC8vIFRoaXMgdGltZW91dCBpcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXF1ZXN0IHRpbWVvdXQsIGFuZCBpcyBoZXJlIHRvXG4gICAgICAvLyBwcmV2ZW50IHN0YWxsZWQvaWRsZSBjb25uZWN0aW9uc1xuICAgICAgdGltZW91dDogNjBfMDAwLFxuICAgIH0pO1xuICAgIHRoaXMuYmFzZVVybCA9IG5ldyBVUkwoYmFzZVVybCk7XG4gICAgdGhpcy5kYXRhYmFzZSA9IGRhdGFiYXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN1bW1hcnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRhdGFiYXNlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGluZm8oKTogUHJvbWlzZTxEYXRhYmFzZUluZm9zPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLmh0dHBzKCdnZXQnLCB0aGlzLmJhc2VVcmwpKSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogT2J0YWlucyBhIGJhdGNoIG9mIGNoYW5nZXMgZnJvbSB0aGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBwYXJhbSBzaW5jZSAgICAgdGhlIHNlcXVlbmNlIHZhbHVlIHNpbmNlIHdoZW4gaGlzdG9yeSBzaG91bGQgYmUgZmV0Y2hlZC5cbiAgICogQHBhcmFtIGJhdGNoU2l6ZSB0aGUgbWF4aW11bSBhbW91bnQgb2YgY2hhbmdlcyB0byByZXR1cm4gaW4gYSBzaW5nbGUgcGFnZS5cbiAgICpcbiAgICogQHJldHVybnMgYSBwYWdlIG9mIGNoYW5nZXMuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2hhbmdlcyhcbiAgICBzaW5jZTogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG9wdHM/OiB7IHJlYWRvbmx5IGJhdGNoU2l6ZT86IG51bWJlciB9XG4gICk6IFByb21pc2U8RGF0YWJhc2VDaGFuZ2VzPiB7XG4gICAgY29uc3QgYmF0Y2hTaXplID0gb3B0cz8uYmF0Y2hTaXplID8/IDEwMDtcblxuICAgIGNvbnN0IGNoYW5nZXNVcmwgPSBuZXcgVVJMKHRoaXMuZGF0YWJhc2UsIHRoaXMuYmFzZVVybCk7XG4gICAgY2hhbmdlc1VybC5zZWFyY2hQYXJhbXMuc2V0KCdsaW1pdCcsIGJhdGNoU2l6ZS50b0ZpeGVkKCkpO1xuICAgIGNoYW5nZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnc2luY2UnLCBzaW5jZS50b1N0cmluZygpKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IChhd2FpdCB0aGlzLmh0dHBzKCdnZXQnLCBjaGFuZ2VzVXJsKSkgYXMgYW55O1xuXG4gICAgY29uc3QgbGFzdF9zZXEgPSByZXN1bHQubGFzdF9zZXE7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZmV0Y2hBbmRGaWx0ZXJBbGxNZXRhZGF0YShyZXN1bHQucmVzdWx0cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFzdF9zZXEsXG4gICAgICBhY3Rpb25hYmxlUmVzdWx0czogcmVzdWx0cyxcbiAgICAgIHRvdGFsQ291bnQ6IHJlc3VsdC5yZXN1bHRzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZEZpbHRlck1ldGFkYXRhKGNoYW5nZTogRGF0YWJhc2VDaGFuZ2UpIHtcbiAgICAvLyBGaWx0ZXIgb3V0IGRlbGV0ZWQgcGFja2FnZXMgb3IgbnVsbCBpZHNcbiAgICBpZiAoY2hhbmdlLmRlbGV0ZWQgfHwgIWNoYW5nZS5pZCkge1xuICAgICAgY29uc29sZS5sb2coYFNraXBwaW5nICR7Y2hhbmdlLmlkfTogZGVsZXRlZCBvciBudWxsIGlkYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGFVcmwgPSBuZXcgVVJMKGNoYW5nZS5pZCwgTlBNX1JFR0lTVFJZX1VSTCk7XG4gICAgY29uc29sZS5sb2coYEZldGNoaW5nIG1ldGFkYXRhIGZvciAke2NoYW5nZS5pZH06ICR7bWV0YWRhdGFVcmx9YCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHRoaXMuaHR0cHMoJ2dldCcsIG1ldGFkYXRhVXJsKTtcbiAgICAgIGNoYW5nZS5kb2MgPSBtZXRhOyAvLyBhZGQgbWV0YWRhdGEgdG8gdGhlIGNoYW5nZSBvYmplY3RcbiAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoZS5tZXNzYWdlPy5pbmNsdWRlcygnSFRUUCA0MDQnKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgU2tpcHBpbmcgJHtjaGFuZ2UuaWR9IGJlY2F1c2Ugb2YgSFRUUCA0MDQgKE5vdCBGb3VuZCkgZXJyb3JgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZEZpbHRlckFsbE1ldGFkYXRhKFxuICAgIGNoYW5nZXM6IERhdGFiYXNlQ2hhbmdlW11cbiAgKTogUHJvbWlzZTxEYXRhYmFzZUNoYW5nZVtdPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBjaGFuZ2VzLm1hcCgoY2hhbmdlKSA9PiB0aGlzLmZldGNoQW5kRmlsdGVyTWV0YWRhdGEoY2hhbmdlKSlcbiAgICAgIClcbiAgICApLmZpbHRlcigoY2hhbmdlKTogY2hhbmdlIGlzIERhdGFiYXNlQ2hhbmdlID0+IGNoYW5nZSAhPT0gdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlcyBhbiBIVFRQcyByZXF1ZXN0IHVzaW5nIHRoZSBwcm92aWRlZCBtZXRob2QsIHVybCwgYW5kIG9wdGlvbmFsbHkgcGF5bG9hZC4gVGhpcyBmdW5jdGlvblxuICAgKiBwcm9wZXJseSBoYW5kbGVzIGlucHV0IHRoYXQgaXMgcmVjZWl2ZWQgd2l0aCBgQ29udGVudC1UeXBlOiBnemlwYCBhbmQgYXV0b21hdGljYWxseSByZXRyaWVzXG4gICAqIHR5cGljYWwgdHJhbnNpZW50IGVycm9ycyAoSFRUUCA1WFgsIEVDT05OUkVTRVQsIGV0Yy4uLikgd2l0aCBsaW5lYXIgYmFjay1vZmYgYW5kIG5vIG1heGltdW1cbiAgICogcmV0cnkgY291bnQgKHRoaXMgaXMgdXNlZCBpbiBMYW1iZGEgZnVuY3Rpb25zLCB3aGljaCBkZS1mYWN0byBjYXBzIHRoZSBhbW91bnQgb2YgYXR0ZW1wdHNcbiAgICogdGhhdCB3aWxsIGJlIG1hZGUgZHVlIHRvIHRoZSBmdW5jdGlvbiB0aW1lIG91dCkuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgdGhlIEhUVFAgbWV0aG9kIHVzZWQgZm9yIHRoZSByZXF1ZXN0IChlLmc6ICdnZXQnLCAncG9zdCcsIC4uLikuXG4gICAqIEBwYXJhbSB1cmwgICAgdGhlIFVSTCB0byByZXF1ZXN0LlxuICAgKiBAcGFyYW0gYm9keSAgIGFuIG9wdGlvbmFsIEhUVFAgcmVxdWVzdCBwYXlsb2FkLCB3aGljaCB3aWxsIGJlIEpTT04tZW5jb2RlZC5cbiAgICpcbiAgICogQHBhcmFtIGF0dGVtcHQgdGhlIHJlcXVlc3QgYXR0ZW1wdCBudW1iZXIgKHVzZWQgdG8gZGV0ZXJtaW5lIGJhY2stb2ZmIC8gcmV0cnkpLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgSlNPTi1kZWNvZGVkIHJlc3BvbnNlIGJvZHkuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGh0dHBzKFxuICAgIG1ldGhvZDogJ2dldCcgfCAncG9zdCcsXG4gICAgdXJsOiBVUkwsXG4gICAgYm9keT86IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9XG4gICk6IFByb21pc2U8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBPdXRnb2luZ0h0dHBIZWFkZXJzID0ge1xuICAgICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAnQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLFxuICAgICAgJ25wbS1yZXBsaWNhdGlvbi1vcHQtaW4nOiAndHJ1ZScsIC8vIGNhbiBiZSBkZWxldGVkIGFmdGVyIE1heSAyOTogaHR0cHM6Ly9naXRodWIuY29tL29yZ3MvY29tbXVuaXR5L2Rpc2N1c3Npb25zLzE1MjUxNVxuICAgIH07XG4gICAgaWYgKGJvZHkpIHtcbiAgICAgIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGFnZW50OiB0aGlzLmFnZW50LFxuICAgICAgaGVhZGVycyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHBvcnQ6IDQ0MyxcbiAgICAgIHNlcnZlcm5hbWU6IHVybC5ob3N0bmFtZSxcbiAgICAgIC8vIFRoaXMganVzdCBsZWFkcyB0byBhICd0aW1lb3V0JyBldmVudFxuICAgICAgdGltZW91dDogUkVRVUVTVF9BVFRFTVBUX1RJTUVPVVRfTVMsXG4gICAgfTtcblxuICAgIGNvbnN0IGRlYWRsaW5lID0gRGF0ZS5ub3coKSArIFJFUVVFU1RfREVBRExJTkVfTVM7XG4gICAgbGV0IG1heERlbGF5ID0gMTAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCByZXF1ZXN0UHJvbWlzZSh1cmwsIHJlcXVlc3RPcHRpb25zLCBib2R5KTtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmV0cnlhYmxlRXJyb3IoJ05vIHN0YXR1cyBjb2RlIGF2YWlsYWJsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VydmVyIGVycm9ycy4gV2UgY2FuJ3Qga25vdyB3aGV0aGVyIHRoZXNlIGFyZSByZWFsbHkgcmV0cnlhYmxlIGJ1dCB3ZSB1c3VhbGx5IHByZXRlbmQgdGhhdCB0aGV5IGFyZS5cbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDUwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDYwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBSZXRyeWFibGVFcnJvcihcbiAgICAgICAgICAgIGBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICR7cmVzLnN0YXR1c01lc3NhZ2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQZXJtYW5lbnQgKGNsaWVudCkgZXJyb3JzOlxuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUgPj0gNDAwICYmIHJlcy5zdGF0dXNDb2RlIDwgNTAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQICR7cmVzLnN0YXR1c0NvZGV9ICR7cmVzLnN0YXR1c01lc3NhZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgUmVzcG9uc2U6ICR7bWV0aG9kLnRvVXBwZXJDYXNlKCl9ICR7dXJsfSA9PiBIVFRQICR7XG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZVxuICAgICAgICAgIH0gKCR7cmVzLnN0YXR1c01lc3NhZ2V9KWBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgcmVhZFJlc3BvbnNlSnNvbihyZXMpO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmIChEYXRlLm5vdygpID4gZGVhZGxpbmUgfHwgIWlzUmV0cnlhYmxlRXJyb3IoZSkpIHtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5lcnJvcihgW1JFVFJZQUJMRV0gJHttZXRob2R9ICR7dXJsfTogJHtlfWApO1xuXG4gICAgICAgIGF3YWl0IHNsZWVwKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG1heERlbGF5KSk7XG4gICAgICAgIG1heERlbGF5ICo9IDI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBQcm9taXNpZmllZCB2ZXJzaW9uIG9mIGBodHRwcy5yZXF1ZXN0KClgIHRoYXQgYWxzbyBoYW5kbGVzIHRpbWVvdXQgZXZlbnRzXG4gKi9cbmZ1bmN0aW9uIHJlcXVlc3RQcm9taXNlKFxuICB1cmw6IFVSTCxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsXG4gIGJvZHk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxJbmNvbWluZ01lc3NhZ2U+KChvaywga28pID0+IHtcbiAgICBjb25zdCByZXEgPSByZXF1ZXN0KHVybCwgb3B0aW9ucyA/PyB7fSwgb2spO1xuICAgIHJlcS5vbignZXJyb3InLCBrbyk7XG4gICAgcmVxLm9uKCd0aW1lb3V0JywgKCkgPT4ge1xuICAgICAgcmVxLmRlc3Ryb3koXG4gICAgICAgIG5ldyBSZXRyeWFibGVFcnJvcihcbiAgICAgICAgICBgVGltZW91dCBhZnRlciAke1JFUVVFU1RfQVRURU1QVF9USU1FT1VUX01TfW1zLCBhYm9ydGluZyByZXF1ZXN0YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH0pO1xuICAgIHJlcS5lbmQoYm9keSAmJiBKU09OLnN0cmluZ2lmeShib2R5LCBudWxsLCAyKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkUmVzcG9uc2VKc29uKFxuICByZXM6IEluY29taW5nTWVzc2FnZVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIHJlcy5vbmNlKCdlcnJvcicsIGtvKTtcblxuICAgIGNvbnN0IGpzb24gPSBKU09OU3RyZWFtLnBhcnNlKHRydWUpO1xuICAgIGpzb24ub25jZSgnZGF0YScsIG9rKTtcbiAgICBqc29uLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgY29uc3QgcGxhaW5QYXlsb2FkID1cbiAgICAgIHJlcy5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPT09ICdnemlwJyA/IGd1bnppcChyZXMpIDogcmVzO1xuICAgIHBsYWluUGF5bG9hZC5waXBlKGpzb24sIHsgZW5kOiB0cnVlIH0pO1xuICAgIHBsYWluUGF5bG9hZC5vbmNlKCdlcnJvcicsIGtvKTtcbiAgfSk7XG59XG5cbmNsYXNzIFJldHJ5YWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZnVuY3Rpb24gaXNSZXRyeWFibGVFcnJvcihlOiBFcnJvcik6IGJvb2xlYW4ge1xuICByZXR1cm4gZSBpbnN0YW5jZW9mIFJldHJ5YWJsZUVycm9yIHx8IChlIGFzIGFueSkuY29kZSA9PT0gJ0VDT05OUkVTRVQnO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2spID0+IHNldFRpbWVvdXQob2ssIG1zKSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDaGFuZ2VzIHtcbiAgLyoqXG4gICAqIFRoZSBsYXN0IHNlcXVlbmNlIElEIGZyb20gdGhpcyBjaGFuZ2Ugc2V0LiBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZVxuICAgKiBwYXNzZWQgdG8gdGhlIHN1YnNlcXVlbnQgYC5jaGFuZ2VzYCBjYWxsIHRvIGZldGNoIHRoZSBuZXh0IHBhZ2UuXG4gICAqL1xuICByZWFkb25seSBsYXN0X3NlcTogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uYWJsZSBjaGFuZ2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBiYXRjaC5cbiAgICogVGhpcyBoYXMgZGVsZXRlZCBhbmQgdW5yZWFjaGFibGUgcGFja2FnZXMgcmVtb3ZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbmFibGVSZXN1bHRzOiByZWFkb25seSBEYXRhYmFzZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgY291bnQgb2YgY2hhbmdlcyBpbiB0aGlzIGJhdGNoLiBUaGlzIGluY2x1ZGVzIHVucHJvY2Vzc2FibGUgY2hhbmdlcy5cbiAgICogMCBpbmRpY2F0ZXMgd2UgYXJlIHVwIHRvIGRhdGUgd2l0aCBcIm5vd1wiLlxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxDb3VudDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgcmV2aXNpb25zIHRvIHRoZSBvYmplY3QgdGhhdCB3ZXJlIHJlc29sdmVkIGFzIHBhcnQgb2YgdGhpc1xuICAgKiBjaGFuZ2UuXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VzOiBSZWFkb25seUFycmF5PHsgcmVhZG9ubHkgcmV2OiBzdHJpbmcgfT47XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgZG9jdW1lbnQgdGhhdCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXF1ZW5jZSBJRCBmb3IgdGhpcyBjaGFuZ2UgaW4gdGhlIHN0cmVhbS4gSXQgbWF5IG5vdCBiZSBwcmVzZW50IGZvclxuICAgKiBhbGwgKG9yIGFueSkgZW50cmllcyBpbiB0aGUgcmVzdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VxPzogc3RyaW5nIHwgbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY2hhbmdlIGNvcnJlc3BvbmRzIHRvIHRoaXMgZG9jdW1lbnQgYmVpbmcgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHByZXNlbnQsIHRoZSByZXNvbHZlZCBkb2N1bWVudCBhZnRlciB0aGUgY2hhbmdlIGhhcyBiZWVuIGFwcGxpZWQuXG4gICAqL1xuICBkb2M/OiB7IHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUluZm9zIHtcbiAgcmVhZG9ubHkgZGJfbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkaXNrX2Zvcm1hdF92ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGRvY19jb3VudDogbnVtYmVyO1xuICByZWFkb25seSBkb2NfZGVsX2NvdW50OiBudW1iZXI7XG4gIHJlYWRvbmx5IGluc3RhbmNlX3N0YXJ0X3RpbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcHVyZ2Vfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG4gIHJlYWRvbmx5IHNpemVzOiB7XG4gICAgcmVhZG9ubHkgYWN0aXZlOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgZXh0ZXJuYWw6IG51bWJlcjtcbiAgICByZWFkb25seSBmaWxlOiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHVwZGF0ZV9zZXE6IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gZ3VuemlwKHJlYWRhYmxlOiBSZWFkYWJsZSk6IFJlYWRhYmxlIHtcbiAgY29uc3QgZ3ogPSBjcmVhdGVHdW56aXAoKTtcbiAgcmVhZGFibGUucGlwZShneiwgeyBlbmQ6IHRydWUgfSk7XG4gIHJldHVybiBnejtcbn1cbiJdfQ==
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291Y2gtY2hhbmdlcy5sYW1iZGEtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhY2thZ2Utc291cmNlcy9ucG1qcy9jb3VjaC1jaGFuZ2VzLmxhbWJkYS1zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNDO0FBRXRDLGlDQUF1RDtBQUV2RCw2QkFBMEI7QUFDMUIsK0JBQW9DO0FBQ3BDLHlDQUF5QztBQUV6QyxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBRXZELE1BQU0sbUJBQW1CLEdBQUcsS0FBTSxDQUFDO0FBRW5DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSyxDQUFDO0FBRXpDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9CLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQWEsWUFBYSxTQUFRLHFCQUFZO0lBSzVDOzs7T0FHRztJQUNILFlBQW1CLE9BQWUsRUFBRSxRQUFnQjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQUNSLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksYUFBSyxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUs7WUFDckIsVUFBVSxFQUFFLGtCQUFrQjtZQUU5QixvRUFBb0U7WUFDcEUsbUNBQW1DO1lBQ25DLE9BQU8sRUFBRSxLQUFNO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxTQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQVEsQ0FBQztJ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QUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFrRUQsU0FBUyxNQUFNLENBQUMsUUFBa0I7SUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBQSxtQkFBWSxHQUFFLENBQUM7SUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqQyxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlLCBPdXRnb2luZ0h0dHBIZWFkZXJzIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBBZ2VudCwgcmVxdWVzdCwgUmVxdWVzdE9wdGlvbnMgfSBmcm9tICdodHRwcyc7XG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgY3JlYXRlR3VuemlwIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgKiBhcyBKU09OU3RyZWFtIGZyb20gJ0pTT05TdHJlYW0nO1xuXG5jb25zdCBOUE1fUkVHSVNUUllfVVJMID0gJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnLyc7XG5cbmNvbnN0IFJFUVVFU1RfREVBRExJTkVfTVMgPSAzMF8wMDA7XG5cbmNvbnN0IFJFUVVFU1RfQVRURU1QVF9USU1FT1VUX01TID0gNV8wMDA7XG5cbmNvbnN0IERFRkFVTFRfQkFUQ0hfU0laRSA9IDEwMDtcblxuY29uc3QgTUFYX0NPTk5TX1BFUl9IT1NUID0gMTAwO1xuXG4vKipcbiAqIEEgdXRpbGl0eSBjbGFzcyB0aGF0IGhlbHBzIHdpdGggdHJhdmVyc2luZyBDb3VjaERCIGRhdGFiYXNlIGNoYW5nZXMgc3RyZWFtc1xuICogaW4gYSBwcm9taXNlLWJhc2VkLCBwYWdlLWJ5LXBhZ2UgbWFubmVyLlxuICovXG5leHBvcnQgY2xhc3MgQ291Y2hDaGFuZ2VzIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZ2VudDogQWdlbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZVVybDogVVJMO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFiYXNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBiYXNlVXJsICB0aGUgQ291Y2hEQiBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBkYXRhYmFzZSB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZm9yIHdoaWNoIGNoYW5nZXMgYXJlIGZldGNoZWQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IoYmFzZVVybDogc3RyaW5nLCBkYXRhYmFzZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyBTZXR0aW5nIHVwIGZvciBrZWVwLWFsaXZlIGNvbm5lY3Rpb25zLlxuICAgIHRoaXMuYWdlbnQgPSBuZXcgQWdlbnQoe1xuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgICAga2VlcEFsaXZlTXNlY3M6IDVfMDAwLFxuICAgICAgbWF4U29ja2V0czogTUFYX0NPTk5TX1BFUl9IT1NULFxuXG4gICAgICAvLyBUaGlzIHRpbWVvdXQgaXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVxdWVzdCB0aW1lb3V0LCBhbmQgaXMgaGVyZSB0b1xuICAgICAgLy8gcHJldmVudCBzdGFsbGVkL2lkbGUgY29ubmVjdGlvbnNcbiAgICAgIHRpbWVvdXQ6IDYwXzAwMCxcbiAgICB9KTtcbiAgICB0aGlzLmJhc2VVcmwgPSBuZXcgVVJMKGJhc2VVcmwpO1xuICAgIHRoaXMuZGF0YWJhc2UgPSBkYXRhYmFzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBzdW1tYXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhYmFzZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbmZvKCk6IFByb21pc2U8RGF0YWJhc2VJbmZvcz4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5odHRwcygnZ2V0JywgdGhpcy5iYXNlVXJsKSkgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGFpbnMgYSBiYXRjaCBvZiBjaGFuZ2VzIGZyb20gdGhlIGRhdGFiYXNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2luY2UgICAgIHRoZSBzZXF1ZW5jZSB2YWx1ZSBzaW5jZSB3aGVuIGhpc3Rvcnkgc2hvdWxkIGJlIGZldGNoZWQuXG4gICAqIEBwYXJhbSBiYXRjaFNpemUgdGhlIG1heGltdW0gYW1vdW50IG9mIGNoYW5nZXMgdG8gcmV0dXJuIGluIGEgc2luZ2xlIHBhZ2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgcGFnZSBvZiBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNoYW5nZXMoXG4gICAgc2luY2U6IHN0cmluZyB8IG51bWJlcixcbiAgICBvcHRzPzogeyByZWFkb25seSBiYXRjaFNpemU/OiBudW1iZXIgfVxuICApOiBQcm9taXNlPERhdGFiYXNlQ2hhbmdlcz4ge1xuICAgIGNvbnN0IGJhdGNoU2l6ZSA9IG9wdHM/LmJhdGNoU2l6ZSA/PyBERUZBVUxUX0JBVENIX1NJWkU7XG5cbiAgICBjb25zdCBjaGFuZ2VzVXJsID0gbmV3IFVSTCh0aGlzLmRhdGFiYXNlLCB0aGlzLmJhc2VVcmwpO1xuICAgIGNoYW5nZXNVcmwuc2VhcmNoUGFyYW1zLnNldCgnbGltaXQnLCBiYXRjaFNpemUudG9GaXhlZCgpKTtcbiAgICBjaGFuZ2VzVXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3NpbmNlJywgc2luY2UudG9TdHJpbmcoKSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgdGhpcy5odHRwcygnZ2V0JywgY2hhbmdlc1VybCkpIGFzIGFueTtcblxuICAgIGNvbnN0IGxhc3Rfc2VxID0gcmVzdWx0Lmxhc3Rfc2VxO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmZldGNoQW5kRmlsdGVyQWxsTWV0YWRhdGEocmVzdWx0LnJlc3VsdHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhc3Rfc2VxLFxuICAgICAgYWN0aW9uYWJsZVJlc3VsdHM6IHJlc3VsdHMsXG4gICAgICB0b3RhbENvdW50OiByZXN1bHQucmVzdWx0cy5sZW5ndGgsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRGaWx0ZXJNZXRhZGF0YShjaGFuZ2U6IERhdGFiYXNlQ2hhbmdlKSB7XG4gICAgLy8gRmlsdGVyIG91dCBkZWxldGVkIHBhY2thZ2VzIG9yIG51bGwgaWRzXG4gICAgaWYgKGNoYW5nZS5kZWxldGVkIHx8ICFjaGFuZ2UuaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTa2lwcGluZyAke2NoYW5nZS5pZH06IGRlbGV0ZWQgb3IgbnVsbCBpZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhVXJsID0gbmV3IFVSTChjaGFuZ2UuaWQsIE5QTV9SRUdJU1RSWV9VUkwpO1xuICAgIGNvbnNvbGUubG9nKGBGZXRjaGluZyBtZXRhZGF0YSBmb3IgJHtjaGFuZ2UuaWR9OiAke21ldGFkYXRhVXJsfWApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGEgPSBhd2FpdCB0aGlzLmh0dHBzKCdnZXQnLCBtZXRhZGF0YVVybCk7XG4gICAgICBjaGFuZ2UuZG9jID0gbWV0YTsgLy8gYWRkIG1ldGFkYXRhIHRvIHRoZSBjaGFuZ2Ugb2JqZWN0XG4gICAgICByZXR1cm4gY2hhbmdlO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUubWVzc2FnZT8uaW5jbHVkZXMoJ0hUVFAgNDA0JykpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYFNraXBwaW5nICR7Y2hhbmdlLmlkfSBiZWNhdXNlIG9mIEhUVFAgNDA0IChOb3QgRm91bmQpIGVycm9yYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBbmRGaWx0ZXJBbGxNZXRhZGF0YShcbiAgICBjaGFuZ2VzOiBEYXRhYmFzZUNoYW5nZVtdXG4gICk6IFByb21pc2U8RGF0YWJhc2VDaGFuZ2VbXT4ge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgY2hhbmdlcy5tYXAoKGNoYW5nZSkgPT4gdGhpcy5mZXRjaEFuZEZpbHRlck1ldGFkYXRhKGNoYW5nZSkpXG4gICAgICApXG4gICAgKS5maWx0ZXIoKGNoYW5nZSk6IGNoYW5nZSBpcyBEYXRhYmFzZUNoYW5nZSA9PiBjaGFuZ2UgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZXMgYW4gSFRUUHMgcmVxdWVzdCB1c2luZyB0aGUgcHJvdmlkZWQgbWV0aG9kLCB1cmwsIGFuZCBvcHRpb25hbGx5IHBheWxvYWQuIFRoaXMgZnVuY3Rpb25cbiAgICogcHJvcGVybHkgaGFuZGxlcyBpbnB1dCB0aGF0IGlzIHJlY2VpdmVkIHdpdGggYENvbnRlbnQtVHlwZTogZ3ppcGAgYW5kIGF1dG9tYXRpY2FsbHkgcmV0cmllc1xuICAgKiB0eXBpY2FsIHRyYW5zaWVudCBlcnJvcnMgKEhUVFAgNVhYLCBFQ09OTlJFU0VULCBldGMuLi4pIHdpdGggbGluZWFyIGJhY2stb2ZmIGFuZCBubyBtYXhpbXVtXG4gICAqIHJldHJ5IGNvdW50ICh0aGlzIGlzIHVzZWQgaW4gTGFtYmRhIGZ1bmN0aW9ucywgd2hpY2ggZGUtZmFjdG8gY2FwcyB0aGUgYW1vdW50IG9mIGF0dGVtcHRzXG4gICAqIHRoYXQgd2lsbCBiZSBtYWRlIGR1ZSB0byB0aGUgZnVuY3Rpb24gdGltZSBvdXQpLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIHRoZSBIVFRQIG1ldGhvZCB1c2VkIGZvciB0aGUgcmVxdWVzdCAoZS5nOiAnZ2V0JywgJ3Bvc3QnLCAuLi4pLlxuICAgKiBAcGFyYW0gdXJsICAgIHRoZSBVUkwgdG8gcmVxdWVzdC5cbiAgICogQHBhcmFtIGJvZHkgICBhbiBvcHRpb25hbCBIVFRQIHJlcXVlc3QgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBKU09OLWVuY29kZWQuXG4gICAqXG4gICAqIEBwYXJhbSBhdHRlbXB0IHRoZSByZXF1ZXN0IGF0dGVtcHQgbnVtYmVyICh1c2VkIHRvIGRldGVybWluZSBiYWNrLW9mZiAvIHJldHJ5KS5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIEpTT04tZGVjb2RlZCByZXNwb25zZSBib2R5LlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBodHRwcyhcbiAgICBtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnLFxuICAgIHVybDogVVJMLFxuICAgIGJvZHk/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxuICApOiBQcm9taXNlPHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9PiB7XG4gICAgY29uc3QgaGVhZGVyczogT3V0Z29pbmdIdHRwSGVhZGVycyA9IHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJyxcbiAgICAgICducG0tcmVwbGljYXRpb24tb3B0LWluJzogJ3RydWUnLCAvLyBjYW4gYmUgZGVsZXRlZCBhZnRlciBNYXkgMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL2NvbW11bml0eS9kaXNjdXNzaW9ucy8xNTI1MTVcbiAgICB9O1xuICAgIGlmIChib2R5KSB7XG4gICAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBhZ2VudDogdGhpcy5hZ2VudCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRob2QsXG4gICAgICBwb3J0OiA0NDMsXG4gICAgICBzZXJ2ZXJuYW1lOiB1cmwuaG9zdG5hbWUsXG4gICAgICAvLyBUaGlzIGp1c3QgbGVhZHMgdG8gYSAndGltZW91dCcgZXZlbnRcbiAgICAgIHRpbWVvdXQ6IFJFUVVFU1RfQVRURU1QVF9USU1FT1VUX01TLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBSRVFVRVNUX0RFQURMSU5FX01TO1xuICAgIGxldCBtYXhEZWxheSA9IDEwMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdFByb21pc2UodXJsLCByZXF1ZXN0T3B0aW9ucywgYm9keSk7XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJldHJ5YWJsZUVycm9yKCdObyBzdGF0dXMgY29kZSBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlciBlcnJvcnMuIFdlIGNhbid0IGtub3cgd2hldGhlciB0aGVzZSBhcmUgcmVhbGx5IHJldHJ5YWJsZSBidXQgd2UgdXN1YWxseSBwcmV0ZW5kIHRoYXQgdGhleSBhcmUuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA1MDAgJiYgcmVzLnN0YXR1c0NvZGUgPCA2MDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmV0cnlhYmxlRXJyb3IoXG4gICAgICAgICAgICBgSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAke3Jlcy5zdGF0dXNNZXNzYWdlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGVybWFuZW50IChjbGllbnQpIGVycm9yczpcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDQwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDUwMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlcy5zdGF0dXNDb2RlfSAke3Jlcy5zdGF0dXNNZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYFJlc3BvbnNlOiAke21ldGhvZC50b1VwcGVyQ2FzZSgpfSAke3VybH0gPT4gSFRUUCAke1xuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGVcbiAgICAgICAgICB9ICgke3Jlcy5zdGF0dXNNZXNzYWdlfSlgXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRSZXNwb25zZUpzb24ocmVzKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSA+IGRlYWRsaW5lIHx8ICFpc1JldHJ5YWJsZUVycm9yKGUpKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtSRVRSWUFCTEVdICR7bWV0aG9kfSAke3VybH06ICR7ZX1gKTtcblxuICAgICAgICBhd2FpdCBzbGVlcChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtYXhEZWxheSkpO1xuICAgICAgICBtYXhEZWxheSAqPSAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgUHJvbWlzaWZpZWQgdmVyc2lvbiBvZiBgaHR0cHMucmVxdWVzdCgpYCB0aGF0IGFsc28gaGFuZGxlcyB0aW1lb3V0IGV2ZW50c1xuICovXG5mdW5jdGlvbiByZXF1ZXN0UHJvbWlzZShcbiAgdXJsOiBVUkwsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBib2R5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbikge1xuICByZXR1cm4gbmV3IFByb21pc2U8SW5jb21pbmdNZXNzYWdlPigob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgcmVxID0gcmVxdWVzdCh1cmwsIG9wdGlvbnMgPz8ge30sIG9rKTtcbiAgICByZXEub24oJ2Vycm9yJywga28pO1xuICAgIHJlcS5vbigndGltZW91dCcsICgpID0+IHtcbiAgICAgIHJlcS5kZXN0cm95KFxuICAgICAgICBuZXcgUmV0cnlhYmxlRXJyb3IoXG4gICAgICAgICAgYFRpbWVvdXQgYWZ0ZXIgJHtvcHRpb25zLnRpbWVvdXR9bXMsIGFib3J0aW5nIHJlcXVlc3RgXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmVxLmVuZChib2R5ICYmIEpTT04uc3RyaW5naWZ5KGJvZHksIG51bGwsIDIpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRSZXNwb25zZUpzb24oXG4gIHJlczogSW5jb21pbmdNZXNzYWdlXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgcmVzLm9uY2UoJ2Vycm9yJywga28pO1xuXG4gICAgY29uc3QganNvbiA9IEpTT05TdHJlYW0ucGFyc2UodHJ1ZSk7XG4gICAganNvbi5vbmNlKCdkYXRhJywgb2spO1xuICAgIGpzb24ub25jZSgnZXJyb3InLCBrbyk7XG5cbiAgICBjb25zdCBwbGFpblBheWxvYWQgPVxuICAgICAgcmVzLmhlYWRlcnNbJ2NvbnRlbnQtZW5jb2RpbmcnXSA9PT0gJ2d6aXAnID8gZ3VuemlwKHJlcykgOiByZXM7XG4gICAgcGxhaW5QYXlsb2FkLnBpcGUoanNvbiwgeyBlbmQ6IHRydWUgfSk7XG4gICAgcGxhaW5QYXlsb2FkLm9uY2UoJ2Vycm9yJywga28pO1xuICB9KTtcbn1cblxuY2xhc3MgUmV0cnlhYmxlRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5mdW5jdGlvbiBpc1JldHJ5YWJsZUVycm9yKGU6IEVycm9yKTogYm9vbGVhbiB7XG4gIHJldHVybiBlIGluc3RhbmNlb2YgUmV0cnlhYmxlRXJyb3IgfHwgKGUgYXMgYW55KS5jb2RlID09PSAnRUNPTk5SRVNFVCc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChvaykgPT4gc2V0VGltZW91dChvaywgbXMpKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIGxhc3Qgc2VxdWVuY2UgSUQgZnJvbSB0aGlzIGNoYW5nZSBzZXQuIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgc2hvdWxkIGJlXG4gICAqIHBhc3NlZCB0byB0aGUgc3Vic2VxdWVudCBgLmNoYW5nZXNgIGNhbGwgdG8gZmV0Y2ggdGhlIG5leHQgcGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGxhc3Rfc2VxOiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb25hYmxlIGNoYW5nZXMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIGJhdGNoLlxuICAgKiBUaGlzIGhhcyBkZWxldGVkIGFuZCB1bnJlYWNoYWJsZSBwYWNrYWdlcyByZW1vdmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uYWJsZVJlc3VsdHM6IHJlYWRvbmx5IERhdGFiYXNlQ2hhbmdlW107XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBjb3VudCBvZiBjaGFuZ2VzIGluIHRoaXMgYmF0Y2guIFRoaXMgaW5jbHVkZXMgdW5wcm9jZXNzYWJsZSBjaGFuZ2VzLlxuICAgKiAwIGluZGljYXRlcyB3ZSBhcmUgdXAgdG8gZGF0ZSB3aXRoIFwibm93XCIuXG4gICAqL1xuICByZWFkb25seSB0b3RhbENvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIHNldCBvZiByZXZpc2lvbnMgdG8gdGhlIG9iamVjdCB0aGF0IHdlcmUgcmVzb2x2ZWQgYXMgcGFydCBvZiB0aGlzXG4gICAqIGNoYW5nZS5cbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZXM6IFJlYWRvbmx5QXJyYXk8eyByZWFkb25seSByZXY6IHN0cmluZyB9PjtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBkb2N1bWVudCB0aGF0IGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlcXVlbmNlIElEIGZvciB0aGlzIGNoYW5nZSBpbiB0aGUgc3RyZWFtLiBJdCBtYXkgbm90IGJlIHByZXNlbnQgZm9yXG4gICAqIGFsbCAob3IgYW55KSBlbnRyaWVzIGluIHRoZSByZXN1bHQuXG4gICAqL1xuICByZWFkb25seSBzZXE/OiBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjaGFuZ2UgY29ycmVzcG9uZHMgdG8gdGhpcyBkb2N1bWVudCBiZWluZyBkZWxldGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgcHJlc2VudCwgdGhlIHJlc29sdmVkIGRvY3VtZW50IGFmdGVyIHRoZSBjaGFuZ2UgaGFzIGJlZW4gYXBwbGllZC5cbiAgICovXG4gIGRvYz86IHsgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlSW5mb3Mge1xuICByZWFkb25seSBkYl9uYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRpc2tfZm9ybWF0X3ZlcnNpb246IG51bWJlcjtcbiAgcmVhZG9ubHkgZG9jX2NvdW50OiBudW1iZXI7XG4gIHJlYWRvbmx5IGRvY19kZWxfY291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgaW5zdGFuY2Vfc3RhcnRfdGltZTogc3RyaW5nO1xuICByZWFkb25seSBwdXJnZV9zZXE6IHN0cmluZyB8IG51bWJlcjtcbiAgcmVhZG9ubHkgc2l6ZXM6IHtcbiAgICByZWFkb25seSBhY3RpdmU6IG51bWJlcjtcbiAgICByZWFkb25seSBleHRlcm5hbDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGZpbGU6IG51bWJlcjtcbiAgfTtcbiAgcmVhZG9ubHkgdXBkYXRlX3NlcTogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBndW56aXAocmVhZGFibGU6IFJlYWRhYmxlKTogUmVhZGFibGUge1xuICBjb25zdCBneiA9IGNyZWF0ZUd1bnppcCgpO1xuICByZWFkYWJsZS5waXBlKGd6LCB7IGVuZDogdHJ1ZSB9KTtcbiAgcmV0dXJuIGd6O1xufVxuIl19
|
@@ -64761,6 +64761,8 @@ var JSONStream = __toESM(require_JSONStream());
|
|
64761
64761
|
var NPM_REGISTRY_URL = "https://registry.npmjs.org/";
|
64762
64762
|
var REQUEST_DEADLINE_MS = 3e4;
|
64763
64763
|
var REQUEST_ATTEMPT_TIMEOUT_MS = 5e3;
|
64764
|
+
var DEFAULT_BATCH_SIZE = 100;
|
64765
|
+
var MAX_CONNS_PER_HOST = 100;
|
64764
64766
|
var CouchChanges = class extends import_events.EventEmitter {
|
64765
64767
|
/**
|
64766
64768
|
* @param baseUrl the CouchDB endpoint URL.
|
@@ -64771,7 +64773,7 @@ var CouchChanges = class extends import_events.EventEmitter {
|
|
64771
64773
|
this.agent = new import_https.Agent({
|
64772
64774
|
keepAlive: true,
|
64773
64775
|
keepAliveMsecs: 5e3,
|
64774
|
-
maxSockets:
|
64776
|
+
maxSockets: MAX_CONNS_PER_HOST,
|
64775
64777
|
// This timeout is separate from the request timeout, and is here to
|
64776
64778
|
// prevent stalled/idle connections
|
64777
64779
|
timeout: 6e4
|
@@ -64794,7 +64796,7 @@ var CouchChanges = class extends import_events.EventEmitter {
|
|
64794
64796
|
* @returns a page of changes.
|
64795
64797
|
*/
|
64796
64798
|
async changes(since, opts) {
|
64797
|
-
const batchSize = opts?.batchSize ??
|
64799
|
+
const batchSize = opts?.batchSize ?? DEFAULT_BATCH_SIZE;
|
64798
64800
|
const changesUrl = new import_url.URL(this.database, this.baseUrl);
|
64799
64801
|
changesUrl.searchParams.set("limit", batchSize.toFixed());
|
64800
64802
|
changesUrl.searchParams.set("since", since.toString());
|
@@ -64905,7 +64907,7 @@ function requestPromise(url, options, body) {
|
|
64905
64907
|
req.on("timeout", () => {
|
64906
64908
|
req.destroy(
|
64907
64909
|
new RetryableError(
|
64908
|
-
`Timeout after ${
|
64910
|
+
`Timeout after ${options.timeout}ms, aborting request`
|
64909
64911
|
)
|
64910
64912
|
);
|
64911
64913
|
});
|
@@ -65173,7 +65175,9 @@ async function handler(event, context) {
|
|
65173
65175
|
}
|
65174
65176
|
}
|
65175
65177
|
}
|
65176
|
-
console2.log(
|
65178
|
+
console2.log(
|
65179
|
+
`Received a batch of ${changes.totalCount} element(s), ${batch.length} after filtering`
|
65180
|
+
);
|
65177
65181
|
metrics.putMetric("ChangeCount" /* CHANGE_COUNT */, batch.length, import_aws_embedded_metrics.Unit.Count);
|
65178
65182
|
if (lastModified && lastModified < DAWN_OF_CONSTRUCTS) {
|
65179
65183
|
console2.log(
|