construct-hub 0.3.140 → 0.3.141

Sign up to get free protection for your applications and to get access to all the features.
package/.jsii CHANGED
@@ -13575,6 +13575,6 @@
13575
13575
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
13576
13576
  }
13577
13577
  },
13578
- "version": "0.3.140",
13579
- "fingerprint": "0XcywjVb5bUmPXfQ9jrynEPPJrw10nTZUMJPcN9V7i0="
13578
+ "version": "0.3.141",
13579
+ "fingerprint": "KCtqKUyXYK1Wrha71JfvT5HXwo4coTb7acdM+A5/7OE="
13580
13580
  }
@@ -280,7 +280,7 @@ class ConstructHub extends core_1.Construct {
280
280
  }
281
281
  exports.ConstructHub = ConstructHub;
282
282
  _a = JSII_RTTI_SYMBOL_1;
283
- ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.3.140" };
283
+ ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.3.141" };
284
284
  /**
285
285
  * (experimental) How possibly risky operations (such as doc-generation, which requires installing the indexed packages in order to trans-literate sample code) are isolated to mitigate possible arbitrary code execution vulnerabilities in and around `npm install` or the transliterator's use of the TypeScript compiler.
286
286
  *
@@ -274,5 +274,5 @@ class CodeArtifact {
274
274
  }
275
275
  exports.CodeArtifact = CodeArtifact;
276
276
  _a = JSII_RTTI_SYMBOL_1;
277
- CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.3.140" };
277
+ CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.3.141" };
278
278
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDREQUE4STtBQUU5SSxvREFBMkM7QUFDM0Msb0VBQTZEO0FBQzdELDhDQUEyRDtBQUMzRCxvREFBOEM7QUFDOUMsNENBQXFFO0FBQ3JFLDhDQUEwRDtBQUMxRCx3Q0FBMkU7QUFDM0UsNENBQWtIO0FBQ2xILGtEQUE2QztBQUU3QyxvRkFBK0U7QUFDL0Usb0ZBQWlLOzs7Ozs7QUFXakssTUFBYSxZQUFZOzs7O0lBQ3ZCLFlBQW9DLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBQzVELENBQUM7Ozs7OztJQUVNLElBQUksQ0FBQyxLQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBNEI7UUFDN0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNqRCxNQUFNLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxlQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtZQUNqRixpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyxTQUFTO1lBQzlDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGNBQWMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLGVBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxD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QyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDNUQ7WUFDRCxVQUFVLG9DQUEwQjtZQUNwQyxTQUFTLEVBQUUsMkNBQWlCO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQUdNLHlCQUF5QixDQUFDLElBQW9COztRQUNuRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsZUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDM0IsU0FBUyxFQUFFLDBCQUFTLENBQUMsR0FBRztZQUN4QixHQUFHLElBQUk7WUFDUCxhQUFhLEVBQUU7Z0JBQ2IsQ0FBQyxnREFBc0IsQ0FBQyxRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsbUNBQUksVUFBRyxDQUFDLFVBQVU7Z0JBQ2pGLENBQUMsK0NBQXFCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjO2dCQUM3RCxDQUFDLG1EQUF5QixDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUTthQUM1RDtZQUNELFVBQVUsb0RBQW1DO1lBQzdDLFNBQVMsRUFBRSwyQ0FBaUI7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzT0gsb0NBNE9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGFyaXNvbk9wZXJhdG9yLCBHcmFwaFdpZGdldCwgTWF0aEV4cHJlc3Npb24sIE1ldHJpYywgTWV0cmljT3B0aW9ucywgU3RhdGlzdGljLCBUcmVhdE1pc3NpbmdEYXRhIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuUmVwb3NpdG9yeSB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jb2RlYXJ0aWZhY3QnO1xuaW1wb3J0IHsgUnVsZSB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24gfSBmcm9tICdAYXdzLWNkay9hd3MtZXZlbnRzLXRhcmdldHMnO1xuaW1wb3J0IHsgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdAYXdzLWNkay9hd3MtaWFtJztcbmltcG9ydCB7IFRyYWNpbmcgfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBCdWNrZXQsIElCdWNrZXQgfSBmcm9tICdAYXdzLWNkay9hd3MtczMnO1xuaW1wb3J0IHsgUXVldWUsIFF1ZXVlRW5jcnlwdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1zcXMnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBBd3MsIENvbnN0cnVjdCwgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBjb2RlQXJ0aWZhY3RSZXBvc2l0b3J5VXJsLCBsYW1iZGFGdW5jdGlvblVybCwgbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwsIHNxc1F1ZXVlVXJsIH0gZnJvbSAnLi4vZGVlcC1saW5rJztcbmltcG9ydCB7IGZpbGxNZXRyaWMgfSBmcm9tICcuLi9tZXRyaWMtdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBJUGFja2FnZVNvdXJjZSwgUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zLCBQYWNrYWdlU291cmNlQmluZFJlc3VsdCB9IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdEZvcndhcmRlciB9IGZyb20gJy4vY29kZWFydGlmYWN0L2NvZGUtYXJ0aWZhY3QtZm9yd2FyZGVyJztcbmltcG9ydCB7IE1FVFJJQ1NfTkFNRVNQQUNFLCBNZXRyaWNOYW1lLCBET01BSU5fTkFNRV9ESU1FTlNJT04sIERPTUFJTl9PV05FUl9ESU1FTlNJT04sIFJFUE9TSVRPUllfTkFNRV9ESU1FTlNJT04gfSBmcm9tICcuL2NvZGVhcnRpZmFjdC9jb25zdGFudHMubGFtYmRhLXNoYXJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUFydGlmYWN0UHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnk6IENmblJlcG9zaXRvcnk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYnVja2V0PzogSUJ1Y2tldDtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0IGltcGxlbWVudHMgSVBhY2thZ2VTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29kZUFydGlmYWN0UHJvcHMpIHtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHNjb3BlOiBDb25zdHJ1Y3QsIHsgZGVueUxpc3QsIGluZ2VzdGlvbiwgbGljZW5zZUxpc3QsIG1vbml0b3JpbmcsIHF1ZXVlIH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyk6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0IHtcbiAgICBjb25zdCBpZFByZWZpeCA9IHRoaXMucHJvcHMucmVwb3NpdG9yeS5ub2RlLnBhdGg7XG4gICAgY29uc3QgcmVwb3NpdG9yeUlkID0gYCR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcn06JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWV9LyR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lfWA7XG5cbiAgICBjb25zdCBidWNrZXQgPSB0aGlzLnByb3BzLmJ1Y2tldCB8fCBuZXcgQnVja2V0KHNjb3BlLCBgJHtpZFByZWZpeH0vU3RhZ2luZ0J1Y2tldGAsIHtcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApIH1dLFxuICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWQoaW5nZXN0aW9uKTtcblxuICAgIGNvbnN0IGRscSA9IG5ldyBRdWV1ZShzY29wZSwgYCR7aWRQcmVmaXh9L0RMUWAsIHtcbiAgICAgIGVuY3J5cHRpb246IFF1ZXVlRW5jcnlwdGlvbi5LTVNfTUFOQUdFRCxcbiAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxNCksXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3J3YXJkZXIgPSBuZXcgQ29kZUFydGlmYWN0Rm9yd2FyZGVyKHNjb3BlLCBgJHtpZFByZWZpeH0vRm9yd2FyZGVyYCwge1xuICAgICAgZGVhZExldHRlclF1ZXVlOiBkbHEsXG4gICAgICBkZXNjcmlwdGlvbjogYFske3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfV0gSGFuZGxlIENvZGVBcnRpZmFjdCBFdmVudEJyaWRnZSBldmVudHNgLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBRVUVVRV9VUkw6IHF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwMjQsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgIH0pO1xuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb3J3YXJkZXIpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBsaWNlbnNlTGlzdC5ncmFudFJlYWQoZm9yd2FyZGVyKTtcbiAgICBxdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhmb3J3YXJkZXIpO1xuICAgIGZvcndhcmRlci5hZGRUb1JvbGVQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFsnY29kZWFydGlmYWN0OkdldFBhY2thZ2VWZXJzaW9uQXNzZXQnXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBTdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgICBzZXJ2aWNlOiAnY29kZWFydGlmYWN0JyxcbiAgICAgICAgICByZXNvdXJjZTogJ3BhY2thZ2UnLFxuICAgICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiBbXG4gICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICAgICAgICAnbnBtJywgLy8gcGFja2FnZSBmb3JtYXRcbiAgICAgICAgICAgICcqJywgLy8gbmFtZXNwYWNlL3BhY2thZ2UtbmFtZVxuICAgICAgICAgIF0uam9pbignLycpLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHNjb3BlLCBgJHtpZFByZWZpeH0vRXZlbnRCcmlkZ2VgLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0V2ZW50QnJpZGdlYCxcbiAgICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgICBzb3VyY2U6IFsnYXdzLmNvZGVhcnRpZmFjdCddLFxuICAgICAgICBkZXRhaWxUeXBlOiBbJ0NvZGVBcnRpZmFjdCBQYWNrYWdlIFZlcnNpb24gU3RhdGUgQ2hhbmdlJ10sXG4gICAgICAgIGRldGFpbDoge1xuICAgICAgICAgIGRvbWFpbk93bmVyOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgICAgIHBhY2thZ2VGb3JtYXQ6ICducG0nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9yd2FyZGVyKV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmYWlsdXJlQWxhcm0gPSBmb3J3YXJkZXIubWV0cmljRXJyb3JzKCkuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRmFpbHVyZXNgLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfS9Gb3J3YXJkZXJgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICBgVGhlIENvZGVBcnRpZmFjdCBmb3dhcmRlciBmb3IgJHtyZXBvc2l0b3J5SWR9IGlzIGZhaWxpbmdgLFxuICAgICAgICAnJyxcbiAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oYENvZGVBcnRpZmFjdDoke3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZX0gRmFpbHVyZXNgLCBmYWlsdXJlQWxhcm0pO1xuXG4gICAgY29uc3QgZGxxTm90RW1wdHlBbGFybSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICBleHByZXNzaW9uOiAnbVZpc2libGUgKyBtSGlkZGVuJyxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtVmlzaWJsZTogZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoeyBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICAgIG1IaWRkZW46IGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHsgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpIH0pLFxuICAgICAgfSxcbiAgICB9KS5jcmVhdGVBbGFybShzY29wZSwgYCR7aWRQcmVmaXh9L0ZvcndhcmRlci9ETFFOb3RFbXB0eWAsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0RMUU5vdEVtcHR5YCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgYFRoZSBDb2RlQXJ0aWZhY3QgZm93YXJkZXIgZm9yICR7cmVwb3NpdG9yeUlkfSBpcyBmYWlsaW5nYCxcbiAgICAgICAgJycsXG4gICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKX1gLFxuICAgICAgICBgTGluayB0byB0aGUgZGVhZCBsZXR0ZXIgcXVldWU6ICR7c3FzUXVldWVVcmwoZGxxKX1gLFxuICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oYENvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0gRExRIE5vdCBFbXB0eWAsIGRscU5vdEVtcHR5QWxhcm0pO1xuXG4gICAgcnVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtLCBkbHFOb3RFbXB0eUFsYXJtKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBgQ29kZUFydGlmYWN0OiAke3JlcG9zaXRvcnlJZH1gLFxuICAgICAgbGlua3M6IFt7XG4gICAgICAgIG5hbWU6ICdDb2RlQXJ0aWZhY3QnLFxuICAgICAgICB1cmw6IGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwodGhpcy5wcm9wcy5yZXBvc2l0b3J5KSxcbiAgICAgICAgcHJpbWFyeTogdHJ1ZSxcbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ0ZvcndhcmRlciBGdW5jdGlvbicsXG4gICAgICAgIHVybDogbGFtYmRhRnVuY3Rpb25VcmwoZm9yd2FyZGVyKSxcbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ1NlYXJjaCBMb2cgZ3JvdXAnLFxuICAgICAgICB1cmw6IGxhbWJkYVNlYXJjaExvZ0dyb3VwVXJsKGZvcndhcmRlciksXG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdETFEnLFxuICAgICAgICB1cmw6IHNxc1F1ZXVlVXJsKGRscSksXG4gICAgICB9XSxcbiAgICAgIGRhc2hib2FyZFdpZGdldHM6IFtcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0Z1bmN0aW9uIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoZm9yd2FyZGVyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvcndhcmRlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGZvcndhcmRlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoeyBsYWJlbDogJ1Zpc2libGUgTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZU51bWJlck9mTWVzc2FnZXNOb3RWaXNpYmxlKHsgbGFiZWw6ICdIaWRkZW4gTWVzc2FnZXMnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgICAgcmlnaHQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLCBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1F1YWxpdHkgTWV0cmljcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWModGhpcy5tZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KHsgbGFiZWw6ICdOb3QgYSBqc2lpIHBhY2thZ2UnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHsgbGFiZWw6ICdJbmVsaWdpYmxlIExpY2Vuc2UnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0RlbnlMaXN0ZWRDb3VudCh7IGxhYmVsOiAnRGVueSBMaXN0ZWQnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0RlbGV0ZWRDb3VudCh7IGxhYmVsOiAnRGVsZXRpb24gRXZlbnRzJyB9KSwgMCksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBtZXRyaWNEZW55TGlzdGVkQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcixcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERU5ZX0xJU1RFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBtZXRyaWNJbmVsaWdpYmxlTGljZW5zZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgbWV0cmljRGVsZXRlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuREVMRVRFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBtZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuTk9UX0pTSUlfRU5BQkxFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -427,5 +427,5 @@ class NpmJs {
427
427
  }
428
428
  exports.NpmJs = NpmJs;
429
429
  _a = JSII_RTTI_SYMBOL_1;
430
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.3.140" };
430
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.3.141" };
431
431
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtanMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS1zb3VyY2VzL25wbWpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQXVKO0FBQ3ZKLG9EQUFxRDtBQUNyRCxvRUFBNkQ7QUFDN0Qsb0RBQThDO0FBQzlDLGdGQUFtRTtBQUNuRSw0Q0FBcUU7QUFDckUsOENBQTBEO0FBQzFELHdDQUFvRDtBQUNwRCw0Q0FBMkU7QUFDM0Usa0RBQTZDO0FBRzdDLGdEQUE2QztBQUM3QywyQ0FBb0Q7QUFDcEQsNkVBQStHO0FBRS9HLDZEQUF3RDtBQUN4RCwrREFBMEQ7Ozs7OztBQWlCMUQsTUFBYSxLQUFLOzs7O0lBQ2hCLFlBQW9DLFFBQW9CLEVBQUU7UUFBdEIsVUFBSyxHQUFMLEtBQUssQ0FBaUI7SUFBRyxDQUFDOzs7Ozs7SUFFdkQsSUFBSSxDQUNULEtBQWdCLEVBQ2hCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUE0Qjs7UUFFdEcsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLHFCQUFxQixDQUFDLGNBQWMsRUFBRTtRQUVsRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLGVBQU0sQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUU7WUFDbEYsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztZQUM5QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixjQUFjLEVBQUUsQ0FBQyxFQUFFLE1BQU0sbUNBQStCLEVBQUUsVUFBVSxFQUFFLGVBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUMzRixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVCLE1BQU0sTUFBTSxHQUFHLElBQUksaUNBQWMsQ0FB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Q0FBQyxTQUFTO1lBQzVDLFNBQVMsRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFO1NBQ3JDLENBQUMsQ0FBQztRQUNILFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU5RSxPQUFPO1lBQ0wsSUFBSSw0QkFBVyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLElBQUksRUFBRTtvQkFDSixNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDO29CQUMvQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDekQ7Z0JBQ0QsZUFBZSxFQUFFLENBQUM7d0JBQ2hCLEtBQUssRUFBRSxTQUFTO3dCQUNoQixLQUFLLEVBQUUsUUFBUSxhQUFhLENBQUMsYUFBYSxFQUFFLEdBQUc7d0JBQy9DLEtBQUssRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFO3FCQUNqQyxDQUFDO2dCQUNGLFNBQVMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JCLEtBQUssRUFBRTtvQkFDTCxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztpQkFDckU7Z0JBQ0QsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN2QixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7O0FBM1lILHNCQTRZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBhcmlzb25PcGVyYXRvciwgR3JhcGhXaWRnZXQsIE1hdGhFeHByZXNzaW9uLCBNZXRyaWMsIE1ldHJpY09wdGlvbnMsIFN0YXRpc3RpYywgVHJlYXRNaXNzaW5nRGF0YSwgSVdpZGdldCB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IFJ1bGUsIFNjaGVkdWxlIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBUcmFjaW5nIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBTcXNFdmVudFNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlcyc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcywgQnVja2V0LCBJQnVja2V0IH0gZnJvbSAnQGF3cy1jZGsvYXdzLXMzJztcbmltcG9ydCB7IFF1ZXVlLCBRdWV1ZUVuY3J5cHRpb24gfSBmcm9tICdAYXdzLWNkay9hd3Mtc3FzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgRHVyYXRpb24gfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IGxhbWJkYUZ1bmN0aW9uVXJsLCBzM09iamVjdFVybCwgc3FzUXVldWVVcmwgfSBmcm9tICcuLi9kZWVwLWxpbmsnO1xuaW1wb3J0IHsgZmlsbE1ldHJpYyB9IGZyb20gJy4uL21ldHJpYy11dGlscyc7XG5pbXBvcnQgeyBJTW9uaXRvcmluZyB9IGZyb20gJy4uL21vbml0b3JpbmcvYXBpJztcbmltcG9ydCB0eXBlIHsgSVBhY2thZ2VTb3VyY2UsIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucywgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQgfSBmcm9tICcuLi9wYWNrYWdlLXNvdXJjZSc7XG5pbXBvcnQgeyBSVU5CT09LX1VSTCB9IGZyb20gJy4uL3J1bmJvb2stdXJsJztcbmltcG9ydCB7IE5wbUpzUGFja2FnZUNhbmFyeSB9IGZyb20gJy4vbnBtanMvY2FuYXJ5JztcbmltcG9ydCB7IE1BUktFUl9GSUxFX05BTUUsIE1FVFJJQ1NfTkFNRVNQQUNFLCBNZXRyaWNOYW1lLCBTM0tleVByZWZpeCB9IGZyb20gJy4vbnBtanMvY29uc3RhbnRzLmxhbWJkYS1zaGFyZWQnO1xuXG5pbXBvcnQgeyBOcG1Kc0ZvbGxvd2VyIH0gZnJvbSAnLi9ucG1qcy9ucG0tanMtZm9sbG93ZXInO1xuaW1wb3J0IHsgU3RhZ2VBbmROb3RpZnkgfSBmcm9tICcuL25wbWpzL3N0YWdlLWFuZC1ub3RpZnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5wbUpzUHJvcHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHN0YWdpbmdCdWNrZXQ/OiBJQnVja2V0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW5hYmxlQ2FuYXJ5PzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjYW5hcnlQYWNrYWdlPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNhbmFyeVNsYT86IER1cmF0aW9uO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBOcG1KcyBpbXBsZW1lbnRzIElQYWNrYWdlU291cmNlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IE5wbUpzUHJvcHMgPSB7fSkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHsgYmFzZVVybCwgZGVueUxpc3QsIGluZ2VzdGlvbiwgbGljZW5zZUxpc3QsIG1vbml0b3JpbmcsIHF1ZXVlLCByZXBvc2l0b3J5IH06IFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgKTogUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQge1xuICAgIHJlcG9zaXRvcnk/LmFkZEV4dGVybmFsQ29ubmVjdGlvbigncHVibGljOm5wbWpzJyk7XG5cbiAgICBjb25zdCBidWNrZXQgPSB0aGlzLnByb3BzLnN0YWdpbmdCdWNrZXQgfHwgbmV3IEJ1Y2tldChzY29wZSwgJ05wbUpzL1N0YWdpbmdCdWNrZXQnLCB7XG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbeyBwcmVmaXg6IFMzS2V5UHJlZml4LlNUQUdFRF9LRVlfUFJFRklYLCBleHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSB9XSxcbiAgICB9KTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkKGluZ2VzdGlvbik7XG5cbiAgICBjb25zdCBzdGFnZXIgPSBuZXcgU3RhZ2VBbmROb3RpZnkoc2NvcGUsICdOcG1Kcy1TdGFnZUFuZE5vdGlmeScsIHtcbiAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogbmV3IFF1ZXVlKHNjb3BlLCAnU3RhZ2VyRExRJywge1xuICAgICAgICBlbmNyeXB0aW9uOiBRdWV1ZUVuY3J5cHRpb24uS01TX01BTkFHRUQsXG4gICAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cygxNCksXG4gICAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIH0pLFxuICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L05wbUpTLVN0YWdlQW5kTm90aWZ5XSBTdGFnZXMgdGFyYmFsbHMgdG8gUzMgYW5kIG5vdGlmaWVzIENvbnN0cnVjdEh1YmAsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICBCVUNLRVRfTkFNRTogYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgIFFVRVVFX1VSTDogcXVldWUucXVldWVVcmwsXG4gICAgICB9LFxuICAgICAgbWVtb3J5U2l6ZTogMTBfMDI0LCAvLyAxMEdpQlxuICAgICAgcmV0cnlBdHRlbXB0czogMixcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShzdGFnZXIpO1xuICAgIGRlbnlMaXN0Py5ncmFudFJlYWQoc3RhZ2VyKTtcbiAgICBxdWV1ZS5ncmFudFNlbmRNZXNzYWdlcyhzdGFnZXIpO1xuXG4gICAgc3RhZ2VyLmFkZEV2ZW50U291cmNlKG5ldyBTcXNFdmVudFNvdXJjZShzdGFnZXIuZGVhZExldHRlclF1ZXVlISwgeyBiYXRjaFNpemU6IDEsIGVuYWJsZWQ6IGZhbHNlIH0pKTtcblxuXG4gICAgY29uc3QgZm9sbG93ZXIgPSBuZXcgTnBtSnNGb2xsb3dlcihzY29wZSwgJ05wbUpzJywge1xuICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzXSBQZXJpb2RpY2FsbHkgcXVlcnkgbnBtanMuY29tIGluZGV4IGZvciBuZXcgcGFja2FnZXNgLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX0VNRl9FTlZJUk9OTUVOVDogJ0xvY2FsJyxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBGVU5DVElPTl9OQU1FOiBzdGFnZXIuZnVuY3Rpb25OYW1lLFxuICAgICAgfSxcbiAgICAgIG1lbW9yeVNpemU6IDEwXzAyNCwgLy8gMTAgR2lCXG4gICAgICByZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zOiAxLCAvLyBPbmx5IG9uZSBleGVjdXRpb24gYXQgYSB0aW1lLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgb24gdGhlIFMzIG1hcmtlciBvYmplY3RcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICB9KTtcblxuICAgIGJ1Y2tldC5ncmFudFJlYWRXcml0ZShmb2xsb3dlciwgTUFSS0VSX0ZJTEVfTkFNRSk7XG4gICAgZGVueUxpc3Q/LmdyYW50UmVhZChmb2xsb3dlcik7XG4gICAgbGljZW5zZUxpc3QuZ3JhbnRSZWFkKGZvbGxvd2VyKTtcbiAgICBzdGFnZXIuZ3JhbnRJbnZva2UoZm9sbG93ZXIpO1xuXG4gICAgY29uc3QgcnVsZSA9IG5ldyBSdWxlKHNjb3BlLCAnTnBtSnMvU2NoZWR1bGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TY2hlZHVsZWAsXG4gICAgICBzY2hlZHVsZTogU2NoZWR1bGUucmF0ZShEdXJhdGlvbi5taW51dGVzKDUpKSxcbiAgICAgIHRhcmdldHM6IFtuZXcgTGFtYmRhRnVuY3Rpb24oZm9sbG93ZXIpXSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJBbGFybXMoc2NvcGUsIGZvbGxvd2VyLCBzdGFnZXIsIG1vbml0b3JpbmcsIHJ1bGUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGZvbGxvd2VyLm5vZGUucGF0aCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHsgbmFtZTogJ05wbUpzIEZvbGxvd2VyJywgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlciksIHByaW1hcnk6IHRydWUgfSxcbiAgICAgICAgeyBuYW1lOiAnTWFya2VyIE9iamVjdCcsIHVybDogczNPYmplY3RVcmwoYnVja2V0LCBNQVJLRVJfRklMRV9OQU1FKSB9LFxuICAgICAgICB7IG5hbWU6ICdTdGFnZXInLCB1cmw6IGxhbWJkYUZ1bmN0aW9uVXJsKHN0YWdlcikgfSxcbiAgICAgICAgeyBuYW1lOiAnU3RhZ2VyIERMUScsIHVybDogc3FzUXVldWVVcmwoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEpIH0sXG4gICAgICBdLFxuICAgICAgZGFzaGJvYXJkV2lkZ2V0czogW1xuICAgICAgICBbXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnRm9sbG93ZXIgSGVhbHRoJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb2xsb3dlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb2xsb3dlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHRoaXMubWV0cmljUmVtYWluaW5nVGltZSh7IGxhYmVsOiAnUmVtYWluaW5nIFRpbWUnIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnU3RhZ2VyIEhlYWx0aCcsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLm1ldHJpY0ludm9jYXRpb25zKHsgbGFiZWw6ICdJbnZvY2F0aW9ucycgfSkpLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5tZXRyaWNFcnJvcnMoeyBsYWJlbDogJ0Vycm9ycycgfSkpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdDb3VjaERCIEZvbGxvd2VyJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0NoYW5nZUNvdW50KHsgbGFiZWw6ICdDaGFuZ2UgQ291bnQnIH0pLCAwKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY1VucHJvY2Vzc2FibGVFbnRpdHkoeyBsYWJlbDogJ1VucHJvY2Vzc2FibGUnIH0pLCAwKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKHRoaXMubWV0cmljTnBtSnNDaGFuZ2VBZ2UoeyBsYWJlbDogJ0xhZyB0byBucG1qcy5jb20nIH0pLCAnUkVQRUFUJyksXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWModGhpcy5tZXRyaWNQYWNrYWdlVmVyc2lvbkFnZSh7IGxhYmVsOiAnUGFja2FnZSBWZXJzaW9uIEFnZScgfSksICdSRVBFQVQnKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByaWdodFlBeGlzOiB7IGxhYmVsOiAnTWlsbGlzZWNvbmRzJywgbWluOiAwLCBzaG93VW5pdHM6IGZhbHNlIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICAgIHdpZHRoOiAxMixcbiAgICAgICAgICAgIHRpdGxlOiAnQ291Y2hEQiBDaGFuZ2VzJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyh0aGlzLm1ldHJpY0xhc3RTZXEoeyBsYWJlbDogJ0xhc3QgU2VxdWVuY2UgTnVtYmVyJyB9KSwgJ1JFUEVBVCcpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSwgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1N0YWdlciBEZWFkLUxldHRlciBRdWV1ZScsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7IGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycgfSksIDApLFxuICAgICAgICAgICAgICBmaWxsTWV0cmljKHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoeyBsYWJlbDogJ0ludmlzaWJsZSBNZXNzYWdlcycgfSksIDApLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlQWdlT2ZPbGRlc3RNZXNzYWdlKHsgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZScgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi4oKHRoaXMucHJvcHMuZW5hYmxlQ2FuYXJ5ID8/IHRydWUpXG4gICAgICAgICAgICA/IHRoaXMucmVnaXN0ZXJDYW5hcnkoXG4gICAgICAgICAgICAgIGZvbGxvd2VyLFxuICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVBhY2thZ2UgPz8gJ2NvbnN0cnVjdC1odWItcHJvYmUnLFxuICAgICAgICAgICAgICB0aGlzLnByb3BzLmNhbmFyeVNsYSA/PyBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICAgICAgICBidWNrZXQsXG4gICAgICAgICAgICAgIGJhc2VVcmwsXG4gICAgICAgICAgICAgIG1vbml0b3JpbmcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIG1ldHJpY0JhdGNoUHJvY2Vzc2luZ1RpbWUob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5CQVRDSF9QUk9DRVNTSU5HX1RJTUUsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIG1ldHJpY0NoYW5nZUNvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5DSEFOR0VfQ09VTlQsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgbWV0cmljTGFzdFNlcShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkxBU1RfU0VRLFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBtZXRyaWNOcG1Kc0NoYW5nZUFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUlOSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLk5QTUpTX0NIQU5HRV9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBtZXRyaWNQYWNrYWdlVmVyc2lvbkFnZShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuTUFYSU1VTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9BR0UsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIG1ldHJpY1BhY2thZ2VWZXJzaW9uQ291bnQob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlBBQ0tBR0VfVkVSU0lPTl9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgbWV0cmljUmVsZXZhbnRQYWNrYWdlVmVyc2lvbnMob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLlJFTEVWQU5UX1BBQ0tBR0VfVkVSU0lPTlMsXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIG1ldHJpY1JlbWFpbmluZ1RpbWUob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLk1JTklNVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5SRU1BSU5JTkdfVElNRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgbWV0cmljVW5wcm9jZXNzYWJsZUVudGl0eShvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuVU5QUk9DRVNTQUJMRV9FTlRJVFksXG4gICAgICBuYW1lc3BhY2U6IE1FVFJJQ1NfTkFNRVNQQUNFLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFsYXJtcyhzY29wZTogQ29uc3RydWN0LCBmb2xsb3dlcjogTnBtSnNGb2xsb3dlciwgc3RhZ2VyOiBTdGFnZUFuZE5vdGlmeSwgbW9uaXRvcmluZzogSU1vbml0b3JpbmcsIHNjaGVkdWxlOiBSdWxlKSB7XG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9sbG93ZXIubWV0cmljRXJyb3JzKCkuY3JlYXRlQWxhcm0oc2NvcGUsICdOcG1Kcy9Gb2xsb3dlci9GYWlsdXJlcycsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9Gb2xsb3dlci9GYWlsdXJlc2AsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSnMgZm9sbG93ZXIgZnVuY3Rpb24gZmFpbGVkIScsXG4gICAgICAgICcnLFxuICAgICAgICBgUnVuQm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgICAnJyxcbiAgICAgICAgYERpcmVjdCBsaW5rIHRvIExhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb2xsb3dlcil9YCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLk1JU1NJTkcsXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybSgnTnBtSnMvRm9sbG93ZXIgRmFpbHVyZXMnLCBmYWlsdXJlQWxhcm0pO1xuXG4gICAgY29uc3Qgbm90UnVubmluZ0FsYXJtID0gZm9sbG93ZXIubWV0cmljSW52b2NhdGlvbnMoKS5jcmVhdGVBbGFybShzY29wZSwgJ05wbUpzL0ZvbGxvd2VyL05vdFJ1bm5pbmcnLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvTm90UnVubmluZ2AsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgICdUaGUgTnBtSnMgZm9sbG93ZXIgZnVuY3Rpb24gaXMgbm90IHJ1bm5pbmchJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oJ05wbUpzL0ZvbGxvd2VyIE5vdCBSdW5uaW5nJywgbm90UnVubmluZ0FsYXJtKTtcblxuICAgIGNvbnN0IG5vQ2hhbmdlQWxhcm0gPSB0aGlzLm1ldHJpY0NoYW5nZUNvdW50KCkuY3JlYXRlQWxhcm0oc2NvcGUsICdOcG1Kcy9Gb2xsb3dlci9Ob0NoYW5nZXMnLCB7XG4gICAgICBhbGFybU5hbWU6IGAke3Njb3BlLm5vZGUucGF0aH0vTnBtSnMvRm9sbG93ZXIvTm9DaGFuZ2VzYCxcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IFtcbiAgICAgICAgJ1RoZSBOcG1KcyBmb2xsb3dlciBmdW5jdGlvbiBpcyBubyBkaXNjb3ZlcmluZyBhbnkgY2hhbmdlcyBmcm9tIENvdWNoREIhJyxcbiAgICAgICAgJycsXG4gICAgICAgIGBSdW5Cb29rOiAke1JVTkJPT0tfVVJMfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgRGlyZWN0IGxpbmsgdG8gTGFtYmRhIGZ1bmN0aW9uOiAke2xhbWJkYUZ1bmN0aW9uVXJsKGZvbGxvd2VyKX1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkxFU1NfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIC8vIElmIHRoZSBtZXRyaWMgaXMgbm90IGVtaXR0ZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIHplcm8uXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLkJSRUFDSElORyxcbiAgICB9KTtcbiAgICBtb25pdG9yaW5nLmFkZExvd1NldmVyaXR5QWxhcm0oJ05wIG5wbWpzLmNvbSBjaGFuZ2VzIGRpc2NvdmVyZWQnLCBub0NoYW5nZUFsYXJtKTtcblxuICAgIGNvbnN0IGRscU5vdEVtcHR5QWxhcm0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogJ21WaXNpYmxlICsgbUhpZGRlbicsXG4gICAgICB1c2luZ01ldHJpY3M6IHtcbiAgICAgICAgbVZpc2libGU6IHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoeyBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICAgIG1IaWRkZW46IHN0YWdlci5kZWFkTGV0dGVyUXVldWUhLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoeyBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSkgfSksXG4gICAgICB9LFxuICAgIH0pLmNyZWF0ZUFsYXJtKHNjb3BlLCBgJHtzY29wZS5ub2RlLnBhdGh9L05wbUpzL1N0YWdlci9ETFFOb3RFbXB0eWAsIHtcbiAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9OcG1Kcy9TdGFnZXIvRExRTm90RW1wdHlgLFxuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAnVGhlIE5wbUpTIHBhY2thZ2Ugc3RhZ2VyIGlzIGZhaWxpbmcgLSBpdHMgZGVhZCBsZXR0ZXIgcXVldWUgaXMgbm90IGVtcHR5JyxcbiAgICAgICAgJycsXG4gICAgICAgIGBMaW5rIHRvIHRoZSBsYW1iZGEgZnVuY3Rpb246ICR7bGFtYmRhRnVuY3Rpb25Vcmwoc3RhZ2VyKX1gLFxuICAgICAgICBgTGluayB0byB0aGUgZGVhZCBsZXR0ZXIgcXVldWU6ICR7c3FzUXVldWVVcmwoc3RhZ2VyLmRlYWRMZXR0ZXJRdWV1ZSEpfWAsXG4gICAgICAgICcnLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HLFxuICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkSGlnaFNldmVyaXR5QWxhcm0oJ05wbUpzL1N0YWdlciBETFEgTm90IEVtcHR5JywgZGxxTm90RW1wdHlBbGFybSk7XG5cbiAgICAvLyBGaW5hbGx5IC0gdGhlIFwibm90IHJ1bm5pbmdcIiBhbGFybSBkZXBlbmRzIG9uIHRoZSBzY2hlZHVsZSAoaXQgd29uJ3QgcnVuIHVudGlsIHRoZSBzY2hlZHVsZVxuICAgIC8vIGV4aXN0cyEpLCBhbmQgdGhlIHNjaGVkdWxlIGRlcGVuZHMgb24gdGhlIGZhaWx1cmUgYWxhcm0gZXhpc3RpbmcgKHdlIGRvbid0IHdhbnQgaXQgdG8gcnVuXG4gICAgLy8gYmVmb3JlIHdlIGNhbiBrbm93IGl0IGlzIGZhaWxpbmcpLiBUaGlzIG1lYW5zIHRoZSByZXR1cm5lZCBgSURlcGVuZGFibGVgIGVmZmVjdGl2ZWx5IGVuc3VyZXNcbiAgICAvLyBhbGwgYWxhcm1zIGhhdmUgYmVlbiBwcm92aXNpb25uZWQgYWxyZWFkeSEgSXNuJ3QgaXQgbmljZSFcbiAgICBub3RSdW5uaW5nQWxhcm0ubm9kZS5hZGREZXBlbmRlbmN5KHNjaGVkdWxlKTtcbiAgICBzY2hlZHVsZS5ub2RlLmFkZERlcGVuZGVuY3koZmFpbHVyZUFsYXJtKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJDYW5hcnkoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICAgIHZpc2liaWxpdHlTbGE6IER1cmF0aW9uLFxuICAgIGJ1Y2tldDogSUJ1Y2tldCxcbiAgICBjb25zdHJ1Y3RIdWJCYXNlVXJsOiBzdHJpbmcsXG4gICAgbW9uaXRvcmluZzogSU1vbml0b3JpbmcsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgY29uc3QgY2FuYXJ5ID0gbmV3IE5wbUpzUGFja2FnZUNhbmFyeShzY29wZSwgJ0NhbmFyeScsIHsgYnVja2V0LCBjb25zdHJ1Y3RIdWJCYXNlVXJsLCBwYWNrYWdlTmFtZSB9KTtcblxuICAgIGNvbnN0IGFsYXJtID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIGV4cHJlc3Npb246ICdNQVgoW21Ed2VsbCwgbVRUQ10pJyxcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIHVzaW5nTWV0cmljczoge1xuICAgICAgICBtRHdlbGw6IGNhbmFyeS5tZXRyaWNEd2VsbFRpbWUoKSxcbiAgICAgICAgbVRUQzogY2FuYXJ5Lm1ldHJpY1RpbWVUb0NhdGFsb2coKSxcbiAgICAgIH0sXG4gICAgfSkuY3JlYXRlQWxhcm0oY2FuYXJ5LCAnQWxhcm0nLCB7XG4gICAgICBhbGFybU5hbWU6IGAke2NhbmFyeS5ub2RlLnBhdGh9L1NMQS1CcmVhY2hlZGAsXG4gICAgICBhbGFybURlc2NyaXB0aW9uOiBbXG4gICAgICAgIGBOZXcgdmVyc2lvbnMgb2YgJHtwYWNrYWdlTmFtZX0gaGF2ZSBiZWVuIHB1Ymxpc2hlZCBvdmVyICR7dmlzaWJpbGl0eVNsYS50b0h1bWFuU3RyaW5nKCl9IGFnbyBhbmQgYXJlIHN0aWxsIG5vdCB2aXNpYmxlIGluIGNvbnN0cnVjdCBodWJgLFxuICAgICAgICBgUnVuYm9vazogJHtSVU5CT09LX1VSTH1gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9USFJFU0hPTEQsXG4gICAgICBldmFsdWF0aW9uUGVyaW9kczogMixcbiAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGRhdGEsIHRoZSBjYW5hcnkgbWlnaHQgbm90IGJlIHJ1bm5pbmcsIHNvLi4uICpDaHVja2xlcyogd2UncmUgaW4gZGFuZ2VyIVxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5CUkVBQ0hJTkcsXG4gICAgICB0aHJlc2hvbGQ6IHZpc2liaWxpdHlTbGEudG9TZWNvbmRzKCksXG4gICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybSgnTmV3IHZlcnNpb24gdmlzaWJpbGl0eSBTTEEgYnJlYWNoZWQnLCBhbGFybSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgIHRpdGxlOiAnUGFja2FnZSBDYW5hcnknLFxuICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgY2FuYXJ5Lm1ldHJpY0R3ZWxsVGltZSh7IGxhYmVsOiAnRHdlbGwgVGltZScgfSksXG4gICAgICAgICAgY2FuYXJ5Lm1ldHJpY1RpbWVUb0NhdGFsb2coeyBsYWJlbDogJ1RpbWUgdG8gQ2F0YWxvZycgfSksXG4gICAgICAgIF0sXG4gICAgICAgIGxlZnRBbm5vdGF0aW9uczogW3tcbiAgICAgICAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgICAgICAgIGxhYmVsOiBgU0xBICgke3Zpc2liaWxpdHlTbGEudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICAgIHZhbHVlOiB2aXNpYmlsaXR5U2xhLnRvU2Vjb25kcygpLFxuICAgICAgICB9XSxcbiAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICByaWdodDogW1xuICAgICAgICAgIGNhbmFyeS5tZXRyaWNUcmFja2VkVmVyc2lvbkNvdW50KHsgbGFiZWw6ICdUcmFja2VkIFZlcnNpb24gQ291bnQnIH0pLFxuICAgICAgICBdLFxuICAgICAgICByaWdodFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgfSksXG4gICAgXTtcbiAgfVxufVxuIl19
@@ -46,7 +46,7 @@ class TagCondition {
46
46
  }
47
47
  exports.TagCondition = TagCondition;
48
48
  _a = JSII_RTTI_SYMBOL_1;
49
- TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.3.140" };
49
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.3.141" };
50
50
  /**
51
51
  * (experimental) Logic operators for performing specific conditional logic.
52
52
  *
@@ -130,5 +130,5 @@ class TagConditionField {
130
130
  }
131
131
  exports.TagConditionField = TagConditionField;
132
132
  _b = JSII_RTTI_SYMBOL_1;
133
- TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.3.140" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.3.141" };
134
134
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQXlEQSxNQUFzQixZQUFZOzs7Ozs7SUFFaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQzs7Ozs7O0lBR0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQXFCO1FBQ2hDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBcUI7UUFDakMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7Ozs7SUFHRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBYztRQUM1QixPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzs7QUFuQkgsb0NBc0JDOzs7Ozs7OztBQUdELElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQixvQ0FBVyxDQUFBO0lBQ1gsa0NBQVMsQ0FBQTtJQUNULG9DQUFXLENBQUE7SUFDWCwwQ0FBaUIsQ0FBQTtJQUNqQiw4Q0FBcUIsQ0FBQTtJQUNyQixvREFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBUFcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFPaEM7QUFFRCxNQUFNLGlCQUFrQixTQUFRLFlBQVk7SUFFMUMsWUFDbUIsSUFBMkIsRUFDM0IsUUFBd0I7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFIUyxTQUFJLEdBQUosSUFBSSxDQUF1QjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUgzQixZQUFPLEdBQUcsSUFBSSxDQUFDO0lBTS9CLENBQUM7SUFFTSxJQUFJO1FBQ1QsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNqRCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBTSxxQkFBc0IsU0FBUSxZQUFZO0lBRTlDLFlBQ21CLElBQTJCLEVBQzNCLEdBQWEsRUFDYixLQUFhO1FBRTlCLEtBQUssRUFBRSxDQUFDO1FBSlMsU0FBSSxHQUFKLElBQUksQ0FBdUI7UUFDM0IsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFKaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7SUFPbkMsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0Y7Ozs7OztBQUdELE1BQWEsaUJBQWlCOzs7O0lBQzVCLFlBQW9DLEtBQWU7UUFBZixVQUFLLEdBQUwsS0FBSyxDQUFVO0lBQUcsQ0FBQzs7Ozs7O0lBR2hELEVBQUUsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sSUFBSSxxQkFBcUIsQ0FDOUIscUJBQXFCLENBQUMsTUFBTSxFQUM1QixJQUFJLENBQUMsS0FBSyxFQUNWLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBR00sUUFBUSxDQUFDLEtBQVU7UUFDeEIsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixxQkFBcUIsQ0FBQyxRQUFRLEVBQzlCLElBQUksQ0FBQyxLQUFLLEVBQ1YsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDOzs7Ozs7SUFHTSxVQUFVLENBQUMsS0FBYTtRQUM3QixPQUFPLElBQUkscUJBQXFCLENBQzlCLHFCQUFxQixDQUFDLFdBQVcsRUFDakMsSUFBSSxDQUFDLEtBQUssRUFDVixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7O0FBNUJILDhDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGxhYmVsOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkaXNwbGF5OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBncm91cEJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0Jhc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gIHJlYWRvbmx5IHR5cGU6IFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBjaGlsZHJlbj86IFRhZ0NvbmRpdGlvbkNvbmZpZ1tdO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdDb25maWcgZXh0ZW5kcyBQYWNrYWdlVGFnQmFzZSB7XG4gIHJlYWRvbmx5IGNvbmRpdGlvbjogVGFnQ29uZGl0aW9uQ29uZmlnO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzdGF0aWMgbm90KC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuTk9ULCBjb25kcyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzdGF0aWMgZmllbGQoLi4ua2V5czogc3RyaW5nW10pOiBUYWdDb25kaXRpb25GaWVsZCB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25GaWVsZChrZXlzKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgZW51bSBUYWdDb25kaXRpb25Mb2dpY1R5cGUge1xuICBBTkQgPSAnQU5EJyxcbiAgT1IgPSAnT1InLFxuICBOT1QgPSAnTk9UJyxcbiAgRVFVQUxTID0gJ0VRVUFMUycsXG4gIElOQ0xVREVTID0gJ0lOQ0xVREVTJyxcbiAgU1RBUlRTX1dJVEggPSAnU1RBUlRTX1dJVEgnLFxufVxuXG5jbGFzcyBUYWdDb25kaXRpb25Mb2dpYyBleHRlbmRzIFRhZ0NvbmRpdGlvbiB7XG4gIHB1YmxpYyByZWFkb25seSBpc0xvZ2ljID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpbGRyZW46IFRhZ0NvbmRpdGlvbltdLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogVGFnQ29uZGl0aW9uQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4ubWFwKGNvbmQgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5OiBzdHJpbmdbXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZCgpOiBUYWdDb25kaXRpb25Db25maWcge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfTtcbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgVGFnQ29uZGl0aW9uRmllbGQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWVsZDogc3RyaW5nW10pIHt9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGVxKHZhbHVlOiBhbnkpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLkVRVUFMUyxcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZSxcbiAgICApO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBpbmNsdWRlcyh2YWx1ZTogYW55KTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvblByZWRpY2F0ZShcbiAgICAgIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5JTkNMVURFUyxcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZSxcbiAgICApO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -267,7 +267,7 @@ class SpdxLicense {
267
267
  }
268
268
  exports.SpdxLicense = SpdxLicense;
269
269
  _a = JSII_RTTI_SYMBOL_1;
270
- SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.3.140" };
270
+ SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.3.141" };
271
271
  SpdxLicense._ALL = new Map();
272
272
  //#region Individual SPDX Licenses
273
273
  /**
package/package.json CHANGED
@@ -134,7 +134,7 @@
134
134
  "case": "^1.6.3",
135
135
  "cdk-triggers": "^0.0.175",
136
136
  "cdk-watchful": "0.5.196",
137
- "construct-hub-webapp": "^0.1.424",
137
+ "construct-hub-webapp": "^0.1.425",
138
138
  "constructs": "^3.3.69",
139
139
  "esbuild": "^0.13.15",
140
140
  "eslint": "^7.32.0",
@@ -207,7 +207,7 @@
207
207
  "main": "lib/index.js",
208
208
  "license": "Apache-2.0",
209
209
  "homepage": "https://github.com/cdklabs",
210
- "version": "0.3.140",
210
+ "version": "0.3.141",
211
211
  "jest": {
212
212
  "maxConcurrency": 2,
213
213
  "moduleNameMapper": {
@@ -7,14 +7,14 @@
7
7
  "main.css": "/static/css/main.1e6d8b38.chunk.css",
8
8
  "main.js": "/static/js/main.8038c15f.chunk.js",
9
9
  "main.js.map": "/static/js/main.8038c15f.chunk.js.map",
10
- "runtime-main.js": "/static/js/runtime-main.6f10a9e2.js",
11
- "runtime-main.js.map": "/static/js/runtime-main.6f10a9e2.js.map",
10
+ "runtime-main.js": "/static/js/runtime-main.3666b7b5.js",
11
+ "runtime-main.js.map": "/static/js/runtime-main.3666b7b5.js.map",
12
12
  "static/js/4.e051c405.chunk.js": "/static/js/4.e051c405.chunk.js",
13
13
  "static/js/4.e051c405.chunk.js.map": "/static/js/4.e051c405.chunk.js.map",
14
14
  "static/js/5.05213cd1.chunk.js": "/static/js/5.05213cd1.chunk.js",
15
15
  "static/js/5.05213cd1.chunk.js.map": "/static/js/5.05213cd1.chunk.js.map",
16
- "static/js/6.4a34e978.chunk.js": "/static/js/6.4a34e978.chunk.js",
17
- "static/js/6.4a34e978.chunk.js.map": "/static/js/6.4a34e978.chunk.js.map",
16
+ "static/js/6.d05c0b08.chunk.js": "/static/js/6.d05c0b08.chunk.js",
17
+ "static/js/6.d05c0b08.chunk.js.map": "/static/js/6.d05c0b08.chunk.js.map",
18
18
  "static/js/7.ebf6a179.chunk.js": "/static/js/7.ebf6a179.chunk.js",
19
19
  "static/js/7.ebf6a179.chunk.js.map": "/static/js/7.ebf6a179.chunk.js.map",
20
20
  "static/js/8.8e96ad43.chunk.js": "/static/js/8.8e96ad43.chunk.js",
@@ -44,7 +44,7 @@
44
44
  "static/js/5.05213cd1.chunk.js.LICENSE.txt": "/static/js/5.05213cd1.chunk.js.LICENSE.txt"
45
45
  },
46
46
  "entrypoints": [
47
- "static/js/runtime-main.6f10a9e2.js",
47
+ "static/js/runtime-main.3666b7b5.js",
48
48
  "static/js/5.05213cd1.chunk.js",
49
49
  "static/css/main.1e6d8b38.chunk.css",
50
50
  "static/js/main.8038c15f.chunk.js"
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#ffffff"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Construct Hub</title><script>var AWSMA={config:{customPageview:!0}}</script><script src="https://a0.awsstatic.com/s_code/js/3.0/awshome_s_code.js"></script><link href="/static/css/main.1e6d8b38.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.6f10a9e2.js"></script><script src="/static/js/5.05213cd1.chunk.js"></script><script src="/static/js/main.8038c15f.chunk.js"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#ffffff"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Construct Hub</title><script>var AWSMA={config:{customPageview:!0}}</script><script src="https://a0.awsstatic.com/s_code/js/3.0/awshome_s_code.js"></script><link href="/static/css/main.1e6d8b38.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.3666b7b5.js"></script><script src="/static/js/5.05213cd1.chunk.js"></script><script src="/static/js/main.8038c15f.chunk.js"></script></body></html>
@@ -1,2 +1,2 @@
1
- (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[6],{248:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(0),c=n(265),r={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(123),o=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(i.b)(r[s]);Object(a.useEffect)((function(){l()}),[l]);var d=n.suffix,u=void 0===d||d,b=n.title,j=n.description,h=u?"".concat(b," - Construct Hub"):b;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(c.a,{children:[!1,Object(o.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(o.jsx)("meta",{charSet:"utf-8"}),Object(o.jsx)("title",{children:h}),Object(o.jsx)("meta",{content:h,property:"og:title"}),Object(o.jsx)("meta",{content:h,name:"twitter:title"}),Object(o.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(o.jsx)("meta",{content:j,name:"description"}),Object(o.jsx)("meta",{content:j,property:"og:description"}),Object(o.jsx)("meta",{content:j,name:"twitter:description"})]}),t]})}},258:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var a=n(6),c=n(14),r=n(127),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat(Object(c.a)(e),[t.highlight]):e}),[])},o=function(e){for(var t=e.packageTags,n=e.keywords,i=new Array,o=new Set,s=0,l=[].concat(Object(c.a)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return Object(a.a)(Object(a.a)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),Object(c.a)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!r.a.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();o.has(u)||(i.push(d),o.add(u))}return i}},259:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return o}));var a=n(13),c=function(e,t){return t?"".concat(t,"/").concat(e):e},r=function(e,t,n){var r="".concat(a.a.PACKAGES_PREFIX,"/"),i=c(e,n),o="/v".concat(t);return"".concat(r).concat(i).concat(o)},i=function(e){var t=e;return(t.startsWith("~")||t.startsWith("^"))&&(t=t.substring(1)),t},o=function(e,t){var n=e.packages.filter((function(e){return e.name===t}));return n.length>1?n.sort((function(e,t){var n=new Date(e.metadata.date);return new Date(t.metadata.date).getTime()-n.getTime()}))[0]:n[0]}},264:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(0),c=n(22),r=function(){var e=Object(c.h)().search;return Object(a.useMemo)((function(){return new URLSearchParams(e)}),[e])}},271:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(74),c=function(e){var t=Object(a.b)().data;return(null!==t&&void 0!==t?t:{})[e]}},272:function(e,t,n){"use strict";n.d(t,"a",(function(){return j}));var a=n(5),c=n(0),r=n(22),i=n(122),o=n(13),s=n(264),l=i.d.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.e.has(e)},b=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(d))&&void 0!==t?t:"";if(u(n))return n}catch(a){}return l},j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,i=Object(r.h)(),l=i.pathname,j=i.hash,h=Object(r.g)(),O=h.replace,f=Object(s.a)(),m=f.get(o.b.LANGUAGE),g=Object(c.useState)((function(){return b(m)})),p=Object(a.a)(g,2),x=p[0],C=p[1];Object(c.useEffect)((function(){u(m)&&m!==x&&C(m)}),[m]),Object(c.useEffect)((function(){m!==x&&t&&(f.set(o.b.LANGUAGE,x),O({pathname:l,hash:j,search:f.toString()}))}),[x,t]);var v=Object(c.useCallback)((function(e){if(C(e),n)try{localStorage.setItem(d,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[x,v]}),[x,v])}},283:function(e,t,n){"use strict";var a;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return N})),function(e){e.Wide="wide"}(a||(a={}));var c=n(0),r=n(392),i=n(154),o=n(214),s=n(238),l=n(232),d=n(208),u=n(638),b=n(91),j=n(88),h=n(49),O=n(284),f=n(63),m=Object(f.a)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),g=n(1),p=function(e){var t=e["data-testid"],n=e.tooltip,a=e.value;return Object(g.jsx)(l.a,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:Object(g.jsx)(d.a,{"data-testid":t,fontSize:"xs",zIndex:1,children:a})})},x=function(){var e,t,n,a=E(),c=a.author,r=a.metadata.date,i=a.name,o=Object(b.b)().data,s=null===o||void 0===o||null===(e=o.packages)||void 0===e||null===(t=e[i])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,l="string"===typeof c?c:c.name,d=new Date(r);return Object(g.jsxs)(g.Fragment,{children:[void 0!==s&&Object(g.jsx)(p,{"data-testid":m.downloads,tooltip:"Download numbers are periodically sourced from the NPM registry",value:"".concat(s.toLocaleString()," weekly downloads")}),Object(g.jsx)(p,{"data-testid":m.published,value:Object(g.jsx)(O.a,{date:d,fontSize:"xs",formattedDate:Object(u.a)(d,{addSuffix:!0})})}),Object(g.jsx)(p,{"data-testid":m.author,value:Object(g.jsxs)(g.Fragment,{children:["By"," ",Object(g.jsx)(h.a,{color:"blue.500",to:Object(j.c)({query:l}),children:l})]})})]})},C=n(5),v=n(224),w=n(34),y=n(272),k=n(129),S=function(e){var t=e.comment;return Object(g.jsxs)(d.a,{"data-testid":m.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[Object(g.jsxs)(d.a,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},L=function(){var e=Object(y.a)(),t=Object(C.a)(e,1)[0],n=E(),a=n.description,c=n.comment,i=n.metadata.constructFramework,s=n.name,l=n.version,u=null===i||void 0===i?void 0:i.name,b=null===i||void 0===i?void 0:i.majorVersion;return Object(g.jsxs)(g.Fragment,{children:[Object(g.jsx)(r.b,{as:w.b,to:Object(j.a)({name:s,version:l,language:t}),children:Object(g.jsxs)(o.a,{align:"center",children:[Object(g.jsx)(k.a,{majorVersion:b,mr:2,name:u}),Object(g.jsx)(v.a,{as:"h3",color:"blue.800","data-testid":m.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),c?Object(g.jsx)(S,{comment:c}):Object(g.jsx)(d.a,{color:"blue.800","data-testid":m.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},D=n(6),T=n(204),A=n(258),H=n(285),I=function(){var e,t,n=(null!==(e=null===(t=E())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,a=void 0===n?[]:n,c=Object(A.a)(a),r=Object(C.a)(c,1)[0];return Object(g.jsx)(T.a,{fontSize:"xs",children:Object(g.jsx)(H.a,Object(D.a)({},r))})},z=n(122),F=n(287),W={sm:5,md:6,lg:8},M=function(e){var t=e.isRounded,n=void 0!==t&&t,a=e.languages,c=e.name,r=e.size,i=void 0===r?"md":r,o=e.version,s=Object.keys(null!==a&&void 0!==a?a:{});return Object(g.jsx)(g.Fragment,{children:Object.entries(z.c).sort((function(e,t){var n=Object(C.a)(e,1)[0],a=Object(C.a)(t,1)[0];return z.a.indexOf(n)-z.a.indexOf(a)})).map((function(e){var t=Object(C.a)(e,2),a=t[0],r=t[1],l=a,d=l===z.d.TypeScript||s.includes(l),u=l===z.d.TypeScript||z.e.has(l);if(!d)return null;var b=r.name,h=r.icon,O=Object(g.jsx)(h,{"aria-label":"Supports ".concat(b),borderRadius:n?"50%":0,h:W[i],opacity:u?1:.2,w:W[i]});return Object(g.jsx)(F.a,{language:l,children:u?Object(g.jsx)(w.b,{"aria-label":"View package docs for ".concat(l),to:Object(j.a)({name:c,version:o,language:l}),children:O}):O},l)}))})},P=function(){var e=E();return Object(g.jsx)(M,Object(D.a)(Object(D.a)({},e),{},{size:"sm"}))},B=n(286),K=function(){var e=E(),t=e.keywords,n=void 0===t?[]:t,a=e.metadata.packageTags,c=void 0===a?[]:a,r=Object(A.b)({packageTags:c,keywords:n});return Object(g.jsx)(g.Fragment,{children:r.slice(0,10).map((function(e){var t=e.id,n=e.keyword,a=(n=void 0===n?{}:n).label,c=n.color;return Object(g.jsx)(B.a,{value:t,variant:c,children:a},t)}))})},G=function(){return Object(g.jsx)(r.a,{_hover:{"> article":{bg:"gray.50"}},children:Object(g.jsxs)(i.a,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":m.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[Object(g.jsxs)(o.a,{direction:"column",justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsx)(s.a,{spacing:3,children:Object(g.jsx)(L,{})}),Object(g.jsx)(o.a,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:Object(g.jsx)(K,{})})]}),Object(g.jsxs)(o.a,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsxs)(s.a,{spacing:1,children:[Object(g.jsx)(I,{}),Object(g.jsx)(s.a,{spacing:1,children:Object(g.jsx)(x,{})})]}),Object(g.jsx)(s.a,{"data-testid":m.languages,direction:"row",spacing:2,children:Object(g.jsx)(P,{})})]})]})})},R=Object(c.createContext)(null),E=function(){return Object(c.useContext)(R)},N=function(e){var t=e.pkg,n=e.variant,c=void 0===n?a.Wide:n;return Object(g.jsx)(R.Provider,{value:t,children:c===a.Wide&&Object(g.jsx)(G,{})})}},284:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(17),i=n(204),o=n(650),s=n(1),l=["date","format","formattedDate"],d=Object(r.a)((function(e,t){var n=e.date,r=e.format,d=e.formattedDate,u=Object(c.a)(e,l);return Object(s.jsx)(i.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==d&&void 0!==d?d:Object(o.a)(n,null!==r&&void 0!==r?r:"")}))}));d.displayName="Time"},285:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(238),c=n(237),r=n(208),i=n(1),o=function(e){var t=e.label,n=e.color,o=e.icon;return Object(i.jsxs)(a.a,{align:"center",direction:"row",spacing:2,children:[Object(i.jsx)(c.a,{alt:"".concat(t," icon"),src:o,w:4}),Object(i.jsx)(r.a,{color:n,fontWeight:"bold",children:t})]})}},286:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(642),i=n(88),o=n(49),s=n(1),l=["children","value","label","zIndex"],d=function(e){var t=e.children,n=e.value,d=e.label,u=void 0===d?n:d,b=e.zIndex,j=Object(c.a)(e,l);return Object(s.jsx)(o.a,{"aria-label":"Tag: ".concat(u),to:Object(i.c)({keywords:[n]}),zIndex:b,children:Object(s.jsx)(r.a,Object(a.a)(Object(a.a)({_hover:{textDecoration:"underline"}},j),{},{children:Object(s.jsx)(r.b,{children:t})}))})}},287:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(232),c=n(122),r=n(1),i=function(e){var t=e.children,n=e.language,i=c.e.has(n),o=c.b[n],s=i?"Click to view documentation in ".concat(o):"Documentation support for ".concat(o," is coming soon!");return Object(r.jsx)(a.a,{hasArrow:!0,label:s,placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},651:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return le}));var a,c=n(214),r=n(144),i=n(248),o=n(90),s=n(74),l=n(224),d=n(208),u=n(641),b=n(159),j=n(49),h=n(271),O=n(88),f={X:[4,8,12,16,20],Y:[4,6,8]},m=n(63),g=Object(m.a)("homeRedesign",["page","packageGrid","heroHeader","heroSubtitle","infoContainer","infoSection","infoSectionHeading","infoSectionDescription","infoSectionIcon","featuredContainer","featuredHeader","featuredGrid","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","cdkTypeTab","cdkTypeGrid","cdkTypeSeeAllButton","categoriesContainer","categoriesHeader","categoriesDescription"]),p=n(1),x=[{title:"Monitoring",url:Object(O.c)({keywords:["monitoring"]})},{title:"Containers",url:Object(O.c)({keywords:["containers"]})},{title:"Serverless",url:Object(O.c)({keywords:["serverless"]})},{title:"Databases",url:Object(O.c)({keywords:["databases"]})},{title:"Utilities",url:Object(O.c)({keywords:["utilities"]})},{title:"Deployment",url:Object(O.c)({keywords:["deployment"]})},{title:"Websites",url:Object(O.c)({keywords:["websites"]})},{title:"Security",url:Object(O.c)({keywords:["security"]})},{title:"Compliance",url:Object(O.c)({keywords:["compliance"]})},{title:"Network",url:Object(O.c)({keywords:["network"]})},{title:"Artificial Intelligence (AI)",url:Object(O.c)({keywords:["artificial intelligence (ai)"]})},{title:"Cloud Services Integrations",url:Object(O.c)({keywords:["cloud services integrations"]})}],C=function(){var e,t=null!==(e=Object(h.a)("categories"))&&void 0!==e?e:x;return Object(p.jsxs)(c.a,{"data-testid":g.categoriesContainer,direction:"column",my:4,px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3",color:"white","data-testid":g.categoriesHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:1,children:"Search by use case"}),Object(p.jsx)(d.a,{color:"white","data-testid":g.categoriesDescription,lineHeight:"md",mb:5,children:"Find the right construct for your problem set from a community that\u2019s already tackled it."}),Object(p.jsx)(u.a,{children:t.map((function(e){return Object(p.jsx)(u.b,{children:Object(p.jsx)(b.a,{_hover:{backgroundColor:"white"},as:j.a,color:"blue.800",colorScheme:"gray",size:"md",style:{boxShadow:"0px 4px 4px rgba(73, 73, 73, 0.63)"},to:e.url,children:e.title})},e.title)}))})]})},v=n(5),w=n(6),y=n(24),k=n(640),S=n(17),L=n(59),D=n(13),T=n(128),A=n(4),H=n(0),I=n(22),z=n(154),F=n(283),W=function(e){var t=e.packages;return Object(p.jsx)(z.a,{"data-testid":g.packageGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:t.map((function(e){return Object(p.jsx)(F.a,{pkg:e},"".concat(e.name,"-").concat(e.version))}))})},M=["label","data","tag"],P={community:{label:"Community",tag:"community"},aws:{label:"AWS",tag:"aws-official"},hashicorp:{label:"HashiCorp",tag:"hashicorp-official"}},B=function(e){var t=e.data,n=e.label;return Object(p.jsx)(k.a,{"data-testid":g.cdkTypeTab,"data-value":n,isDisabled:t.page.length<1,children:n})},K=Object(S.a)((function(e,t){var n=e.label,a=e.data,r=e.tag,i=Object(y.a)(e,M);return Object(p.jsxs)(k.c,Object(w.a)(Object(w.a)({"data-testid":g.cdkTypeGrid,ref:t},i),{},{p:0,children:[Object(p.jsx)(W,{packages:a.page}),Object(p.jsx)(c.a,{justify:"center",w:"full",children:Object(p.jsx)(j.a,{"data-testid":g.cdkTypeSeeAllButton,onClick:function(){return window.scrollTo(0,0)},to:Object(O.c)({tags:r?[r]:void 0,sort:L.a.DownloadsDesc}),children:Object(p.jsxs)(b.a,{colorScheme:"blue",my:8,children:["See all ",n," constructs"]})})})]}))})),G=function(){var e=Object(T.a)({tags:[P.community.tag],limit:4,sort:L.a.DownloadsDesc}),t=Object(T.a)({tags:[P.aws.tag],limit:4,sort:L.a.DownloadsDesc}),n=Object(T.a)({tags:[P.hashicorp.tag],limit:4,sort:L.a.DownloadsDesc}),a=function(e,t){var n=Object(I.g)(),a=Object(H.useState)((function(){var a,c=null===(a=n.location.state)||void 0===a?void 0:a[e];return null!==c&&void 0!==c?c:t})),c=Object(v.a)(a,2),r=c[0],i=c[1];return[r,function(t){n.replace(Object(w.a)(Object(w.a)({},n.location),{},{state:Object(w.a)(Object(w.a)({},n.location.state),{},Object(A.a)({},e,t))})),i(t)}]}("cdkTypeTab",0),r=Object(v.a)(a,2),i=r[0],o=r[1];return Object(p.jsxs)(c.a,{bg:"white",color:"blue.800","data-testid":g.cdkTypeSection,direction:"column",px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.cdkTypeSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:"Search by publisher"}),Object(p.jsxs)(d.a,{"data-testid":g.cdkTypeSectionDescription,lineHeight:"md",mb:5,children:["Find constructs published by the open-source community, AWS, and cloud technology providers in one location. You can also include your own construct libraries on Construct Hub by publishing them on npm registry. More concrete guidance can be found in the"," ",Object(p.jsx)(j.a,{color:"blue.500",to:D.c.CONTRIBUTE,children:"Contribute"})," ","page."]}),Object(p.jsxs)(k.e,{defaultIndex:i,onChange:function(e){return o(e)},variant:"line",children:[Object(p.jsxs)(k.b,{children:[Object(p.jsx)(B,{data:e,label:P.community.label}),Object(p.jsx)(B,{data:t,label:P.aws.label}),Object(p.jsx)(B,{data:n,label:P.hashicorp.label})]}),Object(p.jsxs)(k.d,{minH:"28.5rem",children:[Object(p.jsx)(K,{data:e,label:P.community.label.toLowerCase(),tag:P.community.tag}),Object(p.jsx)(K,{data:t,label:P.aws.label,tag:P.aws.tag}),Object(p.jsx)(K,{data:n,label:P.hashicorp.label,tag:P.hashicorp.tag})]})]})]})},R=n(136),E=n(259),N=function(){var e=Object(h.a)("featuredPackages"),t=Object(v.a)((null!==e&&void 0!==e?e:R.a).sections,1)[0],n=void 0===t?{name:"Recently Updated",showLastUpdated:4}:t,a=function(e){var t=e.showLastUpdated,n=e.showPackages,a=Object(o.b)(),c=a.loading,r=a.error,i=Object(T.a)({limit:25,sort:L.a.PublishDateDesc}).results;return Object(H.useMemo)((function(){return c||r||!i?[]:t?i.slice(0,t):n?n.map((function(e){var t=Object(E.a)({packages:i},e.name);if(t)return Object(w.a)(Object(w.a)({},t),{},{comment:e.comment})})).filter((function(e){return void 0!==e})):void 0}),[i,r,c,t,n])}(n);return a?Object(p.jsxs)(c.a,{color:"white","data-testid":g.featuredContainer,direction:"column",px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.featuredHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",children:n.name}),Object(p.jsx)(z.a,{"data-testid":g.featuredGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:null===a||void 0===a?void 0:a.slice(0,4).map((function(e){return Object(p.jsx)(F.a,{pkg:e},e.name)}))})]}):null},U=n(393),Z=n(65),q=n(204),X=Object(Z.b)(a||(a=Object(U.a)(["\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n"]))),Y=Object(S.a)((function(e,t){return Object(p.jsx)(q.a,Object(w.a)({animation:"".concat(X," 10s linear infinite"),bg:"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)",bgSize:"200% 200%",ref:t},e))})),_=n(75),V=function(){return Object(p.jsxs)(c.a,{align:"center",color:"white",direction:"column",h:"20rem",justify:"center",px:f.X,py:f.Y,textAlign:"center",zIndex:"1",children:[Object(p.jsx)(l.a,{as:"h1","data-testid":g.heroHeader,size:"xl",children:"Simplify cloud development with constructs"}),Object(p.jsx)(l.a,{as:"h2","data-testid":g.heroSubtitle,fontWeight:"normal",mt:4,size:"md",children:"Find and use open-source Cloud Development Kit (CDK) libraries"}),Object(p.jsx)(q.a,{color:"initial",maxW:"36rem",mt:8,mx:"auto",w:"full",children:Object(p.jsxs)(_.a,{hasButton:!0,children:[Object(p.jsx)(_.b,{}),Object(p.jsx)(_.c,{})]})})]})},J=n(238),Q=n(237),$=n(216),ee=n(48),te=n(122),ne=n(160),ae=function(e){var t=e.title,n=e.description,a=e.children;return Object(p.jsxs)(c.a,{color:"blue.800","data-testid":g.infoSection,direction:"column",px:f.X,py:f.Y,children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.infoSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:t}),Object(p.jsxs)(c.a,{direction:"column",h:"full",justify:"space-between",children:[Object(p.jsx)(d.a,{"data-testid":g.infoSectionDescription,fontSize:"lg",mb:4,children:n}),a]})]})},ce=[{name:"Datadog",Icon:function(e){return Object(p.jsxs)(ne.a,Object(w.a)(Object(w.a)({viewBox:"0 0 32 34"},e),{},{children:[Object(p.jsx)("g",{clipPath:"url(#clip0_2245_48088)",children:Object(p.jsx)("path",{clipRule:"evenodd",d:"M26.6008 24.1363L23.774 22.2717L21.4158 26.2107L18.6731 25.4088L16.2581 29.0947L16.3819 30.2549L29.5121 27.8356L28.7495 19.6318L26.6008 24.1363ZM14.3559 20.5992L16.4625 20.3095C16.8034 20.4627 17.0406 20.521 17.4493 20.625C18.0858 20.7908 18.8227 20.9499 19.9139 20.4C20.1678 20.2742 20.6968 19.7905 20.9107 19.5147L29.5419 17.9489L30.4224 28.6054L15.6356 31.2704L14.3559 20.5992ZM30.3891 16.7593L29.5371 16.9216L27.9003 0.0106812L0.0106812 3.24462L3.44659 31.1271L6.71108 30.6533C6.45038 30.2811 6.04446 29.8308 5.35124 29.2542C4.38979 28.4554 4.72985 27.0988 5.29688 26.2421C6.04723 24.7946 9.91328 22.955 9.69424 20.6412C9.61568 19.8 9.48195 18.7048 8.70105 17.9545C8.67168 18.266 8.72446 18.5659 8.72446 18.5659C8.72446 18.5659 8.40384 18.1568 8.24393 17.5989C8.08521 17.3851 7.96061 17.3168 7.79197 17.0311C7.67174 17.3617 7.68761 17.745 7.68761 17.745C7.68761 17.745 7.42533 17.1252 7.38287 16.6022C7.22732 16.8363 7.18804 17.2811 7.18804 17.2811C7.18804 17.2811 6.84719 16.3042 6.92496 15.778C6.76941 15.3201 6.30833 14.4114 6.43888 12.3461C7.29002 12.9425 9.16372 12.8008 9.89383 11.7247C10.1363 11.3684 10.3021 10.3954 9.77281 8.47844C9.43275 7.24915 8.59074 5.4187 8.26258 4.7243L8.2233 4.75247C8.3963 5.31196 8.75303 6.48491 8.88992 7.05352C9.30419 8.77842 9.41529 9.37879 9.22086 10.174C9.05539 10.8652 8.65859 11.3176 7.6527 11.8231C6.6468 12.3302 5.31196 11.0961 5.22744 11.0279C4.25012 10.2494 3.49421 8.97921 3.40969 8.36218C3.322 7.68682 3.79895 7.28129 4.03941 6.72894C3.69539 6.82735 3.31168 7.00194 3.31168 7.00194C3.31168 7.00194 3.76959 6.52816 4.33424 6.11826C4.56796 5.96351 4.70525 5.8651 4.95166 5.66035C4.59494 5.6544 4.30527 5.66472 4.30527 5.66472C4.30527 5.66472 4.90008 5.34331 5.51671 5.10919C5.06554 5.08935 4.63382 5.10602 4.63382 5.10602C4.63382 5.10602 5.96113 4.5124 7.00948 4.07671C7.73047 3.7811 8.43479 3.86839 8.8304 4.44058C9.34982 5.19014 9.89542 5.59726 11.0517 5.84963C11.7616 5.53496 11.9774 5.37307 12.8695 5.13022C13.6547 4.26678 14.2714 4.15488 14.2714 4.15488C14.2714 4.15488 13.9654 4.43542 13.8837 4.87627C14.3289 4.5255 14.817 4.23266 14.817 4.23266C14.817 4.23266 14.6281 4.46598 14.4519 4.83659L14.4928 4.8973C15.0122 4.58581 15.6229 4.34019 15.6229 4.34019C15.6229 4.34019 15.4483 4.56081 15.2435 4.84651C15.6352 4.84334 16.4296 4.86318 16.7379 4.89809C18.558 4.93817 18.9358 2.95416 19.6341 2.70537C20.5087 2.39308 20.8995 2.2042 22.3899 3.66801C23.6688 4.92468 24.668 7.17415 24.172 7.67809C23.7561 8.09632 22.9355 7.51501 22.0261 6.38134C21.5455 5.78098 21.1821 5.0715 21.0118 4.16957C20.8682 3.4085 20.3091 2.96686 20.3091 2.96686C20.3091 2.96686 20.6337 3.68824 20.6337 4.32551C20.6337 4.6735 20.6773 5.97462 21.2352 6.70473C21.1801 6.81147 21.1543 7.23288 21.0932 7.31343C20.444 6.52895 19.05 5.96748 18.8227 5.80201C19.5921 6.43253 21.3606 7.88086 22.04 9.26887C22.6824 10.5815 22.3038 11.7846 22.6288 12.0961C22.7213 12.1854 24.0105 13.7916 24.2585 14.5987C24.691 16.0054 24.2843 17.4835 23.718 18.4005L22.1368 18.6469C21.9054 18.5826 21.7495 18.5505 21.542 18.4302C21.6562 18.2279 21.8836 17.7231 21.886 17.6192L21.7967 17.4624C21.3047 18.1596 20.4801 18.8366 19.7952 19.2254C18.8989 19.7333 17.8656 19.6552 17.193 19.4468C15.284 18.858 13.4789 17.568 13.0437 17.2291C13.0437 17.2291 13.0302 17.4997 13.1123 17.5604C13.5936 18.1033 14.6963 19.0854 15.7621 19.7698L13.4901 20.0198L14.5642 28.3836C14.088 28.4519 14.0138 28.4852 13.4924 28.5594C13.0329 26.9361 12.154 25.8762 11.1934 25.2588C10.3462 24.7144 9.17761 24.5918 8.05902 24.8132L7.9872 24.8965C8.76493 24.8156 9.68313 24.9283 10.6263 25.5255C11.5521 26.1107 12.2981 27.6226 12.5726 28.5328C12.9242 29.6962 13.1675 30.9406 12.2211 32.2596C11.5477 33.1972 9.58195 33.7155 7.99395 32.5945C8.41813 33.2766 8.99151 33.8345 9.76329 33.9397C10.9093 34.0952 11.9969 33.8964 12.7457 33.1278C13.3849 32.4707 13.7238 31.0966 13.6345 29.6494L14.6459 29.5026L15.011 32.1001L31.7553 30.0839L30.3891 16.7593ZM20.202 9.70535C20.1551 9.81209 20.0817 9.88193 20.192 10.2291L20.1988 10.249L20.2162 10.2938L20.2623 10.3978C20.4611 10.8041 20.6793 11.1874 21.044 11.383C21.1384 11.3672 21.236 11.3564 21.3372 11.3513C21.6797 11.3362 21.8959 11.3906 22.0332 11.4644C22.0455 11.3961 22.0483 11.2961 22.0407 11.1489C22.0142 10.6343 22.1427 9.75892 21.1535 9.29823C20.7801 9.12483 20.2563 9.1784 20.0817 9.39466C20.1135 9.39863 20.142 9.40537 20.1643 9.41291C20.4281 9.50537 20.2492 9.59623 20.202 9.70535ZM22.9744 14.5075C22.8447 14.436 22.2384 14.4642 21.8122 14.515C21.0003 14.6106 20.1238 14.8924 19.9317 15.0423C19.5826 15.3122 19.7413 15.7828 19.9992 15.976C20.7226 16.5165 21.3567 16.8787 22.0261 16.7907C22.4372 16.7367 22.7994 16.0859 23.0562 15.4955C23.2319 15.0888 23.2319 14.6499 22.9744 14.5075ZM15.7867 10.3426C16.0157 10.1252 14.6463 9.83947 13.5837 10.564C12.8 11.0985 12.775 12.2445 13.5254 12.8941C13.6004 12.9583 13.6623 13.004 13.7202 13.0413C13.9392 12.9381 14.1888 12.8337 14.4761 12.7405C14.9614 12.583 15.3649 12.5016 15.6967 12.4584C15.8554 12.281 16.0399 11.9687 15.9939 11.4033C15.9312 10.6363 15.3499 10.7581 15.7867 10.3426Z",fill:"#632CA6",fillRule:"evenodd"})}),Object(p.jsx)("defs",{children:Object(p.jsx)("clipPath",{id:"clip0_2245_48088",children:Object(p.jsx)("rect",{fill:"white",height:"34",width:"31.766"})})})]}))},url:Object(O.c)({keywords:["Datadog"]})},{name:"MongoDB",Icon:function(e){return Object(p.jsxs)(ne.a,Object(w.a)(Object(w.a)({viewBox:"0 0 18 37"},e),{},{children:[Object(p.jsx)("path",{d:"M9.09725 0.469971L10.1001 2.35348C10.3255 2.70106 10.5698 3.00871 10.8575 3.29523C11.7009 4.12816 12.4871 5.01714 13.2107 5.95609C14.9099 8.18718 16.056 10.6649 16.8744 13.3445C17.3653 14.9814 17.6318 16.6606 17.6518 18.3586C17.734 23.4349 15.9937 27.7937 12.485 31.4163C11.9143 31.9908 11.2977 32.5178 10.6414 32.9921C10.2938 32.9921 10.1294 32.7256 9.98617 32.4802C9.72529 32.0251 9.55165 31.5253 9.4742 31.0065C9.3509 30.3923 9.26987 29.7782 9.3098 29.1441V28.8576C9.28161 28.7965 8.97513 0.614404 9.09725 0.469971Z",fill:"#599636"}),Object(p.jsx)("path",{d:"M9.09723 0.407647C9.05614 0.325449 9.01504 0.387684 8.97394 0.427609C8.9939 0.838599 8.85064 1.20497 8.62636 1.5549C8.37977 1.90248 8.05333 2.16903 7.72571 2.45555C5.90562 4.0314 4.47304 5.93487 3.3258 8.0638C1.79927 10.929 1.01253 13.9997 0.789419 17.2324C0.687259 18.3984 1.15813 22.513 1.52567 23.7002C2.52848 26.8519 4.32978 29.4928 6.66301 31.785C7.23605 32.3369 7.84901 32.8488 8.4831 33.3409C8.66746 33.3409 8.68742 33.1765 8.72969 33.0543C8.81052 32.793 8.87214 32.5261 8.91405 32.2558L9.32504 29.1863L9.09723 0.407647Z",fill:"#6CAC48"}),Object(p.jsx)("path",{d:"M10.1001 34.2391C10.1412 33.7694 10.3666 33.3796 10.6121 32.9909C10.3655 32.8888 10.1823 32.6856 10.039 32.459C9.91549 32.2444 9.81324 32.0183 9.73372 31.7838C9.44719 30.9243 9.38613 30.0224 9.30394 29.1441V28.6122C9.20177 28.6944 9.18064 29.3895 9.18064 29.4929C9.12088 30.4212 8.99769 31.3443 8.81192 32.2559C8.75086 32.6246 8.70976 32.9921 8.48312 33.3197C8.48312 33.3608 8.48312 33.4019 8.50309 33.463C8.87181 34.548 8.97279 35.6529 9.03503 36.779V37.19C9.03503 37.6808 9.01507 37.5775 9.42254 37.7419C9.58693 37.803 9.77012 37.8241 9.93452 37.9462C10.0578 37.9462 10.0778 37.8441 10.0778 37.7619L10.0167 37.0867V35.2032C9.99675 34.8744 10.0578 34.548 10.0989 34.2403L10.1001 34.2391Z",fill:"#C2BFBF"})]}))},url:Object(O.c)({keywords:["MongoDB"]})},{name:"Aqua Security",imgsrc:"/assets/aqua-security.png",url:Object(O.c)({keywords:["aqua"]})}],re=function(e){var t=e.url,n=e.imgsrc,a=e.label,c=e.Icon;return Object(p.jsx)(j.a,{color:"blue.500","data-testid":g.infoSectionIcon,fontWeight:"bold",to:t,children:Object(p.jsxs)(J.a,{align:"center",spacing:2,children:[n&&Object(p.jsx)(Q.a,{"aria-label":a,h:8,src:n}),c&&Object(p.jsx)(c,{"aria-label":a,h:8,w:8}),Object(p.jsx)("span",{children:a})]})})},ie=function(){return Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)($.a,{display:{xl:"none"},mx:f.X,w:"auto"}),Object(p.jsx)($.a,{display:{base:"none",xl:"initial"},h:"auto",my:f.Y,orientation:"vertical"})]})},oe=function(e){var t=e.children;return Object(p.jsx)(c.a,{align:"center",pt:4,sx:{gap:"2rem"},children:t})},se=function(){return Object(p.jsx)(c.a,{bg:"white","data-testid":g.infoContainer,direction:"column",children:Object(p.jsxs)(z.a,{templateColumns:{base:"1fr",xl:"1fr auto 1fr auto 1fr"},templateRows:{base:"1fr auto 1fr auto 1fr",xl:"auto"},children:[Object(p.jsx)(ae,{description:"Find libraries for AWS Cloud Development Kit (CDK), which generates AWS CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration files, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.",title:"One home for all CDKs",children:Object(p.jsx)(oe,{children:Object.entries(ee.b).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.name,r=a.imgsrc;return Object(p.jsx)(re,{imgsrc:r,label:c,url:Object(O.c)({cdkType:n,sort:L.a.DownloadsDesc})},n)}))})}),Object(p.jsx)(ie,{}),Object(p.jsx)(ae,{description:"Define, test, and deploy cloud infrastructure using high level programming languages such as such as Java, .NET, TypeScript, and Python. Find documentation, API reference and code samples to quickly build your application. ",title:"Support across languages",children:Object(p.jsx)(oe,{children:Object.entries(te.c).filter((function(e){var t=Object(v.a)(e,1)[0];return te.e.has(t)})).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.icon,r=a.name;return Object(p.jsx)(re,{Icon:c,label:r,url:Object(O.c)({languages:[n],sort:L.a.DownloadsDesc})},n)}))})}),Object(p.jsx)(ie,{}),Object(p.jsx)(ae,{description:"Find construct libraries published by the community and cloud service providers such as Datadog, MongoDB, Aqua Security, AWS services, and more.",title:"Provision a range of cloud resources",children:Object(p.jsx)(oe,{children:ce.map((function(e){var t=e.url,n=e.name,a=e.imgsrc,c=e.Icon;return Object(p.jsx)(re,{Icon:c,imgsrc:a,label:n,url:t},n)}))})})]})})},le=function(){var e,t,n,a=Object(s.b)().data,l=Object(o.b)().data,d=null!==(e=null===a||void 0===a||null===(t=a.featureFlags)||void 0===t?void 0:t.fullSite)&&void 0!==e&&e,u=(null!==(n=null===l||void 0===l?void 0:l.packages.length)&&void 0!==n?n:0)>0;return Object(p.jsx)(i.a,{meta:{title:"Construct Hub",description:"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.",suffix:!1},pageName:"home",children:Object(p.jsxs)(Y,{as:c.a,"data-testid":g.page,direction:"column",children:[Object(p.jsx)(r.a,{}),Object(p.jsx)(V,{}),Object(p.jsx)(se,{}),u&&d?Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)(C,{}),Object(p.jsx)(G,{}),Object(p.jsx)(N,{})]}):null]})})}}}]);
2
- //# sourceMappingURL=6.4a34e978.chunk.js.map
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[6],{248:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(0),c=n(265),r={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(123),o=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(i.b)(r[s]);Object(a.useEffect)((function(){l()}),[l]);var d=n.suffix,u=void 0===d||d,b=n.title,j=n.description,h=u?"".concat(b," - Construct Hub"):b;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(c.a,{children:[!1,Object(o.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(o.jsx)("meta",{charSet:"utf-8"}),Object(o.jsx)("title",{children:h}),Object(o.jsx)("meta",{content:h,property:"og:title"}),Object(o.jsx)("meta",{content:h,name:"twitter:title"}),Object(o.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(o.jsx)("meta",{content:j,name:"description"}),Object(o.jsx)("meta",{content:j,property:"og:description"}),Object(o.jsx)("meta",{content:j,name:"twitter:description"})]}),t]})}},258:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var a=n(6),c=n(14),r=n(127),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat(Object(c.a)(e),[t.highlight]):e}),[])},o=function(e){for(var t=e.packageTags,n=e.keywords,i=new Array,o=new Set,s=0,l=[].concat(Object(c.a)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return Object(a.a)(Object(a.a)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),Object(c.a)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!r.a.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();o.has(u)||(i.push(d),o.add(u))}return i}},259:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return o}));var a=n(13),c=function(e,t){return t?"".concat(t,"/").concat(e):e},r=function(e,t,n){var r="".concat(a.a.PACKAGES_PREFIX,"/"),i=c(e,n),o="/v".concat(t);return"".concat(r).concat(i).concat(o)},i=function(e){var t=e;return(t.startsWith("~")||t.startsWith("^"))&&(t=t.substring(1)),t},o=function(e,t){var n=e.packages.filter((function(e){return e.name===t}));return n.length>1?n.sort((function(e,t){var n=new Date(e.metadata.date);return new Date(t.metadata.date).getTime()-n.getTime()}))[0]:n[0]}},264:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(0),c=n(22),r=function(){var e=Object(c.h)().search;return Object(a.useMemo)((function(){return new URLSearchParams(e)}),[e])}},271:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(74),c=function(e){var t=Object(a.b)().data;return(null!==t&&void 0!==t?t:{})[e]}},272:function(e,t,n){"use strict";n.d(t,"a",(function(){return j}));var a=n(5),c=n(0),r=n(22),i=n(122),o=n(13),s=n(264),l=i.d.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.e.has(e)},b=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(d))&&void 0!==t?t:"";if(u(n))return n}catch(a){}return l},j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,i=Object(r.h)(),l=i.pathname,j=i.hash,h=Object(r.g)(),O=h.replace,f=Object(s.a)(),m=f.get(o.b.LANGUAGE),g=Object(c.useState)((function(){return b(m)})),p=Object(a.a)(g,2),x=p[0],C=p[1];Object(c.useEffect)((function(){u(m)&&m!==x&&C(m)}),[m]),Object(c.useEffect)((function(){m!==x&&t&&(f.set(o.b.LANGUAGE,x),O({pathname:l,hash:j,search:f.toString()}))}),[x,t]);var v=Object(c.useCallback)((function(e){if(C(e),n)try{localStorage.setItem(d,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[x,v]}),[x,v])}},283:function(e,t,n){"use strict";var a;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return N})),function(e){e.Wide="wide"}(a||(a={}));var c=n(0),r=n(392),i=n(154),o=n(214),s=n(238),l=n(232),d=n(208),u=n(638),b=n(91),j=n(88),h=n(49),O=n(284),f=n(63),m=Object(f.a)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),g=n(1),p=function(e){var t=e["data-testid"],n=e.tooltip,a=e.value;return Object(g.jsx)(l.a,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:Object(g.jsx)(d.a,{"data-testid":t,fontSize:"xs",zIndex:1,children:a})})},x=function(){var e,t,n,a=E(),c=a.author,r=a.metadata.date,i=a.name,o=Object(b.b)().data,s=null===o||void 0===o||null===(e=o.packages)||void 0===e||null===(t=e[i])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,l="string"===typeof c?c:c.name,d=new Date(r);return Object(g.jsxs)(g.Fragment,{children:[void 0!==s&&Object(g.jsx)(p,{"data-testid":m.downloads,tooltip:"Download numbers are periodically sourced from the NPM registry",value:"".concat(s.toLocaleString()," weekly downloads")}),Object(g.jsx)(p,{"data-testid":m.published,value:Object(g.jsx)(O.a,{date:d,fontSize:"xs",formattedDate:Object(u.a)(d,{addSuffix:!0})})}),Object(g.jsx)(p,{"data-testid":m.author,value:Object(g.jsxs)(g.Fragment,{children:["By"," ",Object(g.jsx)(h.a,{color:"blue.500",to:Object(j.c)({query:l}),children:l})]})})]})},C=n(5),v=n(224),w=n(34),y=n(272),k=n(129),S=function(e){var t=e.comment;return Object(g.jsxs)(d.a,{"data-testid":m.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[Object(g.jsxs)(d.a,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},L=function(){var e=Object(y.a)(),t=Object(C.a)(e,1)[0],n=E(),a=n.description,c=n.comment,i=n.metadata.constructFramework,s=n.name,l=n.version,u=null===i||void 0===i?void 0:i.name,b=null===i||void 0===i?void 0:i.majorVersion;return Object(g.jsxs)(g.Fragment,{children:[Object(g.jsx)(r.b,{as:w.b,to:Object(j.a)({name:s,version:l,language:t}),children:Object(g.jsxs)(o.a,{align:"center",children:[Object(g.jsx)(k.a,{majorVersion:b,mr:2,name:u}),Object(g.jsx)(v.a,{as:"h3",color:"blue.800","data-testid":m.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),c?Object(g.jsx)(S,{comment:c}):Object(g.jsx)(d.a,{color:"blue.800","data-testid":m.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},D=n(6),T=n(204),A=n(258),H=n(285),I=function(){var e,t,n=(null!==(e=null===(t=E())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,a=void 0===n?[]:n,c=Object(A.a)(a),r=Object(C.a)(c,1)[0];return Object(g.jsx)(T.a,{fontSize:"xs",children:Object(g.jsx)(H.a,Object(D.a)({},r))})},z=n(122),F=n(287),W={sm:5,md:6,lg:8},M=function(e){var t=e.isRounded,n=void 0!==t&&t,a=e.languages,c=e.name,r=e.size,i=void 0===r?"md":r,o=e.version,s=Object.keys(null!==a&&void 0!==a?a:{});return Object(g.jsx)(g.Fragment,{children:Object.entries(z.c).sort((function(e,t){var n=Object(C.a)(e,1)[0],a=Object(C.a)(t,1)[0];return z.a.indexOf(n)-z.a.indexOf(a)})).map((function(e){var t=Object(C.a)(e,2),a=t[0],r=t[1],l=a,d=l===z.d.TypeScript||s.includes(l),u=l===z.d.TypeScript||z.e.has(l);if(!d)return null;var b=r.name,h=r.icon,O=Object(g.jsx)(h,{"aria-label":"Supports ".concat(b),borderRadius:n?"50%":0,h:W[i],opacity:u?1:.2,w:W[i]});return Object(g.jsx)(F.a,{language:l,children:u?Object(g.jsx)(w.b,{"aria-label":"View package docs for ".concat(l),to:Object(j.a)({name:c,version:o,language:l}),children:O}):O},l)}))})},P=function(){var e=E();return Object(g.jsx)(M,Object(D.a)(Object(D.a)({},e),{},{size:"sm"}))},B=n(286),K=function(){var e=E(),t=e.keywords,n=void 0===t?[]:t,a=e.metadata.packageTags,c=void 0===a?[]:a,r=Object(A.b)({packageTags:c,keywords:n});return Object(g.jsx)(g.Fragment,{children:r.slice(0,10).map((function(e){var t=e.id,n=e.keyword,a=(n=void 0===n?{}:n).label,c=n.color;return Object(g.jsx)(B.a,{value:t,variant:c,children:a},t)}))})},G=function(){return Object(g.jsx)(r.a,{_hover:{"> article":{bg:"gray.50"}},children:Object(g.jsxs)(i.a,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":m.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[Object(g.jsxs)(o.a,{direction:"column",justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsx)(s.a,{spacing:3,children:Object(g.jsx)(L,{})}),Object(g.jsx)(o.a,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:Object(g.jsx)(K,{})})]}),Object(g.jsxs)(o.a,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsxs)(s.a,{spacing:1,children:[Object(g.jsx)(I,{}),Object(g.jsx)(s.a,{spacing:1,children:Object(g.jsx)(x,{})})]}),Object(g.jsx)(s.a,{"data-testid":m.languages,direction:"row",spacing:2,children:Object(g.jsx)(P,{})})]})]})})},R=Object(c.createContext)(null),E=function(){return Object(c.useContext)(R)},N=function(e){var t=e.pkg,n=e.variant,c=void 0===n?a.Wide:n;return Object(g.jsx)(R.Provider,{value:t,children:c===a.Wide&&Object(g.jsx)(G,{})})}},284:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(17),i=n(204),o=n(650),s=n(1),l=["date","format","formattedDate"],d=Object(r.a)((function(e,t){var n=e.date,r=e.format,d=e.formattedDate,u=Object(c.a)(e,l);return Object(s.jsx)(i.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==d&&void 0!==d?d:Object(o.a)(n,null!==r&&void 0!==r?r:"")}))}));d.displayName="Time"},285:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(238),c=n(237),r=n(208),i=n(1),o=function(e){var t=e.label,n=e.color,o=e.icon;return Object(i.jsxs)(a.a,{align:"center",direction:"row",spacing:2,children:[Object(i.jsx)(c.a,{alt:"".concat(t," icon"),src:o,w:4}),Object(i.jsx)(r.a,{color:n,fontWeight:"bold",children:t})]})}},286:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(642),i=n(88),o=n(49),s=n(1),l=["children","value","label","zIndex"],d=function(e){var t=e.children,n=e.value,d=e.label,u=void 0===d?n:d,b=e.zIndex,j=Object(c.a)(e,l);return Object(s.jsx)(o.a,{"aria-label":"Tag: ".concat(u),to:Object(i.c)({keywords:[n]}),zIndex:b,children:Object(s.jsx)(r.a,Object(a.a)(Object(a.a)({_hover:{textDecoration:"underline"}},j),{},{children:Object(s.jsx)(r.b,{children:t})}))})}},287:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(232),c=n(122),r=n(1),i=function(e){var t=e.children,n=e.language,i=c.e.has(n),o=c.b[n],s=i?"Click to view documentation in ".concat(o):"Documentation support for ".concat(o," is coming soon!");return Object(r.jsx)(a.a,{hasArrow:!0,label:s,placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},651:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return le}));var a,c=n(214),r=n(144),i=n(248),o=n(90),s=n(74),l=n(224),d=n(208),u=n(641),b=n(159),j=n(49),h=n(271),O=n(88),f={X:[4,8,12,16,20],Y:[4,6,8]},m=n(63),g=Object(m.a)("homeRedesign",["page","packageGrid","heroHeader","heroSubtitle","infoContainer","infoSection","infoSectionHeading","infoSectionDescription","infoSectionIcon","featuredContainer","featuredHeader","featuredGrid","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","cdkTypeTab","cdkTypeGrid","cdkTypeSeeAllButton","categoriesContainer","categoriesHeader","categoriesDescription"]),p=n(1),x=[{title:"Monitoring",url:Object(O.c)({keywords:["monitoring"]})},{title:"Containers",url:Object(O.c)({keywords:["containers"]})},{title:"Serverless",url:Object(O.c)({keywords:["serverless"]})},{title:"Databases",url:Object(O.c)({keywords:["databases"]})},{title:"Utilities",url:Object(O.c)({keywords:["utilities"]})},{title:"Deployment",url:Object(O.c)({keywords:["deployment"]})},{title:"Websites",url:Object(O.c)({keywords:["websites"]})},{title:"Security",url:Object(O.c)({keywords:["security"]})},{title:"Compliance",url:Object(O.c)({keywords:["compliance"]})},{title:"Network",url:Object(O.c)({keywords:["network"]})},{title:"Artificial Intelligence (AI)",url:Object(O.c)({keywords:["artificial intelligence (ai)"]})},{title:"Cloud Services Integrations",url:Object(O.c)({keywords:["cloud services integrations"]})}],C=function(){var e,t=null!==(e=Object(h.a)("categories"))&&void 0!==e?e:x;return Object(p.jsxs)(c.a,{"data-testid":g.categoriesContainer,direction:"column",my:4,px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3",color:"white","data-testid":g.categoriesHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:1,children:"Search by use case"}),Object(p.jsx)(d.a,{color:"white","data-testid":g.categoriesDescription,lineHeight:"md",mb:5,children:"Find the right construct for your problem set from a community that\u2019s already tackled it."}),Object(p.jsx)(u.a,{children:t.map((function(e){return Object(p.jsx)(u.b,{children:Object(p.jsx)(b.a,{_hover:{backgroundColor:"white"},as:j.a,color:"blue.800",colorScheme:"gray",size:"md",style:{boxShadow:"0px 4px 4px rgba(73, 73, 73, 0.63)"},to:e.url,children:e.title})},e.title)}))})]})},v=n(5),w=n(6),y=n(24),k=n(640),S=n(17),L=n(59),D=n(13),T=n(128),A=n(4),H=n(0),I=n(22),z=n(154),F=n(283),W=function(e){var t=e.packages;return Object(p.jsx)(z.a,{"data-testid":g.packageGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:t.map((function(e){return Object(p.jsx)(F.a,{pkg:e},"".concat(e.name,"-").concat(e.version))}))})},M=["label","data","tag"],P={community:{label:"Community",tag:"community"},aws:{label:"AWS",tag:"aws-official"},hashicorp:{label:"HashiCorp",tag:"hashicorp-official"}},B=function(e){var t=e.data,n=e.label;return Object(p.jsx)(k.a,{"data-testid":g.cdkTypeTab,"data-value":n,isDisabled:t.page.length<1,children:n})},K=Object(S.a)((function(e,t){var n=e.label,a=e.data,r=e.tag,i=Object(y.a)(e,M);return Object(p.jsxs)(k.c,Object(w.a)(Object(w.a)({"data-testid":g.cdkTypeGrid,ref:t},i),{},{p:0,children:[Object(p.jsx)(W,{packages:a.page}),Object(p.jsx)(c.a,{justify:"center",w:"full",children:Object(p.jsx)(j.a,{"data-testid":g.cdkTypeSeeAllButton,onClick:function(){return window.scrollTo(0,0)},to:Object(O.c)({tags:r?[r]:void 0,sort:L.a.DownloadsDesc}),children:Object(p.jsxs)(b.a,{colorScheme:"blue",my:8,children:["See all ",n," constructs"]})})})]}))})),G=function(){var e=Object(T.a)({tags:[P.community.tag],limit:4,sort:L.a.DownloadsDesc}),t=Object(T.a)({tags:[P.aws.tag],limit:4,sort:L.a.DownloadsDesc}),n=Object(T.a)({tags:[P.hashicorp.tag],limit:4,sort:L.a.DownloadsDesc}),a=function(e,t){var n=Object(I.g)(),a=Object(H.useState)((function(){var a,c=null===(a=n.location.state)||void 0===a?void 0:a[e];return null!==c&&void 0!==c?c:t})),c=Object(v.a)(a,2),r=c[0],i=c[1];return[r,function(t){n.replace(Object(w.a)(Object(w.a)({},n.location),{},{state:Object(w.a)(Object(w.a)({},n.location.state),{},Object(A.a)({},e,t))})),i(t)}]}("cdkTypeTab",0),r=Object(v.a)(a,2),i=r[0],o=r[1];return Object(p.jsxs)(c.a,{bg:"white",color:"blue.800","data-testid":g.cdkTypeSection,direction:"column",px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.cdkTypeSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:"Search by publisher"}),Object(p.jsxs)(d.a,{"data-testid":g.cdkTypeSectionDescription,lineHeight:"md",mb:5,children:["Find constructs published by the open-source community, AWS, and cloud technology providers in one location. You can also include your own construct libraries on Construct Hub by publishing them on npm registry. More concrete guidance can be found in the"," ",Object(p.jsx)(j.a,{color:"blue.500",to:D.c.CONTRIBUTE,children:"Contribute"})," ","page."]}),Object(p.jsxs)(k.e,{defaultIndex:i,onChange:function(e){return o(e)},variant:"line",children:[Object(p.jsxs)(k.b,{children:[Object(p.jsx)(B,{data:e,label:P.community.label}),Object(p.jsx)(B,{data:t,label:P.aws.label}),Object(p.jsx)(B,{data:n,label:P.hashicorp.label})]}),Object(p.jsxs)(k.d,{minH:"28.5rem",children:[Object(p.jsx)(K,{data:e,label:P.community.label.toLowerCase(),tag:P.community.tag}),Object(p.jsx)(K,{data:t,label:P.aws.label,tag:P.aws.tag}),Object(p.jsx)(K,{data:n,label:P.hashicorp.label,tag:P.hashicorp.tag})]})]})]})},R=n(136),E=n(259),N=function(){var e=Object(h.a)("featuredPackages"),t=Object(v.a)((null!==e&&void 0!==e?e:R.a).sections,1)[0],n=void 0===t?{name:"Recently Updated",showLastUpdated:4}:t,a=function(e){var t=e.showLastUpdated,n=e.showPackages,a=Object(o.b)(),c=a.loading,r=a.error,i=Object(T.a)({limit:25,sort:L.a.PublishDateDesc}).results;return Object(H.useMemo)((function(){return c||r||!i?[]:t?i.slice(0,t):n?n.map((function(e){var t=Object(E.a)({packages:i},e.name);if(t)return Object(w.a)(Object(w.a)({},t),{},{comment:e.comment})})).filter((function(e){return void 0!==e})):void 0}),[i,r,c,t,n])}(n);return a?Object(p.jsxs)(c.a,{color:"white","data-testid":g.featuredContainer,direction:"column",px:f.X,py:f.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.featuredHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",children:n.name}),Object(p.jsx)(z.a,{"data-testid":g.featuredGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:null===a||void 0===a?void 0:a.slice(0,4).map((function(e){return Object(p.jsx)(F.a,{pkg:e},e.name)}))})]}):null},U=n(393),Z=n(65),q=n(204),X=Object(Z.b)(a||(a=Object(U.a)(["\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n"]))),Y=Object(S.a)((function(e,t){return Object(p.jsx)(q.a,Object(w.a)({animation:"".concat(X," 10s linear infinite"),bg:"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)",bgSize:"200% 200%",ref:t},e))})),_=n(75),V=function(){return Object(p.jsxs)(c.a,{align:"center",color:"white",direction:"column",h:"20rem",justify:"center",px:f.X,py:f.Y,textAlign:"center",zIndex:"1",children:[Object(p.jsx)(l.a,{as:"h1","data-testid":g.heroHeader,size:"xl",children:"Simplify cloud development with constructs"}),Object(p.jsx)(l.a,{as:"h2","data-testid":g.heroSubtitle,fontWeight:"normal",mt:4,size:"md",children:"Find and use open-source Cloud Development Kit (CDK) libraries"}),Object(p.jsx)(q.a,{color:"initial",maxW:"36rem",mt:8,mx:"auto",w:"full",children:Object(p.jsxs)(_.a,{hasButton:!0,children:[Object(p.jsx)(_.b,{}),Object(p.jsx)(_.c,{})]})})]})},J=n(238),Q=n(237),$=n(216),ee=n(48),te=n(122),ne=n(160),ae=function(e){var t=e.title,n=e.description,a=e.children;return Object(p.jsxs)(c.a,{color:"blue.800","data-testid":g.infoSection,direction:"column",px:f.X,py:f.Y,children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.infoSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:t}),Object(p.jsxs)(c.a,{direction:"column",h:"full",justify:"space-between",children:[Object(p.jsx)(d.a,{"data-testid":g.infoSectionDescription,fontSize:"lg",mb:4,children:n}),a]})]})},ce=[{name:"Datadog",Icon:function(e){return Object(p.jsxs)(ne.a,Object(w.a)(Object(w.a)({viewBox:"0 0 32 34"},e),{},{children:[Object(p.jsx)("g",{clipPath:"url(#clip0_2245_48088)",children:Object(p.jsx)("path",{clipRule:"evenodd",d:"M26.6008 24.1363L23.774 22.2717L21.4158 26.2107L18.6731 25.4088L16.2581 29.0947L16.3819 30.2549L29.5121 27.8356L28.7495 19.6318L26.6008 24.1363ZM14.3559 20.5992L16.4625 20.3095C16.8034 20.4627 17.0406 20.521 17.4493 20.625C18.0858 20.7908 18.8227 20.9499 19.9139 20.4C20.1678 20.2742 20.6968 19.7905 20.9107 19.5147L29.5419 17.9489L30.4224 28.6054L15.6356 31.2704L14.3559 20.5992ZM30.3891 16.7593L29.5371 16.9216L27.9003 0.0106812L0.0106812 3.24462L3.44659 31.1271L6.71108 30.6533C6.45038 30.2811 6.04446 29.8308 5.35124 29.2542C4.38979 28.4554 4.72985 27.0988 5.29688 26.2421C6.04723 24.7946 9.91328 22.955 9.69424 20.6412C9.61568 19.8 9.48195 18.7048 8.70105 17.9545C8.67168 18.266 8.72446 18.5659 8.72446 18.5659C8.72446 18.5659 8.40384 18.1568 8.24393 17.5989C8.08521 17.3851 7.96061 17.3168 7.79197 17.0311C7.67174 17.3617 7.68761 17.745 7.68761 17.745C7.68761 17.745 7.42533 17.1252 7.38287 16.6022C7.22732 16.8363 7.18804 17.2811 7.18804 17.2811C7.18804 17.2811 6.84719 16.3042 6.92496 15.778C6.76941 15.3201 6.30833 14.4114 6.43888 12.3461C7.29002 12.9425 9.16372 12.8008 9.89383 11.7247C10.1363 11.3684 10.3021 10.3954 9.77281 8.47844C9.43275 7.24915 8.59074 5.4187 8.26258 4.7243L8.2233 4.75247C8.3963 5.31196 8.75303 6.48491 8.88992 7.05352C9.30419 8.77842 9.41529 9.37879 9.22086 10.174C9.05539 10.8652 8.65859 11.3176 7.6527 11.8231C6.6468 12.3302 5.31196 11.0961 5.22744 11.0279C4.25012 10.2494 3.49421 8.97921 3.40969 8.36218C3.322 7.68682 3.79895 7.28129 4.03941 6.72894C3.69539 6.82735 3.31168 7.00194 3.31168 7.00194C3.31168 7.00194 3.76959 6.52816 4.33424 6.11826C4.56796 5.96351 4.70525 5.8651 4.95166 5.66035C4.59494 5.6544 4.30527 5.66472 4.30527 5.66472C4.30527 5.66472 4.90008 5.34331 5.51671 5.10919C5.06554 5.08935 4.63382 5.10602 4.63382 5.10602C4.63382 5.10602 5.96113 4.5124 7.00948 4.07671C7.73047 3.7811 8.43479 3.86839 8.8304 4.44058C9.34982 5.19014 9.89542 5.59726 11.0517 5.84963C11.7616 5.53496 11.9774 5.37307 12.8695 5.13022C13.6547 4.26678 14.2714 4.15488 14.2714 4.15488C14.2714 4.15488 13.9654 4.43542 13.8837 4.87627C14.3289 4.5255 14.817 4.23266 14.817 4.23266C14.817 4.23266 14.6281 4.46598 14.4519 4.83659L14.4928 4.8973C15.0122 4.58581 15.6229 4.34019 15.6229 4.34019C15.6229 4.34019 15.4483 4.56081 15.2435 4.84651C15.6352 4.84334 16.4296 4.86318 16.7379 4.89809C18.558 4.93817 18.9358 2.95416 19.6341 2.70537C20.5087 2.39308 20.8995 2.2042 22.3899 3.66801C23.6688 4.92468 24.668 7.17415 24.172 7.67809C23.7561 8.09632 22.9355 7.51501 22.0261 6.38134C21.5455 5.78098 21.1821 5.0715 21.0118 4.16957C20.8682 3.4085 20.3091 2.96686 20.3091 2.96686C20.3091 2.96686 20.6337 3.68824 20.6337 4.32551C20.6337 4.6735 20.6773 5.97462 21.2352 6.70473C21.1801 6.81147 21.1543 7.23288 21.0932 7.31343C20.444 6.52895 19.05 5.96748 18.8227 5.80201C19.5921 6.43253 21.3606 7.88086 22.04 9.26887C22.6824 10.5815 22.3038 11.7846 22.6288 12.0961C22.7213 12.1854 24.0105 13.7916 24.2585 14.5987C24.691 16.0054 24.2843 17.4835 23.718 18.4005L22.1368 18.6469C21.9054 18.5826 21.7495 18.5505 21.542 18.4302C21.6562 18.2279 21.8836 17.7231 21.886 17.6192L21.7967 17.4624C21.3047 18.1596 20.4801 18.8366 19.7952 19.2254C18.8989 19.7333 17.8656 19.6552 17.193 19.4468C15.284 18.858 13.4789 17.568 13.0437 17.2291C13.0437 17.2291 13.0302 17.4997 13.1123 17.5604C13.5936 18.1033 14.6963 19.0854 15.7621 19.7698L13.4901 20.0198L14.5642 28.3836C14.088 28.4519 14.0138 28.4852 13.4924 28.5594C13.0329 26.9361 12.154 25.8762 11.1934 25.2588C10.3462 24.7144 9.17761 24.5918 8.05902 24.8132L7.9872 24.8965C8.76493 24.8156 9.68313 24.9283 10.6263 25.5255C11.5521 26.1107 12.2981 27.6226 12.5726 28.5328C12.9242 29.6962 13.1675 30.9406 12.2211 32.2596C11.5477 33.1972 9.58195 33.7155 7.99395 32.5945C8.41813 33.2766 8.99151 33.8345 9.76329 33.9397C10.9093 34.0952 11.9969 33.8964 12.7457 33.1278C13.3849 32.4707 13.7238 31.0966 13.6345 29.6494L14.6459 29.5026L15.011 32.1001L31.7553 30.0839L30.3891 16.7593ZM20.202 9.70535C20.1551 9.81209 20.0817 9.88193 20.192 10.2291L20.1988 10.249L20.2162 10.2938L20.2623 10.3978C20.4611 10.8041 20.6793 11.1874 21.044 11.383C21.1384 11.3672 21.236 11.3564 21.3372 11.3513C21.6797 11.3362 21.8959 11.3906 22.0332 11.4644C22.0455 11.3961 22.0483 11.2961 22.0407 11.1489C22.0142 10.6343 22.1427 9.75892 21.1535 9.29823C20.7801 9.12483 20.2563 9.1784 20.0817 9.39466C20.1135 9.39863 20.142 9.40537 20.1643 9.41291C20.4281 9.50537 20.2492 9.59623 20.202 9.70535ZM22.9744 14.5075C22.8447 14.436 22.2384 14.4642 21.8122 14.515C21.0003 14.6106 20.1238 14.8924 19.9317 15.0423C19.5826 15.3122 19.7413 15.7828 19.9992 15.976C20.7226 16.5165 21.3567 16.8787 22.0261 16.7907C22.4372 16.7367 22.7994 16.0859 23.0562 15.4955C23.2319 15.0888 23.2319 14.6499 22.9744 14.5075ZM15.7867 10.3426C16.0157 10.1252 14.6463 9.83947 13.5837 10.564C12.8 11.0985 12.775 12.2445 13.5254 12.8941C13.6004 12.9583 13.6623 13.004 13.7202 13.0413C13.9392 12.9381 14.1888 12.8337 14.4761 12.7405C14.9614 12.583 15.3649 12.5016 15.6967 12.4584C15.8554 12.281 16.0399 11.9687 15.9939 11.4033C15.9312 10.6363 15.3499 10.7581 15.7867 10.3426Z",fill:"#632CA6",fillRule:"evenodd"})}),Object(p.jsx)("defs",{children:Object(p.jsx)("clipPath",{id:"clip0_2245_48088",children:Object(p.jsx)("rect",{fill:"white",height:"34",width:"31.766"})})})]}))},url:Object(O.c)({keywords:["Datadog"]})},{name:"MongoDB",Icon:function(e){return Object(p.jsxs)(ne.a,Object(w.a)(Object(w.a)({viewBox:"0 0 18 37"},e),{},{children:[Object(p.jsx)("path",{d:"M9.09725 0.469971L10.1001 2.35348C10.3255 2.70106 10.5698 3.00871 10.8575 3.29523C11.7009 4.12816 12.4871 5.01714 13.2107 5.95609C14.9099 8.18718 16.056 10.6649 16.8744 13.3445C17.3653 14.9814 17.6318 16.6606 17.6518 18.3586C17.734 23.4349 15.9937 27.7937 12.485 31.4163C11.9143 31.9908 11.2977 32.5178 10.6414 32.9921C10.2938 32.9921 10.1294 32.7256 9.98617 32.4802C9.72529 32.0251 9.55165 31.5253 9.4742 31.0065C9.3509 30.3923 9.26987 29.7782 9.3098 29.1441V28.8576C9.28161 28.7965 8.97513 0.614404 9.09725 0.469971Z",fill:"#599636"}),Object(p.jsx)("path",{d:"M9.09723 0.407647C9.05614 0.325449 9.01504 0.387684 8.97394 0.427609C8.9939 0.838599 8.85064 1.20497 8.62636 1.5549C8.37977 1.90248 8.05333 2.16903 7.72571 2.45555C5.90562 4.0314 4.47304 5.93487 3.3258 8.0638C1.79927 10.929 1.01253 13.9997 0.789419 17.2324C0.687259 18.3984 1.15813 22.513 1.52567 23.7002C2.52848 26.8519 4.32978 29.4928 6.66301 31.785C7.23605 32.3369 7.84901 32.8488 8.4831 33.3409C8.66746 33.3409 8.68742 33.1765 8.72969 33.0543C8.81052 32.793 8.87214 32.5261 8.91405 32.2558L9.32504 29.1863L9.09723 0.407647Z",fill:"#6CAC48"}),Object(p.jsx)("path",{d:"M10.1001 34.2391C10.1412 33.7694 10.3666 33.3796 10.6121 32.9909C10.3655 32.8888 10.1823 32.6856 10.039 32.459C9.91549 32.2444 9.81324 32.0183 9.73372 31.7838C9.44719 30.9243 9.38613 30.0224 9.30394 29.1441V28.6122C9.20177 28.6944 9.18064 29.3895 9.18064 29.4929C9.12088 30.4212 8.99769 31.3443 8.81192 32.2559C8.75086 32.6246 8.70976 32.9921 8.48312 33.3197C8.48312 33.3608 8.48312 33.4019 8.50309 33.463C8.87181 34.548 8.97279 35.6529 9.03503 36.779V37.19C9.03503 37.6808 9.01507 37.5775 9.42254 37.7419C9.58693 37.803 9.77012 37.8241 9.93452 37.9462C10.0578 37.9462 10.0778 37.8441 10.0778 37.7619L10.0167 37.0867V35.2032C9.99675 34.8744 10.0578 34.548 10.0989 34.2403L10.1001 34.2391Z",fill:"#C2BFBF"})]}))},url:Object(O.c)({keywords:["MongoDB"]})},{name:"Aqua Security",imgsrc:"/assets/aqua-security.png",url:Object(O.c)({keywords:["aqua"]})}],re=function(e){var t=e.url,n=e.imgsrc,a=e.label,c=e.Icon;return Object(p.jsx)(j.a,{color:"blue.500","data-testid":g.infoSectionIcon,fontWeight:"bold",to:t,children:Object(p.jsxs)(J.a,{align:"center",spacing:2,children:[n&&Object(p.jsx)(Q.a,{"aria-label":a,h:8,src:n}),c&&Object(p.jsx)(c,{"aria-label":a,h:8,w:8}),Object(p.jsx)("span",{children:a})]})})},ie=function(){return Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)($.a,{display:{xl:"none"},mx:f.X,w:"auto"}),Object(p.jsx)($.a,{display:{base:"none",xl:"initial"},h:"auto",my:f.Y,orientation:"vertical"})]})},oe=function(e){var t=e.children;return Object(p.jsx)(c.a,{align:"center",pt:4,sx:{gap:"2rem"},children:t})},se=function(){return Object(p.jsx)(c.a,{bg:"white","data-testid":g.infoContainer,direction:"column",children:Object(p.jsxs)(z.a,{templateColumns:{base:"1fr",xl:"1fr auto 1fr auto 1fr"},templateRows:{base:"1fr auto 1fr auto 1fr",xl:"auto"},children:[Object(p.jsx)(ae,{description:"Find libraries for AWS Cloud Development Kit (AWS CDK), which generates AWS CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration files, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.",title:"One home for all CDKs",children:Object(p.jsx)(oe,{children:Object.entries(ee.b).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.name,r=a.imgsrc;return Object(p.jsx)(re,{imgsrc:r,label:c,url:Object(O.c)({cdkType:n,sort:L.a.DownloadsDesc})},n)}))})}),Object(p.jsx)(ie,{}),Object(p.jsx)(ae,{description:"Define, test, and deploy cloud infrastructure using high level programming languages such as such as Java, .NET, TypeScript, and Python. Find documentation, API reference and code samples to quickly build your application. ",title:"Support across languages",children:Object(p.jsx)(oe,{children:Object.entries(te.c).filter((function(e){var t=Object(v.a)(e,1)[0];return te.e.has(t)})).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.icon,r=a.name;return Object(p.jsx)(re,{Icon:c,label:r,url:Object(O.c)({languages:[n],sort:L.a.DownloadsDesc})},n)}))})}),Object(p.jsx)(ie,{}),Object(p.jsx)(ae,{description:"Find construct libraries published by the community and cloud service providers such as Datadog, MongoDB, Aqua Security, AWS services, and more.",title:"Provision a range of cloud resources",children:Object(p.jsx)(oe,{children:ce.map((function(e){var t=e.url,n=e.name,a=e.imgsrc,c=e.Icon;return Object(p.jsx)(re,{Icon:c,imgsrc:a,label:n,url:t},n)}))})})]})})},le=function(){var e,t,n,a=Object(s.b)().data,l=Object(o.b)().data,d=null!==(e=null===a||void 0===a||null===(t=a.featureFlags)||void 0===t?void 0:t.fullSite)&&void 0!==e&&e,u=(null!==(n=null===l||void 0===l?void 0:l.packages.length)&&void 0!==n?n:0)>0;return Object(p.jsx)(i.a,{meta:{title:"Construct Hub",description:"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.",suffix:!1},pageName:"home",children:Object(p.jsxs)(Y,{as:c.a,"data-testid":g.page,direction:"column",children:[Object(p.jsx)(r.a,{}),Object(p.jsx)(V,{}),Object(p.jsx)(se,{}),u&&d?Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)(C,{}),Object(p.jsx)(G,{}),Object(p.jsx)(N,{})]}):null]})})}}}]);
2
+ //# sourceMappingURL=6.d05c0b08.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","util/package.ts","api/package/util.ts","hooks/useQueryParams/useQueryParams.ts","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/Time/Time.tsx","components/Highlight/Highlight.tsx","components/PackageTag/PackageTag.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","views/Home/constants.ts","views/Home/testIds.ts","views/Home/Categories.tsx","views/Home/PackageGrid.tsx","views/Home/CDKTypeTabs.tsx","hooks/useHistoryState/useHistoryState.ts","views/Home/Featured.tsx","views/Home/useSection.ts","views/Home/GradientContainer.tsx","views/Home/Hero.tsx","views/Home/InfoSection.tsx","views/Home/Info.tsx","icons/DatadogIcon.tsx","icons/MongoDBIcon.tsx","views/Home/Home.tsx"],"names":["pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","highlightsFrom","packageTags","length","reduce","accum","tag","highlight","tagObjectsFrom","keywords","tagObjects","Array","tagLabels","Set","filter","Boolean","keyword","label","map","id","mapPackageTags","KEYWORD_IGNORE_LIST","has","mapPackageKeywords","toLowerCase","push","add","getFullPackageName","scope","getAssetsPath","version","prefix","API_PATHS","PACKAGES_PREFIX","body","sanitizeVersion","ver","sanitized","startsWith","substring","findPackage","catalog","pkg","packages","p","sort","p1","p2","date1","Date","metadata","date","getTime","useQueryParams","useLocation","useMemo","URLSearchParams","useConfigValue","key","data","useConfig","defaultLang","Language","TypeScript","LOCAL_KEY","isValidLang","lang","TEMP_SUPPORTED_LANGUAGES","getInitialLang","langFromParams","storedLang","localStorage","getItem","useLanguage","options","updateUrl","updateSaved","pathname","hash","useHistory","replace","params","get","QUERY_PARAMS","LANGUAGE","useState","language","setLanguage","set","toString","update","useCallback","val","setItem","PackageCardType","testIds","createTestIds","Detail","dataTestid","tooltip","value","hasArrow","isDisabled","placement","fontSize","zIndex","Details","usePackageCard","author","useStats","downloads","npm","authorName","publishDate","undefined","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","color","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","fontWeight","Heading","currentLanguage","constructFramework","cdkType","cdkVersion","majorVersion","Link","getPackagePath","align","CDKType","mr","wordBreak","Highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","left","right","LANGUAGES","indexOf","info","isSupportedByLibrary","includes","isSupportedByConstructHub","Icon","icon","borderRadius","h","opacity","w","LanguageSupportTooltip","Languages","Tags","tags","slice","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","wideContainer","minH","templateColumns","base","direction","justify","sx","gap","spacing","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","alt","src","tagProps","textDecoration","isSupported","langName","LANGUAGE_NAME_MAP","message","SECTION_PADDING","X","Y","DEFAULT_CATEGORIES","url","Categories","categories","categoriesContainer","my","px","py","categoriesHeader","mb","categoriesDescription","category","backgroundColor","colorScheme","style","PackageGrid","packageGrid","mt","xl","tabs","community","aws","hashicorp","PackageTab","cdkTypeTab","PackageTabPanel","props","cdkTypeGrid","cdkTypeSeeAllButton","onClick","window","scrollTo","CatalogSearchSort","DownloadsDesc","CDKTypeTabs","useCatalogResults","limit","initialValue","history","location","state","rawState","rawSetState","useHistoryState","tabIndex","setTabIndex","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","ROUTES","CONTRIBUTE","defaultIndex","onChange","index","Featured","homePackages","DEFAULT_FEATURED_PACKAGES","sections","featured","showLastUpdated","section","showPackages","useCatalog","loading","error","results","PublishDateDesc","useSection","featuredContainer","featuredHeader","featuredGrid","animation","keyframes","GradientContainer","bgSize","Hero","textAlign","heroHeader","heroSubtitle","maxW","mx","SearchBar","hasButton","InfoSection","infoSection","infoSectionHeading","infoSectionDescription","publishers","viewBox","clipPath","clipRule","d","fill","fillRule","height","width","imgsrc","IconLink","infoSectionIcon","ResponsiveDivider","display","orientation","Row","pt","Info","infoContainer","templateRows","CDKTYPE_RENDER_MAP","cdktype","Home","config","fullSite","featureFlags","hasPackages","Flex","DevPreviewBanner"],"mappings":"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","file":"static/js/6.4a34e978.chunk.js","sourcesContent":["export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n","import { API_PATHS } from \"../../constants/url\";\nimport { CatalogPackage, Packages } from \"./packages\";\n\nexport const getFullPackageName = (name: string, scope?: string) => {\n return scope ? `${scope}/${name}` : name;\n};\n\nexport const getAssetsPath = (\n name: string,\n version: string,\n scope?: string\n) => {\n const prefix = `${API_PATHS.PACKAGES_PREFIX}/`;\n const body = getFullPackageName(name, scope);\n const suffix = `/v${version}`;\n return `${prefix}${body}${suffix}`;\n};\n\nexport const sanitizeVersion = (ver: string) => {\n let sanitized = ver;\n if (sanitized.startsWith(\"~\") || sanitized.startsWith(\"^\")) {\n sanitized = sanitized.substring(1);\n }\n return sanitized;\n};\n\nexport const findPackage = (\n catalog: Packages,\n pkg: string\n): CatalogPackage | undefined => {\n const packages = catalog.packages.filter((p) => p.name === pkg);\n\n // return the most recently published version\n if (packages.length > 1) {\n return packages.sort((p1, p2) => {\n const date1 = new Date(p1.metadata.date);\n const date2 = new Date(p2.metadata.date);\n return date2.getTime() - date1.getTime();\n })[0];\n }\n\n return packages[0];\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../contexts/Stats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the NPM registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"blue.500\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n description,\n comment,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge majorVersion={cdkVersion} mr={2} name={cdkType} />\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"blue.800\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"blue.800\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\nconst PackageCardContext = createContext<\n (CatalogPackage & { comment?: string }) | null\n>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={pkg}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import { Stack, Image, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n return (\n <Stack align=\"center\" direction=\"row\" spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<LanguageSupportTooltipProps> =\n ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n };\n","export const SECTION_PADDING = {\n X: [4, 8, 12, 16, 20],\n Y: [4, 6, 8],\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"homeRedesign\", [\n \"page\",\n \"packageGrid\",\n // Hero Section\n \"heroHeader\",\n \"heroSubtitle\",\n // Info Section\n \"infoContainer\",\n \"infoSection\",\n \"infoSectionHeading\",\n \"infoSectionDescription\",\n \"infoSectionIcon\",\n // Featured / Recently Updated Section\n \"featuredContainer\",\n \"featuredHeader\",\n \"featuredGrid\",\n // CDK Type Section\n \"cdkTypeSection\",\n \"cdkTypeSectionHeading\",\n \"cdkTypeSectionDescription\",\n \"cdkTypeTab\",\n \"cdkTypeGrid\",\n \"cdkTypeSeeAllButton\",\n \"categoriesContainer\",\n \"categoriesHeader\",\n \"categoriesDescription\",\n] as const);\n","import { Flex, Heading, Text, Button, Wrap, WrapItem } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Category } from \"../../api/config\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\n/**\n * Categories used if config does not have specific categories\n */\nconst DEFAULT_CATEGORIES: Category[] = [\n { title: \"Monitoring\", url: getSearchPath({ keywords: [\"monitoring\"] }) },\n { title: \"Containers\", url: getSearchPath({ keywords: [\"containers\"] }) },\n { title: \"Serverless\", url: getSearchPath({ keywords: [\"serverless\"] }) },\n { title: \"Databases\", url: getSearchPath({ keywords: [\"databases\"] }) },\n { title: \"Utilities\", url: getSearchPath({ keywords: [\"utilities\"] }) },\n { title: \"Deployment\", url: getSearchPath({ keywords: [\"deployment\"] }) },\n { title: \"Websites\", url: getSearchPath({ keywords: [\"websites\"] }) },\n { title: \"Security\", url: getSearchPath({ keywords: [\"security\"] }) },\n { title: \"Compliance\", url: getSearchPath({ keywords: [\"compliance\"] }) },\n { title: \"Network\", url: getSearchPath({ keywords: [\"network\"] }) },\n {\n title: \"Artificial Intelligence (AI)\",\n url: getSearchPath({ keywords: [\"artificial intelligence (ai)\"] }),\n },\n {\n title: \"Cloud Services Integrations\",\n url: getSearchPath({ keywords: [\"cloud services integrations\"] }),\n },\n];\n\nexport const Categories: FunctionComponent = () => {\n const categories = useConfigValue(\"categories\") ?? DEFAULT_CATEGORIES;\n\n return (\n <Flex\n data-testid={testIds.categoriesContainer}\n direction=\"column\"\n my={4}\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n color=\"white\"\n data-testid={testIds.categoriesHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={1}\n >\n Search by use case\n </Heading>\n <Text\n color=\"white\"\n data-testid={testIds.categoriesDescription}\n lineHeight=\"md\"\n mb={5}\n >\n Find the right construct for your problem set from a community that’s\n already tackled it.\n </Text>\n\n <Wrap>\n {categories.map((category) => (\n <WrapItem key={category.title}>\n <Button\n _hover={{ backgroundColor: \"white\" }}\n as={NavLink}\n color=\"blue.800\"\n colorScheme=\"gray\"\n size=\"md\"\n style={{ boxShadow: \"0px 4px 4px rgba(73, 73, 73, 0.63)\" }}\n to={category.url}\n >\n {category.title}\n </Button>\n </WrapItem>\n ))}\n </Wrap>\n </Flex>\n );\n};\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const PackageGrid: FunctionComponent<{ packages: CatalogPackage[] }> = ({\n packages,\n}) => {\n return (\n <Grid\n data-testid={testIds.packageGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {packages.map((pkg) => (\n <PackageCard key={`${pkg.name}-${pkg.version}`} pkg={pkg} />\n ))}\n </Grid>\n );\n};\n","import {\n Button,\n Flex,\n forwardRef,\n Heading,\n Tab,\n TabList,\n TabPanelProps,\n TabPanel,\n TabPanels,\n Tabs,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { ROUTES } from \"../../constants/url\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\nimport { useHistoryState } from \"../../hooks/useHistoryState\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { PackageGrid } from \"./PackageGrid\";\nimport testIds from \"./testIds\";\n\ninterface PackageTabProps {\n data: ReturnType<typeof useCatalogResults>;\n label: string;\n}\n\ninterface PackageTabPanelProps extends PackageTabProps, TabPanelProps {\n tag: string;\n}\n\nconst tabs = {\n community: {\n label: \"Community\",\n tag: \"community\",\n },\n aws: {\n label: \"AWS\",\n tag: \"aws-official\",\n },\n hashicorp: {\n label: \"HashiCorp\",\n tag: \"hashicorp-official\",\n },\n};\n\nconst PackageTab: FunctionComponent<PackageTabProps> = ({ data, label }) => {\n return (\n <Tab\n data-testid={testIds.cdkTypeTab}\n data-value={label}\n isDisabled={data.page.length < 1}\n >\n {label}\n </Tab>\n );\n};\n\nconst PackageTabPanel = forwardRef<PackageTabPanelProps, \"div\">(\n ({ label, data, tag, ...props }, ref) => {\n return (\n <TabPanel data-testid={testIds.cdkTypeGrid} ref={ref} {...props} p={0}>\n <PackageGrid packages={data.page} />\n\n <Flex justify=\"center\" w=\"full\">\n <NavLink\n data-testid={testIds.cdkTypeSeeAllButton}\n onClick={() => window.scrollTo(0, 0)}\n to={getSearchPath({\n tags: tag ? [tag] : undefined,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n >\n <Button colorScheme=\"blue\" my={8}>\n See all {label} constructs\n </Button>\n </NavLink>\n </Flex>\n </TabPanel>\n );\n }\n);\n\nexport const CDKTypeTabs: FunctionComponent = () => {\n const community = useCatalogResults({\n tags: [tabs.community.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const aws = useCatalogResults({\n tags: [tabs.aws.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n const hashicorp = useCatalogResults({\n tags: [tabs.hashicorp.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const [tabIndex, setTabIndex] = useHistoryState(\"cdkTypeTab\", 0);\n\n return (\n <Flex\n bg=\"white\"\n color=\"blue.800\"\n data-testid={testIds.cdkTypeSection}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.cdkTypeSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n Search by publisher\n </Heading>\n <Text\n data-testid={testIds.cdkTypeSectionDescription}\n lineHeight=\"md\"\n mb={5}\n >\n Find constructs published by the open-source community, AWS, and cloud\n technology providers in one location. You can also include your own\n construct libraries on Construct Hub by publishing them on npm registry.\n More concrete guidance can be found in the{\" \"}\n <NavLink color=\"blue.500\" to={ROUTES.CONTRIBUTE}>\n Contribute\n </NavLink>{\" \"}\n page.\n </Text>\n <Tabs\n defaultIndex={tabIndex}\n onChange={(index) => setTabIndex(index)}\n variant=\"line\"\n >\n <TabList>\n <PackageTab data={community} label={tabs.community.label} />\n\n <PackageTab data={aws} label={tabs.aws.label} />\n\n <PackageTab data={hashicorp} label={tabs.hashicorp.label} />\n </TabList>\n <TabPanels minH=\"28.5rem\">\n <PackageTabPanel\n data={community}\n label={tabs.community.label.toLowerCase()}\n tag={tabs.community.tag}\n />\n\n <PackageTabPanel\n data={aws}\n label={tabs.aws.label}\n tag={tabs.aws.tag}\n />\n\n <PackageTabPanel\n data={hashicorp}\n label={tabs.hashicorp.label}\n tag={tabs.hashicorp.tag}\n />\n </TabPanels>\n </Tabs>\n </Flex>\n );\n};\n","import { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport const useHistoryState = <T>(\n key: string,\n initialValue: T\n): [T, (t: T) => void] => {\n const history = useHistory();\n const [rawState, rawSetState] = useState<T>(() => {\n const value = (history.location.state as any)?.[key];\n return value ?? initialValue;\n });\n const setState = (value: T) => {\n history.replace({\n ...history.location,\n state: {\n ...(history.location.state as any),\n [key]: value,\n },\n });\n rawSetState(value);\n };\n return [rawState, setState];\n};\n","import { Flex, Grid, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { DEFAULT_FEATURED_PACKAGES } from \"../../api/config\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\nimport { useSection } from \"./useSection\";\n\nexport const Featured: FunctionComponent = () => {\n const homePackages = useConfigValue(\"featuredPackages\");\n const [featured = { name: \"Recently Updated\", showLastUpdated: 4 }] = (\n homePackages ?? DEFAULT_FEATURED_PACKAGES\n ).sections;\n\n const section = useSection(featured);\n\n if (!section) {\n return null;\n }\n\n return (\n <Flex\n color=\"white\"\n data-testid={testIds.featuredContainer}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.featuredHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n >\n {featured.name}\n </Heading>\n <Grid\n data-testid={testIds.featuredGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {section?.slice(0, 4).map((pkg) => (\n <PackageCard key={pkg.name} pkg={pkg} />\n ))}\n </Grid>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { FeaturedPackagesDetail } from \"../../api/config\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { findPackage } from \"../../api/package/util\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\n\nexport const useSection = ({\n showLastUpdated,\n showPackages,\n}: {\n showLastUpdated?: number;\n showPackages?: FeaturedPackagesDetail[];\n}) => {\n const { loading, error } = useCatalog();\n const { results } = useCatalogResults({\n limit: 25,\n sort: CatalogSearchSort.PublishDateDesc,\n });\n\n return useMemo(() => {\n if (loading || error || !results) return [];\n\n if (showLastUpdated) {\n return results.slice(0, showLastUpdated);\n } else if (showPackages) {\n return showPackages\n .map((p) => {\n const pkg = findPackage({ packages: results }, p.name);\n if (pkg) {\n return {\n ...pkg,\n comment: p.comment,\n };\n }\n return undefined;\n })\n .filter((pkg) => pkg !== undefined) as CatalogPackage[];\n } else {\n return undefined;\n }\n }, [results, error, loading, showLastUpdated, showPackages]);\n};\n","import { Box, BoxProps, forwardRef, keyframes } from \"@chakra-ui/react\";\n\nconst gradient = \"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)\";\n\nconst animation = keyframes`\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n`;\n\nexport const GradientContainer = forwardRef<BoxProps, \"div\">((props, ref) => (\n <Box\n animation={`${animation} 10s linear infinite`}\n bg={gradient}\n bgSize=\"200% 200%\"\n ref={ref}\n {...props}\n />\n));\n","import { Box, Flex, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n SearchBar,\n SearchOverlay,\n SearchSuggestions,\n} from \"../../components/SearchBar\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport const Hero: FunctionComponent = () => {\n return (\n <Flex\n align=\"center\"\n color=\"white\"\n direction=\"column\"\n h=\"20rem\"\n justify=\"center\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n textAlign=\"center\"\n zIndex=\"1\"\n >\n <Heading as=\"h1\" data-testid={testIds.heroHeader} size=\"xl\">\n Simplify cloud development with constructs\n </Heading>\n <Heading\n as=\"h2\"\n data-testid={testIds.heroSubtitle}\n fontWeight=\"normal\"\n mt={4}\n size=\"md\"\n >\n Find and use open-source Cloud Development Kit (CDK) libraries\n </Heading>\n <Box color=\"initial\" maxW=\"36rem\" mt={8} mx=\"auto\" w=\"full\">\n <SearchBar hasButton>\n <SearchOverlay />\n <SearchSuggestions />\n </SearchBar>\n </Box>\n </Flex>\n );\n};\n","import { Flex, Heading, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactNode } from \"react\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport interface InfoSectionProps {\n title: string;\n description: ReactNode;\n}\n\nexport const InfoSection: FunctionComponent<InfoSectionProps> = ({\n title,\n description,\n children,\n}) => (\n <Flex\n color=\"blue.800\"\n data-testid={testIds.infoSection}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.infoSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n {title}\n </Heading>\n <Flex direction=\"column\" h=\"full\" justify=\"space-between\">\n <Text data-testid={testIds.infoSectionDescription} fontSize=\"lg\" mb={4}>\n {description}\n </Text>\n {children}\n </Flex>\n </Flex>\n);\n","import {\n Divider,\n Flex,\n Grid,\n Icon as ChakraIcon,\n Image,\n Stack,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { CDKType, CDKTYPE_RENDER_MAP } from \"../../constants/constructs\";\nimport {\n Language,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { DatadogIcon } from \"../../icons/DatadogIcon\";\nimport { MongoDBIcon } from \"../../icons/MongoDBIcon\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { InfoSection } from \"./InfoSection\";\nimport testIds from \"./testIds\";\n\nconst publishers = [\n {\n name: \"Datadog\",\n Icon: DatadogIcon,\n url: getSearchPath({ keywords: [\"Datadog\"] }),\n },\n {\n name: \"MongoDB\",\n Icon: MongoDBIcon,\n url: getSearchPath({ keywords: [\"MongoDB\"] }),\n },\n {\n name: \"Aqua Security\",\n imgsrc: \"/assets/aqua-security.png\",\n url: getSearchPath({ keywords: [\"aqua\"] }),\n },\n];\n\nconst IconLink = ({\n url,\n imgsrc,\n label,\n Icon,\n}: {\n url: string;\n label: string;\n imgsrc?: string;\n Icon?: typeof ChakraIcon;\n}) => (\n <NavLink\n color=\"blue.500\"\n data-testid={testIds.infoSectionIcon}\n fontWeight=\"bold\"\n to={url}\n >\n <Stack align=\"center\" spacing={2}>\n {imgsrc && <Image aria-label={label} h={8} src={imgsrc} />}\n {Icon && <Icon aria-label={label} h={8} w={8} />}\n <span>{label}</span>\n </Stack>\n </NavLink>\n);\n\nconst ResponsiveDivider = () => (\n <>\n <Divider display={{ xl: \"none\" }} mx={SECTION_PADDING.X} w=\"auto\" />\n <Divider\n display={{ base: \"none\", xl: \"initial\" }}\n h=\"auto\"\n my={SECTION_PADDING.Y}\n orientation=\"vertical\"\n />\n </>\n);\n\nconst Row: FunctionComponent = ({ children }) => (\n <Flex align=\"center\" pt={4} sx={{ gap: \"2rem\" }}>\n {children}\n </Flex>\n);\n\nexport const Info: FunctionComponent = () => (\n <Flex bg=\"white\" data-testid={testIds.infoContainer} direction=\"column\">\n <Grid\n templateColumns={{ base: \"1fr\", xl: \"1fr auto 1fr auto 1fr\" }}\n templateRows={{ base: \"1fr auto 1fr auto 1fr\", xl: \"auto\" }}\n >\n <InfoSection\n description=\"Find libraries for AWS Cloud Development Kit (CDK), which generates AWS CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration files, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.\"\n title=\"One home for all CDKs\"\n >\n <Row>\n {Object.entries(CDKTYPE_RENDER_MAP).map(\n ([cdktype, { name, imgsrc }]) => (\n <IconLink\n imgsrc={imgsrc}\n key={cdktype}\n label={name}\n url={getSearchPath({\n cdkType: cdktype as CDKType,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n />\n )\n )}\n </Row>\n </InfoSection>\n\n <ResponsiveDivider />\n\n <InfoSection\n description=\"Define, test, and deploy cloud infrastructure using high level programming languages such as such as Java, .NET, TypeScript, and Python. Find documentation, API reference and code samples to quickly build your application. \"\n title=\"Support across languages\"\n >\n <Row>\n {Object.entries(LANGUAGE_RENDER_MAP)\n .filter(([language]) =>\n TEMP_SUPPORTED_LANGUAGES.has(language as Language)\n )\n .map(([language, { icon: Icon, name }]) => (\n <IconLink\n Icon={Icon as typeof ChakraIcon}\n key={language}\n label={name}\n url={getSearchPath({\n languages: [language as Language],\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n />\n ))}\n </Row>\n </InfoSection>\n\n <ResponsiveDivider />\n\n <InfoSection\n description=\"Find construct libraries published by the community and cloud service providers such as Datadog, MongoDB, Aqua Security, AWS services, and more.\"\n title=\"Provision a range of cloud resources\"\n >\n <Row>\n {publishers.map(({ url, name, imgsrc, Icon }) => (\n <IconLink\n Icon={Icon}\n imgsrc={imgsrc}\n key={name}\n label={name}\n url={url}\n />\n ))}\n </Row>\n </InfoSection>\n </Grid>\n </Flex>\n);\n","import { Icon } from \"@chakra-ui/react\";\n\nexport const DatadogIcon: typeof Icon = (props) => (\n <Icon viewBox=\"0 0 32 34\" {...props}>\n <g clipPath=\"url(#clip0_2245_48088)\">\n <path\n clipRule=\"evenodd\"\n d=\"M26.6008 24.1363L23.774 22.2717L21.4158 26.2107L18.6731 25.4088L16.2581 29.0947L16.3819 30.2549L29.5121 27.8356L28.7495 19.6318L26.6008 24.1363ZM14.3559 20.5992L16.4625 20.3095C16.8034 20.4627 17.0406 20.521 17.4493 20.625C18.0858 20.7908 18.8227 20.9499 19.9139 20.4C20.1678 20.2742 20.6968 19.7905 20.9107 19.5147L29.5419 17.9489L30.4224 28.6054L15.6356 31.2704L14.3559 20.5992ZM30.3891 16.7593L29.5371 16.9216L27.9003 0.0106812L0.0106812 3.24462L3.44659 31.1271L6.71108 30.6533C6.45038 30.2811 6.04446 29.8308 5.35124 29.2542C4.38979 28.4554 4.72985 27.0988 5.29688 26.2421C6.04723 24.7946 9.91328 22.955 9.69424 20.6412C9.61568 19.8 9.48195 18.7048 8.70105 17.9545C8.67168 18.266 8.72446 18.5659 8.72446 18.5659C8.72446 18.5659 8.40384 18.1568 8.24393 17.5989C8.08521 17.3851 7.96061 17.3168 7.79197 17.0311C7.67174 17.3617 7.68761 17.745 7.68761 17.745C7.68761 17.745 7.42533 17.1252 7.38287 16.6022C7.22732 16.8363 7.18804 17.2811 7.18804 17.2811C7.18804 17.2811 6.84719 16.3042 6.92496 15.778C6.76941 15.3201 6.30833 14.4114 6.43888 12.3461C7.29002 12.9425 9.16372 12.8008 9.89383 11.7247C10.1363 11.3684 10.3021 10.3954 9.77281 8.47844C9.43275 7.24915 8.59074 5.4187 8.26258 4.7243L8.2233 4.75247C8.3963 5.31196 8.75303 6.48491 8.88992 7.05352C9.30419 8.77842 9.41529 9.37879 9.22086 10.174C9.05539 10.8652 8.65859 11.3176 7.6527 11.8231C6.6468 12.3302 5.31196 11.0961 5.22744 11.0279C4.25012 10.2494 3.49421 8.97921 3.40969 8.36218C3.322 7.68682 3.79895 7.28129 4.03941 6.72894C3.69539 6.82735 3.31168 7.00194 3.31168 7.00194C3.31168 7.00194 3.76959 6.52816 4.33424 6.11826C4.56796 5.96351 4.70525 5.8651 4.95166 5.66035C4.59494 5.6544 4.30527 5.66472 4.30527 5.66472C4.30527 5.66472 4.90008 5.34331 5.51671 5.10919C5.06554 5.08935 4.63382 5.10602 4.63382 5.10602C4.63382 5.10602 5.96113 4.5124 7.00948 4.07671C7.73047 3.7811 8.43479 3.86839 8.8304 4.44058C9.34982 5.19014 9.89542 5.59726 11.0517 5.84963C11.7616 5.53496 11.9774 5.37307 12.8695 5.13022C13.6547 4.26678 14.2714 4.15488 14.2714 4.15488C14.2714 4.15488 13.9654 4.43542 13.8837 4.87627C14.3289 4.5255 14.817 4.23266 14.817 4.23266C14.817 4.23266 14.6281 4.46598 14.4519 4.83659L14.4928 4.8973C15.0122 4.58581 15.6229 4.34019 15.6229 4.34019C15.6229 4.34019 15.4483 4.56081 15.2435 4.84651C15.6352 4.84334 16.4296 4.86318 16.7379 4.89809C18.558 4.93817 18.9358 2.95416 19.6341 2.70537C20.5087 2.39308 20.8995 2.2042 22.3899 3.66801C23.6688 4.92468 24.668 7.17415 24.172 7.67809C23.7561 8.09632 22.9355 7.51501 22.0261 6.38134C21.5455 5.78098 21.1821 5.0715 21.0118 4.16957C20.8682 3.4085 20.3091 2.96686 20.3091 2.96686C20.3091 2.96686 20.6337 3.68824 20.6337 4.32551C20.6337 4.6735 20.6773 5.97462 21.2352 6.70473C21.1801 6.81147 21.1543 7.23288 21.0932 7.31343C20.444 6.52895 19.05 5.96748 18.8227 5.80201C19.5921 6.43253 21.3606 7.88086 22.04 9.26887C22.6824 10.5815 22.3038 11.7846 22.6288 12.0961C22.7213 12.1854 24.0105 13.7916 24.2585 14.5987C24.691 16.0054 24.2843 17.4835 23.718 18.4005L22.1368 18.6469C21.9054 18.5826 21.7495 18.5505 21.542 18.4302C21.6562 18.2279 21.8836 17.7231 21.886 17.6192L21.7967 17.4624C21.3047 18.1596 20.4801 18.8366 19.7952 19.2254C18.8989 19.7333 17.8656 19.6552 17.193 19.4468C15.284 18.858 13.4789 17.568 13.0437 17.2291C13.0437 17.2291 13.0302 17.4997 13.1123 17.5604C13.5936 18.1033 14.6963 19.0854 15.7621 19.7698L13.4901 20.0198L14.5642 28.3836C14.088 28.4519 14.0138 28.4852 13.4924 28.5594C13.0329 26.9361 12.154 25.8762 11.1934 25.2588C10.3462 24.7144 9.17761 24.5918 8.05902 24.8132L7.9872 24.8965C8.76493 24.8156 9.68313 24.9283 10.6263 25.5255C11.5521 26.1107 12.2981 27.6226 12.5726 28.5328C12.9242 29.6962 13.1675 30.9406 12.2211 32.2596C11.5477 33.1972 9.58195 33.7155 7.99395 32.5945C8.41813 33.2766 8.99151 33.8345 9.76329 33.9397C10.9093 34.0952 11.9969 33.8964 12.7457 33.1278C13.3849 32.4707 13.7238 31.0966 13.6345 29.6494L14.6459 29.5026L15.011 32.1001L31.7553 30.0839L30.3891 16.7593ZM20.202 9.70535C20.1551 9.81209 20.0817 9.88193 20.192 10.2291L20.1988 10.249L20.2162 10.2938L20.2623 10.3978C20.4611 10.8041 20.6793 11.1874 21.044 11.383C21.1384 11.3672 21.236 11.3564 21.3372 11.3513C21.6797 11.3362 21.8959 11.3906 22.0332 11.4644C22.0455 11.3961 22.0483 11.2961 22.0407 11.1489C22.0142 10.6343 22.1427 9.75892 21.1535 9.29823C20.7801 9.12483 20.2563 9.1784 20.0817 9.39466C20.1135 9.39863 20.142 9.40537 20.1643 9.41291C20.4281 9.50537 20.2492 9.59623 20.202 9.70535ZM22.9744 14.5075C22.8447 14.436 22.2384 14.4642 21.8122 14.515C21.0003 14.6106 20.1238 14.8924 19.9317 15.0423C19.5826 15.3122 19.7413 15.7828 19.9992 15.976C20.7226 16.5165 21.3567 16.8787 22.0261 16.7907C22.4372 16.7367 22.7994 16.0859 23.0562 15.4955C23.2319 15.0888 23.2319 14.6499 22.9744 14.5075ZM15.7867 10.3426C16.0157 10.1252 14.6463 9.83947 13.5837 10.564C12.8 11.0985 12.775 12.2445 13.5254 12.8941C13.6004 12.9583 13.6623 13.004 13.7202 13.0413C13.9392 12.9381 14.1888 12.8337 14.4761 12.7405C14.9614 12.583 15.3649 12.5016 15.6967 12.4584C15.8554 12.281 16.0399 11.9687 15.9939 11.4033C15.9312 10.6363 15.3499 10.7581 15.7867 10.3426Z\"\n fill=\"#632CA6\"\n fillRule=\"evenodd\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2245_48088\">\n <rect fill=\"white\" height=\"34\" width=\"31.766\" />\n </clipPath>\n </defs>\n </Icon>\n);\n","import { Icon } from \"@chakra-ui/react\";\n\nexport const MongoDBIcon: typeof Icon = (props) => (\n <Icon viewBox=\"0 0 18 37\" {...props}>\n <path\n d=\"M9.09725 0.469971L10.1001 2.35348C10.3255 2.70106 10.5698 3.00871 10.8575 3.29523C11.7009 4.12816 12.4871 5.01714 13.2107 5.95609C14.9099 8.18718 16.056 10.6649 16.8744 13.3445C17.3653 14.9814 17.6318 16.6606 17.6518 18.3586C17.734 23.4349 15.9937 27.7937 12.485 31.4163C11.9143 31.9908 11.2977 32.5178 10.6414 32.9921C10.2938 32.9921 10.1294 32.7256 9.98617 32.4802C9.72529 32.0251 9.55165 31.5253 9.4742 31.0065C9.3509 30.3923 9.26987 29.7782 9.3098 29.1441V28.8576C9.28161 28.7965 8.97513 0.614404 9.09725 0.469971Z\"\n fill=\"#599636\"\n />\n <path\n d=\"M9.09723 0.407647C9.05614 0.325449 9.01504 0.387684 8.97394 0.427609C8.9939 0.838599 8.85064 1.20497 8.62636 1.5549C8.37977 1.90248 8.05333 2.16903 7.72571 2.45555C5.90562 4.0314 4.47304 5.93487 3.3258 8.0638C1.79927 10.929 1.01253 13.9997 0.789419 17.2324C0.687259 18.3984 1.15813 22.513 1.52567 23.7002C2.52848 26.8519 4.32978 29.4928 6.66301 31.785C7.23605 32.3369 7.84901 32.8488 8.4831 33.3409C8.66746 33.3409 8.68742 33.1765 8.72969 33.0543C8.81052 32.793 8.87214 32.5261 8.91405 32.2558L9.32504 29.1863L9.09723 0.407647Z\"\n fill=\"#6CAC48\"\n />\n <path\n d=\"M10.1001 34.2391C10.1412 33.7694 10.3666 33.3796 10.6121 32.9909C10.3655 32.8888 10.1823 32.6856 10.039 32.459C9.91549 32.2444 9.81324 32.0183 9.73372 31.7838C9.44719 30.9243 9.38613 30.0224 9.30394 29.1441V28.6122C9.20177 28.6944 9.18064 29.3895 9.18064 29.4929C9.12088 30.4212 8.99769 31.3443 8.81192 32.2559C8.75086 32.6246 8.70976 32.9921 8.48312 33.3197C8.48312 33.3608 8.48312 33.4019 8.50309 33.463C8.87181 34.548 8.97279 35.6529 9.03503 36.779V37.19C9.03503 37.6808 9.01507 37.5775 9.42254 37.7419C9.58693 37.803 9.77012 37.8241 9.93452 37.9462C10.0578 37.9462 10.0778 37.8441 10.0778 37.7619L10.0167 37.0867V35.2032C9.99675 34.8744 10.0578 34.548 10.0989 34.2403L10.1001 34.2391Z\"\n fill=\"#C2BFBF\"\n />\n </Icon>\n);\n","import { Flex } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { DevPreviewBanner } from \"../../components/DevPreviewBanner\";\nimport { Page } from \"../../components/Page\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useConfig } from \"../../contexts/Config\";\nimport { Categories } from \"./Categories\";\nimport { CDKTypeTabs } from \"./CDKTypeTabs\";\nimport { Featured } from \"./Featured\";\nimport { GradientContainer } from \"./GradientContainer\";\nimport { Hero } from \"./Hero\";\nimport { Info } from \"./Info\";\nimport testIds from \"./testIds\";\n\nexport const Home: FunctionComponent = () => {\n const { data: config } = useConfig();\n const { data: catalog } = useCatalog();\n const fullSite = config?.featureFlags?.fullSite ?? false;\n const hasPackages = (catalog?.packages.length ?? 0) > 0;\n\n return (\n <Page\n meta={{\n title: \"Construct Hub\",\n description:\n \"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.\",\n suffix: false,\n }}\n pageName=\"home\"\n >\n <GradientContainer\n as={Flex}\n data-testid={testIds.page}\n direction=\"column\"\n >\n <DevPreviewBanner />\n\n <Hero />\n\n <Info />\n\n {hasPackages && fullSite ? (\n <>\n <Categories />\n <CDKTypeTabs />\n <Featured />\n </>\n ) : null}\n </GradientContainer>\n </Page>\n );\n};\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","util/package.ts","api/package/util.ts","hooks/useQueryParams/useQueryParams.ts","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/Time/Time.tsx","components/Highlight/Highlight.tsx","components/PackageTag/PackageTag.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","views/Home/constants.ts","views/Home/testIds.ts","views/Home/Categories.tsx","views/Home/PackageGrid.tsx","views/Home/CDKTypeTabs.tsx","hooks/useHistoryState/useHistoryState.ts","views/Home/Featured.tsx","views/Home/useSection.ts","views/Home/GradientContainer.tsx","views/Home/Hero.tsx","views/Home/InfoSection.tsx","views/Home/Info.tsx","icons/DatadogIcon.tsx","icons/MongoDBIcon.tsx","views/Home/Home.tsx"],"names":["pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","highlightsFrom","packageTags","length","reduce","accum","tag","highlight","tagObjectsFrom","keywords","tagObjects","Array","tagLabels","Set","filter","Boolean","keyword","label","map","id","mapPackageTags","KEYWORD_IGNORE_LIST","has","mapPackageKeywords","toLowerCase","push","add","getFullPackageName","scope","getAssetsPath","version","prefix","API_PATHS","PACKAGES_PREFIX","body","sanitizeVersion","ver","sanitized","startsWith","substring","findPackage","catalog","pkg","packages","p","sort","p1","p2","date1","Date","metadata","date","getTime","useQueryParams","useLocation","useMemo","URLSearchParams","useConfigValue","key","data","useConfig","defaultLang","Language","TypeScript","LOCAL_KEY","isValidLang","lang","TEMP_SUPPORTED_LANGUAGES","getInitialLang","langFromParams","storedLang","localStorage","getItem","useLanguage","options","updateUrl","updateSaved","pathname","hash","useHistory","replace","params","get","QUERY_PARAMS","LANGUAGE","useState","language","setLanguage","set","toString","update","useCallback","val","setItem","PackageCardType","testIds","createTestIds","Detail","dataTestid","tooltip","value","hasArrow","isDisabled","placement","fontSize","zIndex","Details","usePackageCard","author","useStats","downloads","npm","authorName","publishDate","undefined","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","color","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","fontWeight","Heading","currentLanguage","constructFramework","cdkType","cdkVersion","majorVersion","Link","getPackagePath","align","CDKType","mr","wordBreak","Highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","left","right","LANGUAGES","indexOf","info","isSupportedByLibrary","includes","isSupportedByConstructHub","Icon","icon","borderRadius","h","opacity","w","LanguageSupportTooltip","Languages","Tags","tags","slice","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","wideContainer","minH","templateColumns","base","direction","justify","sx","gap","spacing","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","alt","src","tagProps","textDecoration","isSupported","langName","LANGUAGE_NAME_MAP","message","SECTION_PADDING","X","Y","DEFAULT_CATEGORIES","url","Categories","categories","categoriesContainer","my","px","py","categoriesHeader","mb","categoriesDescription","category","backgroundColor","colorScheme","style","PackageGrid","packageGrid","mt","xl","tabs","community","aws","hashicorp","PackageTab","cdkTypeTab","PackageTabPanel","props","cdkTypeGrid","cdkTypeSeeAllButton","onClick","window","scrollTo","CatalogSearchSort","DownloadsDesc","CDKTypeTabs","useCatalogResults","limit","initialValue","history","location","state","rawState","rawSetState","useHistoryState","tabIndex","setTabIndex","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","ROUTES","CONTRIBUTE","defaultIndex","onChange","index","Featured","homePackages","DEFAULT_FEATURED_PACKAGES","sections","featured","showLastUpdated","section","showPackages","useCatalog","loading","error","results","PublishDateDesc","useSection","featuredContainer","featuredHeader","featuredGrid","animation","keyframes","GradientContainer","bgSize","Hero","textAlign","heroHeader","heroSubtitle","maxW","mx","SearchBar","hasButton","InfoSection","infoSection","infoSectionHeading","infoSectionDescription","publishers","viewBox","clipPath","clipRule","d","fill","fillRule","height","width","imgsrc","IconLink","infoSectionIcon","ResponsiveDivider","display","orientation","Row","pt","Info","infoContainer","templateRows","CDKTYPE_RENDER_MAP","cdktype","Home","config","fullSite","featureFlags","hasPackages","Flex","DevPreviewBanner"],"mappings":"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","file":"static/js/6.d05c0b08.chunk.js","sourcesContent":["export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n","import { API_PATHS } from \"../../constants/url\";\nimport { CatalogPackage, Packages } from \"./packages\";\n\nexport const getFullPackageName = (name: string, scope?: string) => {\n return scope ? `${scope}/${name}` : name;\n};\n\nexport const getAssetsPath = (\n name: string,\n version: string,\n scope?: string\n) => {\n const prefix = `${API_PATHS.PACKAGES_PREFIX}/`;\n const body = getFullPackageName(name, scope);\n const suffix = `/v${version}`;\n return `${prefix}${body}${suffix}`;\n};\n\nexport const sanitizeVersion = (ver: string) => {\n let sanitized = ver;\n if (sanitized.startsWith(\"~\") || sanitized.startsWith(\"^\")) {\n sanitized = sanitized.substring(1);\n }\n return sanitized;\n};\n\nexport const findPackage = (\n catalog: Packages,\n pkg: string\n): CatalogPackage | undefined => {\n const packages = catalog.packages.filter((p) => p.name === pkg);\n\n // return the most recently published version\n if (packages.length > 1) {\n return packages.sort((p1, p2) => {\n const date1 = new Date(p1.metadata.date);\n const date2 = new Date(p2.metadata.date);\n return date2.getTime() - date1.getTime();\n })[0];\n }\n\n return packages[0];\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../contexts/Stats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the NPM registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"blue.500\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n description,\n comment,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge majorVersion={cdkVersion} mr={2} name={cdkType} />\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"blue.800\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"blue.800\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\nconst PackageCardContext = createContext<\n (CatalogPackage & { comment?: string }) | null\n>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={pkg}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import { Stack, Image, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n return (\n <Stack align=\"center\" direction=\"row\" spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<LanguageSupportTooltipProps> =\n ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n };\n","export const SECTION_PADDING = {\n X: [4, 8, 12, 16, 20],\n Y: [4, 6, 8],\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"homeRedesign\", [\n \"page\",\n \"packageGrid\",\n // Hero Section\n \"heroHeader\",\n \"heroSubtitle\",\n // Info Section\n \"infoContainer\",\n \"infoSection\",\n \"infoSectionHeading\",\n \"infoSectionDescription\",\n \"infoSectionIcon\",\n // Featured / Recently Updated Section\n \"featuredContainer\",\n \"featuredHeader\",\n \"featuredGrid\",\n // CDK Type Section\n \"cdkTypeSection\",\n \"cdkTypeSectionHeading\",\n \"cdkTypeSectionDescription\",\n \"cdkTypeTab\",\n \"cdkTypeGrid\",\n \"cdkTypeSeeAllButton\",\n \"categoriesContainer\",\n \"categoriesHeader\",\n \"categoriesDescription\",\n] as const);\n","import { Flex, Heading, Text, Button, Wrap, WrapItem } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Category } from \"../../api/config\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\n/**\n * Categories used if config does not have specific categories\n */\nconst DEFAULT_CATEGORIES: Category[] = [\n { title: \"Monitoring\", url: getSearchPath({ keywords: [\"monitoring\"] }) },\n { title: \"Containers\", url: getSearchPath({ keywords: [\"containers\"] }) },\n { title: \"Serverless\", url: getSearchPath({ keywords: [\"serverless\"] }) },\n { title: \"Databases\", url: getSearchPath({ keywords: [\"databases\"] }) },\n { title: \"Utilities\", url: getSearchPath({ keywords: [\"utilities\"] }) },\n { title: \"Deployment\", url: getSearchPath({ keywords: [\"deployment\"] }) },\n { title: \"Websites\", url: getSearchPath({ keywords: [\"websites\"] }) },\n { title: \"Security\", url: getSearchPath({ keywords: [\"security\"] }) },\n { title: \"Compliance\", url: getSearchPath({ keywords: [\"compliance\"] }) },\n { title: \"Network\", url: getSearchPath({ keywords: [\"network\"] }) },\n {\n title: \"Artificial Intelligence (AI)\",\n url: getSearchPath({ keywords: [\"artificial intelligence (ai)\"] }),\n },\n {\n title: \"Cloud Services Integrations\",\n url: getSearchPath({ keywords: [\"cloud services integrations\"] }),\n },\n];\n\nexport const Categories: FunctionComponent = () => {\n const categories = useConfigValue(\"categories\") ?? DEFAULT_CATEGORIES;\n\n return (\n <Flex\n data-testid={testIds.categoriesContainer}\n direction=\"column\"\n my={4}\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n color=\"white\"\n data-testid={testIds.categoriesHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={1}\n >\n Search by use case\n </Heading>\n <Text\n color=\"white\"\n data-testid={testIds.categoriesDescription}\n lineHeight=\"md\"\n mb={5}\n >\n Find the right construct for your problem set from a community that’s\n already tackled it.\n </Text>\n\n <Wrap>\n {categories.map((category) => (\n <WrapItem key={category.title}>\n <Button\n _hover={{ backgroundColor: \"white\" }}\n as={NavLink}\n color=\"blue.800\"\n colorScheme=\"gray\"\n size=\"md\"\n style={{ boxShadow: \"0px 4px 4px rgba(73, 73, 73, 0.63)\" }}\n to={category.url}\n >\n {category.title}\n </Button>\n </WrapItem>\n ))}\n </Wrap>\n </Flex>\n );\n};\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const PackageGrid: FunctionComponent<{ packages: CatalogPackage[] }> = ({\n packages,\n}) => {\n return (\n <Grid\n data-testid={testIds.packageGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {packages.map((pkg) => (\n <PackageCard key={`${pkg.name}-${pkg.version}`} pkg={pkg} />\n ))}\n </Grid>\n );\n};\n","import {\n Button,\n Flex,\n forwardRef,\n Heading,\n Tab,\n TabList,\n TabPanelProps,\n TabPanel,\n TabPanels,\n Tabs,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { ROUTES } from \"../../constants/url\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\nimport { useHistoryState } from \"../../hooks/useHistoryState\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { PackageGrid } from \"./PackageGrid\";\nimport testIds from \"./testIds\";\n\ninterface PackageTabProps {\n data: ReturnType<typeof useCatalogResults>;\n label: string;\n}\n\ninterface PackageTabPanelProps extends PackageTabProps, TabPanelProps {\n tag: string;\n}\n\nconst tabs = {\n community: {\n label: \"Community\",\n tag: \"community\",\n },\n aws: {\n label: \"AWS\",\n tag: \"aws-official\",\n },\n hashicorp: {\n label: \"HashiCorp\",\n tag: \"hashicorp-official\",\n },\n};\n\nconst PackageTab: FunctionComponent<PackageTabProps> = ({ data, label }) => {\n return (\n <Tab\n data-testid={testIds.cdkTypeTab}\n data-value={label}\n isDisabled={data.page.length < 1}\n >\n {label}\n </Tab>\n );\n};\n\nconst PackageTabPanel = forwardRef<PackageTabPanelProps, \"div\">(\n ({ label, data, tag, ...props }, ref) => {\n return (\n <TabPanel data-testid={testIds.cdkTypeGrid} ref={ref} {...props} p={0}>\n <PackageGrid packages={data.page} />\n\n <Flex justify=\"center\" w=\"full\">\n <NavLink\n data-testid={testIds.cdkTypeSeeAllButton}\n onClick={() => window.scrollTo(0, 0)}\n to={getSearchPath({\n tags: tag ? [tag] : undefined,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n >\n <Button colorScheme=\"blue\" my={8}>\n See all {label} constructs\n </Button>\n </NavLink>\n </Flex>\n </TabPanel>\n );\n }\n);\n\nexport const CDKTypeTabs: FunctionComponent = () => {\n const community = useCatalogResults({\n tags: [tabs.community.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const aws = useCatalogResults({\n tags: [tabs.aws.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n const hashicorp = useCatalogResults({\n tags: [tabs.hashicorp.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const [tabIndex, setTabIndex] = useHistoryState(\"cdkTypeTab\", 0);\n\n return (\n <Flex\n bg=\"white\"\n color=\"blue.800\"\n data-testid={testIds.cdkTypeSection}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.cdkTypeSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n Search by publisher\n </Heading>\n <Text\n data-testid={testIds.cdkTypeSectionDescription}\n lineHeight=\"md\"\n mb={5}\n >\n Find constructs published by the open-source community, AWS, and cloud\n technology providers in one location. You can also include your own\n construct libraries on Construct Hub by publishing them on npm registry.\n More concrete guidance can be found in the{\" \"}\n <NavLink color=\"blue.500\" to={ROUTES.CONTRIBUTE}>\n Contribute\n </NavLink>{\" \"}\n page.\n </Text>\n <Tabs\n defaultIndex={tabIndex}\n onChange={(index) => setTabIndex(index)}\n variant=\"line\"\n >\n <TabList>\n <PackageTab data={community} label={tabs.community.label} />\n\n <PackageTab data={aws} label={tabs.aws.label} />\n\n <PackageTab data={hashicorp} label={tabs.hashicorp.label} />\n </TabList>\n <TabPanels minH=\"28.5rem\">\n <PackageTabPanel\n data={community}\n label={tabs.community.label.toLowerCase()}\n tag={tabs.community.tag}\n />\n\n <PackageTabPanel\n data={aws}\n label={tabs.aws.label}\n tag={tabs.aws.tag}\n />\n\n <PackageTabPanel\n data={hashicorp}\n label={tabs.hashicorp.label}\n tag={tabs.hashicorp.tag}\n />\n </TabPanels>\n </Tabs>\n </Flex>\n );\n};\n","import { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport const useHistoryState = <T>(\n key: string,\n initialValue: T\n): [T, (t: T) => void] => {\n const history = useHistory();\n const [rawState, rawSetState] = useState<T>(() => {\n const value = (history.location.state as any)?.[key];\n return value ?? initialValue;\n });\n const setState = (value: T) => {\n history.replace({\n ...history.location,\n state: {\n ...(history.location.state as any),\n [key]: value,\n },\n });\n rawSetState(value);\n };\n return [rawState, setState];\n};\n","import { Flex, Grid, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { DEFAULT_FEATURED_PACKAGES } from \"../../api/config\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\nimport { useSection } from \"./useSection\";\n\nexport const Featured: FunctionComponent = () => {\n const homePackages = useConfigValue(\"featuredPackages\");\n const [featured = { name: \"Recently Updated\", showLastUpdated: 4 }] = (\n homePackages ?? DEFAULT_FEATURED_PACKAGES\n ).sections;\n\n const section = useSection(featured);\n\n if (!section) {\n return null;\n }\n\n return (\n <Flex\n color=\"white\"\n data-testid={testIds.featuredContainer}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.featuredHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n >\n {featured.name}\n </Heading>\n <Grid\n data-testid={testIds.featuredGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {section?.slice(0, 4).map((pkg) => (\n <PackageCard key={pkg.name} pkg={pkg} />\n ))}\n </Grid>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { FeaturedPackagesDetail } from \"../../api/config\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { findPackage } from \"../../api/package/util\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\n\nexport const useSection = ({\n showLastUpdated,\n showPackages,\n}: {\n showLastUpdated?: number;\n showPackages?: FeaturedPackagesDetail[];\n}) => {\n const { loading, error } = useCatalog();\n const { results } = useCatalogResults({\n limit: 25,\n sort: CatalogSearchSort.PublishDateDesc,\n });\n\n return useMemo(() => {\n if (loading || error || !results) return [];\n\n if (showLastUpdated) {\n return results.slice(0, showLastUpdated);\n } else if (showPackages) {\n return showPackages\n .map((p) => {\n const pkg = findPackage({ packages: results }, p.name);\n if (pkg) {\n return {\n ...pkg,\n comment: p.comment,\n };\n }\n return undefined;\n })\n .filter((pkg) => pkg !== undefined) as CatalogPackage[];\n } else {\n return undefined;\n }\n }, [results, error, loading, showLastUpdated, showPackages]);\n};\n","import { Box, BoxProps, forwardRef, keyframes } from \"@chakra-ui/react\";\n\nconst gradient = \"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)\";\n\nconst animation = keyframes`\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n`;\n\nexport const GradientContainer = forwardRef<BoxProps, \"div\">((props, ref) => (\n <Box\n animation={`${animation} 10s linear infinite`}\n bg={gradient}\n bgSize=\"200% 200%\"\n ref={ref}\n {...props}\n />\n));\n","import { Box, Flex, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n SearchBar,\n SearchOverlay,\n SearchSuggestions,\n} from \"../../components/SearchBar\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport const Hero: FunctionComponent = () => {\n return (\n <Flex\n align=\"center\"\n color=\"white\"\n direction=\"column\"\n h=\"20rem\"\n justify=\"center\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n textAlign=\"center\"\n zIndex=\"1\"\n >\n <Heading as=\"h1\" data-testid={testIds.heroHeader} size=\"xl\">\n Simplify cloud development with constructs\n </Heading>\n <Heading\n as=\"h2\"\n data-testid={testIds.heroSubtitle}\n fontWeight=\"normal\"\n mt={4}\n size=\"md\"\n >\n Find and use open-source Cloud Development Kit (CDK) libraries\n </Heading>\n <Box color=\"initial\" maxW=\"36rem\" mt={8} mx=\"auto\" w=\"full\">\n <SearchBar hasButton>\n <SearchOverlay />\n <SearchSuggestions />\n </SearchBar>\n </Box>\n </Flex>\n );\n};\n","import { Flex, Heading, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactNode } from \"react\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport interface InfoSectionProps {\n title: string;\n description: ReactNode;\n}\n\nexport const InfoSection: FunctionComponent<InfoSectionProps> = ({\n title,\n description,\n children,\n}) => (\n <Flex\n color=\"blue.800\"\n data-testid={testIds.infoSection}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.infoSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n {title}\n </Heading>\n <Flex direction=\"column\" h=\"full\" justify=\"space-between\">\n <Text data-testid={testIds.infoSectionDescription} fontSize=\"lg\" mb={4}>\n {description}\n </Text>\n {children}\n </Flex>\n </Flex>\n);\n","import {\n Divider,\n Flex,\n Grid,\n Icon as ChakraIcon,\n Image,\n Stack,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { CDKType, CDKTYPE_RENDER_MAP } from \"../../constants/constructs\";\nimport {\n Language,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { DatadogIcon } from \"../../icons/DatadogIcon\";\nimport { MongoDBIcon } from \"../../icons/MongoDBIcon\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { InfoSection } from \"./InfoSection\";\nimport testIds from \"./testIds\";\n\nconst publishers = [\n {\n name: \"Datadog\",\n Icon: DatadogIcon,\n url: getSearchPath({ keywords: [\"Datadog\"] }),\n },\n {\n name: \"MongoDB\",\n Icon: MongoDBIcon,\n url: getSearchPath({ keywords: [\"MongoDB\"] }),\n },\n {\n name: \"Aqua Security\",\n imgsrc: \"/assets/aqua-security.png\",\n url: getSearchPath({ keywords: [\"aqua\"] }),\n },\n];\n\nconst IconLink = ({\n url,\n imgsrc,\n label,\n Icon,\n}: {\n url: string;\n label: string;\n imgsrc?: string;\n Icon?: typeof ChakraIcon;\n}) => (\n <NavLink\n color=\"blue.500\"\n data-testid={testIds.infoSectionIcon}\n fontWeight=\"bold\"\n to={url}\n >\n <Stack align=\"center\" spacing={2}>\n {imgsrc && <Image aria-label={label} h={8} src={imgsrc} />}\n {Icon && <Icon aria-label={label} h={8} w={8} />}\n <span>{label}</span>\n </Stack>\n </NavLink>\n);\n\nconst ResponsiveDivider = () => (\n <>\n <Divider display={{ xl: \"none\" }} mx={SECTION_PADDING.X} w=\"auto\" />\n <Divider\n display={{ base: \"none\", xl: \"initial\" }}\n h=\"auto\"\n my={SECTION_PADDING.Y}\n orientation=\"vertical\"\n />\n </>\n);\n\nconst Row: FunctionComponent = ({ children }) => (\n <Flex align=\"center\" pt={4} sx={{ gap: \"2rem\" }}>\n {children}\n </Flex>\n);\n\nexport const Info: FunctionComponent = () => (\n <Flex bg=\"white\" data-testid={testIds.infoContainer} direction=\"column\">\n <Grid\n templateColumns={{ base: \"1fr\", xl: \"1fr auto 1fr auto 1fr\" }}\n templateRows={{ base: \"1fr auto 1fr auto 1fr\", xl: \"auto\" }}\n >\n <InfoSection\n description=\"Find libraries for AWS Cloud Development Kit (AWS CDK), which generates AWS CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration files, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.\"\n title=\"One home for all CDKs\"\n >\n <Row>\n {Object.entries(CDKTYPE_RENDER_MAP).map(\n ([cdktype, { name, imgsrc }]) => (\n <IconLink\n imgsrc={imgsrc}\n key={cdktype}\n label={name}\n url={getSearchPath({\n cdkType: cdktype as CDKType,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n />\n )\n )}\n </Row>\n </InfoSection>\n\n <ResponsiveDivider />\n\n <InfoSection\n description=\"Define, test, and deploy cloud infrastructure using high level programming languages such as such as Java, .NET, TypeScript, and Python. Find documentation, API reference and code samples to quickly build your application. \"\n title=\"Support across languages\"\n >\n <Row>\n {Object.entries(LANGUAGE_RENDER_MAP)\n .filter(([language]) =>\n TEMP_SUPPORTED_LANGUAGES.has(language as Language)\n )\n .map(([language, { icon: Icon, name }]) => (\n <IconLink\n Icon={Icon as typeof ChakraIcon}\n key={language}\n label={name}\n url={getSearchPath({\n languages: [language as Language],\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n />\n ))}\n </Row>\n </InfoSection>\n\n <ResponsiveDivider />\n\n <InfoSection\n description=\"Find construct libraries published by the community and cloud service providers such as Datadog, MongoDB, Aqua Security, AWS services, and more.\"\n title=\"Provision a range of cloud resources\"\n >\n <Row>\n {publishers.map(({ url, name, imgsrc, Icon }) => (\n <IconLink\n Icon={Icon}\n imgsrc={imgsrc}\n key={name}\n label={name}\n url={url}\n />\n ))}\n </Row>\n </InfoSection>\n </Grid>\n </Flex>\n);\n","import { Icon } from \"@chakra-ui/react\";\n\nexport const DatadogIcon: typeof Icon = (props) => (\n <Icon viewBox=\"0 0 32 34\" {...props}>\n <g clipPath=\"url(#clip0_2245_48088)\">\n <path\n clipRule=\"evenodd\"\n d=\"M26.6008 24.1363L23.774 22.2717L21.4158 26.2107L18.6731 25.4088L16.2581 29.0947L16.3819 30.2549L29.5121 27.8356L28.7495 19.6318L26.6008 24.1363ZM14.3559 20.5992L16.4625 20.3095C16.8034 20.4627 17.0406 20.521 17.4493 20.625C18.0858 20.7908 18.8227 20.9499 19.9139 20.4C20.1678 20.2742 20.6968 19.7905 20.9107 19.5147L29.5419 17.9489L30.4224 28.6054L15.6356 31.2704L14.3559 20.5992ZM30.3891 16.7593L29.5371 16.9216L27.9003 0.0106812L0.0106812 3.24462L3.44659 31.1271L6.71108 30.6533C6.45038 30.2811 6.04446 29.8308 5.35124 29.2542C4.38979 28.4554 4.72985 27.0988 5.29688 26.2421C6.04723 24.7946 9.91328 22.955 9.69424 20.6412C9.61568 19.8 9.48195 18.7048 8.70105 17.9545C8.67168 18.266 8.72446 18.5659 8.72446 18.5659C8.72446 18.5659 8.40384 18.1568 8.24393 17.5989C8.08521 17.3851 7.96061 17.3168 7.79197 17.0311C7.67174 17.3617 7.68761 17.745 7.68761 17.745C7.68761 17.745 7.42533 17.1252 7.38287 16.6022C7.22732 16.8363 7.18804 17.2811 7.18804 17.2811C7.18804 17.2811 6.84719 16.3042 6.92496 15.778C6.76941 15.3201 6.30833 14.4114 6.43888 12.3461C7.29002 12.9425 9.16372 12.8008 9.89383 11.7247C10.1363 11.3684 10.3021 10.3954 9.77281 8.47844C9.43275 7.24915 8.59074 5.4187 8.26258 4.7243L8.2233 4.75247C8.3963 5.31196 8.75303 6.48491 8.88992 7.05352C9.30419 8.77842 9.41529 9.37879 9.22086 10.174C9.05539 10.8652 8.65859 11.3176 7.6527 11.8231C6.6468 12.3302 5.31196 11.0961 5.22744 11.0279C4.25012 10.2494 3.49421 8.97921 3.40969 8.36218C3.322 7.68682 3.79895 7.28129 4.03941 6.72894C3.69539 6.82735 3.31168 7.00194 3.31168 7.00194C3.31168 7.00194 3.76959 6.52816 4.33424 6.11826C4.56796 5.96351 4.70525 5.8651 4.95166 5.66035C4.59494 5.6544 4.30527 5.66472 4.30527 5.66472C4.30527 5.66472 4.90008 5.34331 5.51671 5.10919C5.06554 5.08935 4.63382 5.10602 4.63382 5.10602C4.63382 5.10602 5.96113 4.5124 7.00948 4.07671C7.73047 3.7811 8.43479 3.86839 8.8304 4.44058C9.34982 5.19014 9.89542 5.59726 11.0517 5.84963C11.7616 5.53496 11.9774 5.37307 12.8695 5.13022C13.6547 4.26678 14.2714 4.15488 14.2714 4.15488C14.2714 4.15488 13.9654 4.43542 13.8837 4.87627C14.3289 4.5255 14.817 4.23266 14.817 4.23266C14.817 4.23266 14.6281 4.46598 14.4519 4.83659L14.4928 4.8973C15.0122 4.58581 15.6229 4.34019 15.6229 4.34019C15.6229 4.34019 15.4483 4.56081 15.2435 4.84651C15.6352 4.84334 16.4296 4.86318 16.7379 4.89809C18.558 4.93817 18.9358 2.95416 19.6341 2.70537C20.5087 2.39308 20.8995 2.2042 22.3899 3.66801C23.6688 4.92468 24.668 7.17415 24.172 7.67809C23.7561 8.09632 22.9355 7.51501 22.0261 6.38134C21.5455 5.78098 21.1821 5.0715 21.0118 4.16957C20.8682 3.4085 20.3091 2.96686 20.3091 2.96686C20.3091 2.96686 20.6337 3.68824 20.6337 4.32551C20.6337 4.6735 20.6773 5.97462 21.2352 6.70473C21.1801 6.81147 21.1543 7.23288 21.0932 7.31343C20.444 6.52895 19.05 5.96748 18.8227 5.80201C19.5921 6.43253 21.3606 7.88086 22.04 9.26887C22.6824 10.5815 22.3038 11.7846 22.6288 12.0961C22.7213 12.1854 24.0105 13.7916 24.2585 14.5987C24.691 16.0054 24.2843 17.4835 23.718 18.4005L22.1368 18.6469C21.9054 18.5826 21.7495 18.5505 21.542 18.4302C21.6562 18.2279 21.8836 17.7231 21.886 17.6192L21.7967 17.4624C21.3047 18.1596 20.4801 18.8366 19.7952 19.2254C18.8989 19.7333 17.8656 19.6552 17.193 19.4468C15.284 18.858 13.4789 17.568 13.0437 17.2291C13.0437 17.2291 13.0302 17.4997 13.1123 17.5604C13.5936 18.1033 14.6963 19.0854 15.7621 19.7698L13.4901 20.0198L14.5642 28.3836C14.088 28.4519 14.0138 28.4852 13.4924 28.5594C13.0329 26.9361 12.154 25.8762 11.1934 25.2588C10.3462 24.7144 9.17761 24.5918 8.05902 24.8132L7.9872 24.8965C8.76493 24.8156 9.68313 24.9283 10.6263 25.5255C11.5521 26.1107 12.2981 27.6226 12.5726 28.5328C12.9242 29.6962 13.1675 30.9406 12.2211 32.2596C11.5477 33.1972 9.58195 33.7155 7.99395 32.5945C8.41813 33.2766 8.99151 33.8345 9.76329 33.9397C10.9093 34.0952 11.9969 33.8964 12.7457 33.1278C13.3849 32.4707 13.7238 31.0966 13.6345 29.6494L14.6459 29.5026L15.011 32.1001L31.7553 30.0839L30.3891 16.7593ZM20.202 9.70535C20.1551 9.81209 20.0817 9.88193 20.192 10.2291L20.1988 10.249L20.2162 10.2938L20.2623 10.3978C20.4611 10.8041 20.6793 11.1874 21.044 11.383C21.1384 11.3672 21.236 11.3564 21.3372 11.3513C21.6797 11.3362 21.8959 11.3906 22.0332 11.4644C22.0455 11.3961 22.0483 11.2961 22.0407 11.1489C22.0142 10.6343 22.1427 9.75892 21.1535 9.29823C20.7801 9.12483 20.2563 9.1784 20.0817 9.39466C20.1135 9.39863 20.142 9.40537 20.1643 9.41291C20.4281 9.50537 20.2492 9.59623 20.202 9.70535ZM22.9744 14.5075C22.8447 14.436 22.2384 14.4642 21.8122 14.515C21.0003 14.6106 20.1238 14.8924 19.9317 15.0423C19.5826 15.3122 19.7413 15.7828 19.9992 15.976C20.7226 16.5165 21.3567 16.8787 22.0261 16.7907C22.4372 16.7367 22.7994 16.0859 23.0562 15.4955C23.2319 15.0888 23.2319 14.6499 22.9744 14.5075ZM15.7867 10.3426C16.0157 10.1252 14.6463 9.83947 13.5837 10.564C12.8 11.0985 12.775 12.2445 13.5254 12.8941C13.6004 12.9583 13.6623 13.004 13.7202 13.0413C13.9392 12.9381 14.1888 12.8337 14.4761 12.7405C14.9614 12.583 15.3649 12.5016 15.6967 12.4584C15.8554 12.281 16.0399 11.9687 15.9939 11.4033C15.9312 10.6363 15.3499 10.7581 15.7867 10.3426Z\"\n fill=\"#632CA6\"\n fillRule=\"evenodd\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_2245_48088\">\n <rect fill=\"white\" height=\"34\" width=\"31.766\" />\n </clipPath>\n </defs>\n </Icon>\n);\n","import { Icon } from \"@chakra-ui/react\";\n\nexport const MongoDBIcon: typeof Icon = (props) => (\n <Icon viewBox=\"0 0 18 37\" {...props}>\n <path\n d=\"M9.09725 0.469971L10.1001 2.35348C10.3255 2.70106 10.5698 3.00871 10.8575 3.29523C11.7009 4.12816 12.4871 5.01714 13.2107 5.95609C14.9099 8.18718 16.056 10.6649 16.8744 13.3445C17.3653 14.9814 17.6318 16.6606 17.6518 18.3586C17.734 23.4349 15.9937 27.7937 12.485 31.4163C11.9143 31.9908 11.2977 32.5178 10.6414 32.9921C10.2938 32.9921 10.1294 32.7256 9.98617 32.4802C9.72529 32.0251 9.55165 31.5253 9.4742 31.0065C9.3509 30.3923 9.26987 29.7782 9.3098 29.1441V28.8576C9.28161 28.7965 8.97513 0.614404 9.09725 0.469971Z\"\n fill=\"#599636\"\n />\n <path\n d=\"M9.09723 0.407647C9.05614 0.325449 9.01504 0.387684 8.97394 0.427609C8.9939 0.838599 8.85064 1.20497 8.62636 1.5549C8.37977 1.90248 8.05333 2.16903 7.72571 2.45555C5.90562 4.0314 4.47304 5.93487 3.3258 8.0638C1.79927 10.929 1.01253 13.9997 0.789419 17.2324C0.687259 18.3984 1.15813 22.513 1.52567 23.7002C2.52848 26.8519 4.32978 29.4928 6.66301 31.785C7.23605 32.3369 7.84901 32.8488 8.4831 33.3409C8.66746 33.3409 8.68742 33.1765 8.72969 33.0543C8.81052 32.793 8.87214 32.5261 8.91405 32.2558L9.32504 29.1863L9.09723 0.407647Z\"\n fill=\"#6CAC48\"\n />\n <path\n d=\"M10.1001 34.2391C10.1412 33.7694 10.3666 33.3796 10.6121 32.9909C10.3655 32.8888 10.1823 32.6856 10.039 32.459C9.91549 32.2444 9.81324 32.0183 9.73372 31.7838C9.44719 30.9243 9.38613 30.0224 9.30394 29.1441V28.6122C9.20177 28.6944 9.18064 29.3895 9.18064 29.4929C9.12088 30.4212 8.99769 31.3443 8.81192 32.2559C8.75086 32.6246 8.70976 32.9921 8.48312 33.3197C8.48312 33.3608 8.48312 33.4019 8.50309 33.463C8.87181 34.548 8.97279 35.6529 9.03503 36.779V37.19C9.03503 37.6808 9.01507 37.5775 9.42254 37.7419C9.58693 37.803 9.77012 37.8241 9.93452 37.9462C10.0578 37.9462 10.0778 37.8441 10.0778 37.7619L10.0167 37.0867V35.2032C9.99675 34.8744 10.0578 34.548 10.0989 34.2403L10.1001 34.2391Z\"\n fill=\"#C2BFBF\"\n />\n </Icon>\n);\n","import { Flex } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { DevPreviewBanner } from \"../../components/DevPreviewBanner\";\nimport { Page } from \"../../components/Page\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useConfig } from \"../../contexts/Config\";\nimport { Categories } from \"./Categories\";\nimport { CDKTypeTabs } from \"./CDKTypeTabs\";\nimport { Featured } from \"./Featured\";\nimport { GradientContainer } from \"./GradientContainer\";\nimport { Hero } from \"./Hero\";\nimport { Info } from \"./Info\";\nimport testIds from \"./testIds\";\n\nexport const Home: FunctionComponent = () => {\n const { data: config } = useConfig();\n const { data: catalog } = useCatalog();\n const fullSite = config?.featureFlags?.fullSite ?? false;\n const hasPackages = (catalog?.packages.length ?? 0) > 0;\n\n return (\n <Page\n meta={{\n title: \"Construct Hub\",\n description:\n \"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.\",\n suffix: false,\n }}\n pageName=\"home\"\n >\n <GradientContainer\n as={Flex}\n data-testid={testIds.page}\n direction=\"column\"\n >\n <DevPreviewBanner />\n\n <Hero />\n\n <Info />\n\n {hasPackages && fullSite ? (\n <>\n <Categories />\n <CDKTypeTabs />\n <Featured />\n </>\n ) : null}\n </GradientContainer>\n </Page>\n );\n};\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(e){function t(t){for(var n,a,c=t[0],i=t[1],f=t[2],p=0,s=[];p<c.length;p++)a=c[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);s.length;)s.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,c=1;c<r.length;c++){var i=r[c];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={3:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{0:"740a33f8",1:"64a9b795",4:"e051c405",6:"4a34e978",7:"ebf6a179",8:"8e96ad43",9:"174f64fc",10:"30ecd71a",11:"9e53aff3",12:"7d44c985",13:"9c0ba67b",14:"924c14cb",15:"c3f18810",16:"84214b0e"}[e]+".chunk.js"}(e);var i=new Error;u=function(t){c.onerror=c.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",i.name="ChunkLoadError",i.type=n,i.request=u,r[1](i)}o[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:c})}),12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[],i=c.push.bind(c);c.push=t,c=c.slice();for(var f=0;f<c.length;f++)t(c[f]);var l=i;r()}([]);
2
- //# sourceMappingURL=runtime-main.6f10a9e2.js.map
1
+ !function(e){function t(t){for(var n,a,c=t[0],i=t[1],f=t[2],p=0,s=[];p<c.length;p++)a=c[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);s.length;)s.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,c=1;c<r.length;c++){var i=r[c];0!==o[i]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={3:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,a.nc&&c.setAttribute("nonce",a.nc),c.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{0:"740a33f8",1:"64a9b795",4:"e051c405",6:"d05c0b08",7:"ebf6a179",8:"8e96ad43",9:"174f64fc",10:"30ecd71a",11:"9e53aff3",12:"7d44c985",13:"9c0ba67b",14:"924c14cb",15:"c3f18810",16:"84214b0e"}[e]+".chunk.js"}(e);var i=new Error;u=function(t){c.onerror=c.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",i.name="ChunkLoadError",i.type=n,i.request=u,r[1](i)}o[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:c})}),12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[],i=c.push.bind(c);c.push=t,c=c.slice();for(var f=0;f<c.length;f++)t(c[f]);var l=i;r()}([]);
2
+ //# sourceMappingURL=runtime-main.3666b7b5.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.6f10a9e2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"740a33f8\",\"1\":\"64a9b795\",\"4\":\"e051c405\",\"6\":\"4a34e978\",\"7\":\"ebf6a179\",\"8\":\"8e96ad43\",\"9\":\"174f64fc\",\"10\":\"30ecd71a\",\"11\":\"9e53aff3\",\"12\":\"7d44c985\",\"13\":\"9c0ba67b\",\"14\":\"924c14cb\",\"15\":\"c3f18810\",\"16\":\"84214b0e\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = this[\"webpackJsonpconstruct-hub-webapp\"] = this[\"webpackJsonpconstruct-hub-webapp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["../webpack/bootstrap"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","this","oldJsonpFunction","slice"],"mappings":"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","file":"static/js/runtime-main.3666b7b5.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t3: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"0\":\"740a33f8\",\"1\":\"64a9b795\",\"4\":\"e051c405\",\"6\":\"d05c0b08\",\"7\":\"ebf6a179\",\"8\":\"8e96ad43\",\"9\":\"174f64fc\",\"10\":\"30ecd71a\",\"11\":\"9e53aff3\",\"12\":\"7d44c985\",\"13\":\"9c0ba67b\",\"14\":\"924c14cb\",\"15\":\"c3f18810\",\"16\":\"84214b0e\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = this[\"webpackJsonpconstruct-hub-webapp\"] = this[\"webpackJsonpconstruct-hub-webapp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""}