construct-hub 0.4.503 → 0.4.505

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.jsii +2 -2
  2. package/lib/construct-hub.js +1 -1
  3. package/lib/package-sources/code-artifact.js +1 -1
  4. package/lib/package-sources/npmjs.js +1 -1
  5. package/lib/package-tag/index.js +3 -3
  6. package/lib/package-tag-group/index.js +2 -2
  7. package/lib/preload-file/index.js +1 -1
  8. package/lib/s3/storage.js +1 -1
  9. package/lib/spdx-license.js +1 -1
  10. package/package.json +1 -1
  11. package/website/asset-manifest.json +5 -5
  12. package/website/index.html +1 -1
  13. package/website/static/css/main.efe592a7.css.map +1 -1
  14. package/website/static/js/294.61480951.chunk.js.map +1 -1
  15. package/website/static/js/323.87521e0e.chunk.js.map +1 -1
  16. package/website/static/js/332.b740638d.chunk.js.map +1 -1
  17. package/website/static/js/375.6faf5557.chunk.js.map +1 -1
  18. package/website/static/js/421.89f85fcb.chunk.js.map +1 -1
  19. package/website/static/js/451.916d6ace.chunk.js.map +1 -1
  20. package/website/static/js/453.13ac0f49.chunk.js.map +1 -1
  21. package/website/static/js/{487.4744759e.chunk.js → 487.e1807da5.chunk.js} +3 -3
  22. package/website/static/js/487.e1807da5.chunk.js.map +1 -0
  23. package/website/static/js/496.2a6b6f6f.chunk.js.map +1 -1
  24. package/website/static/js/516.87cad50a.chunk.js.map +1 -1
  25. package/website/static/js/591.6b31b86a.chunk.js.map +1 -1
  26. package/website/static/js/619.1a7deb33.chunk.js.map +1 -1
  27. package/website/static/js/773.279948f6.chunk.js.map +1 -1
  28. package/website/static/js/8.75aab01d.chunk.js.map +1 -1
  29. package/website/static/js/857.8e026699.chunk.js.map +1 -1
  30. package/website/static/js/959.abcce3a0.chunk.js.map +1 -1
  31. package/website/static/js/{main.d90f81f0.js → main.6eca6827.js} +3 -3
  32. package/website/static/js/main.6eca6827.js.map +1 -0
  33. package/website/static/js/487.4744759e.chunk.js.map +0 -1
  34. package/website/static/js/main.d90f81f0.js.map +0 -1
  35. /package/website/static/js/{487.4744759e.chunk.js.LICENSE.txt → 487.e1807da5.chunk.js.LICENSE.txt} +0 -0
  36. /package/website/static/js/{main.d90f81f0.js.LICENSE.txt → main.6eca6827.js.LICENSE.txt} +0 -0
package/.jsii CHANGED
@@ -21869,6 +21869,6 @@
21869
21869
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
21870
21870
  }
21871
21871
  },
21872
- "version": "0.4.503",
21873
- "fingerprint": "Qr5FBTz4//t+MT9FascWG6PCHKX2xKnaReO7H6CDX8M="
21872
+ "version": "0.4.505",
21873
+ "fingerprint": "QbHTpqDvEcn6sX5n85dGoeBNruKZENFEc2lXqSMwF8I="
21874
21874
  }
@@ -413,7 +413,7 @@ class ConstructHub extends constructs_1.Construct {
413
413
  }
414
414
  exports.ConstructHub = ConstructHub;
415
415
  _a = JSII_RTTI_SYMBOL_1;
416
- ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.503" };
416
+ ConstructHub[_a] = { fqn: "construct-hub.ConstructHub", version: "0.4.505" };
417
417
  /**
418
418
  * How possibly risky operations (such as doc-generation, which requires
419
419
  * installing the indexed packages in order to trans-literate sample code) are
@@ -272,5 +272,5 @@ class CodeArtifact {
272
272
  }
273
273
  exports.CodeArtifact = CodeArtifact;
274
274
  _a = JSII_RTTI_SYMBOL_1;
275
- CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.503" };
275
+ CodeArtifact[_a] = { fqn: "construct-hub.sources.CodeArtifact", version: "0.4.505" };
276
276
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYWNrYWdlLXNvdXJjZXMvY29kZS1hcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE4RDtBQUM5RCwrREFPb0M7QUFFcEMsdURBQThDO0FBQzlDLHVFQUFnRTtBQUNoRSxpREFBOEQ7QUFDOUQsdURBQWlEO0FBQ2pELCtDQUFnRTtBQUNoRSxpREFBNkQ7QUFFN0QsNENBS3NCO0FBQ3RCLGtEQUE2QztBQU03QyxvRkFBK0U7QUFDL0Usb0ZBTWdEO0FBQ2hELDJDQUFpRDtBQWNqRDs7O0dBR0c7QUFDSCxNQUFhLFlBQVk7SUFDdkIsWUFBb0MsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFBRyxDQUFDO0lBRXpELElBQUksQ0FDVCxLQUFnQixFQUNoQixFQUNFLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsS0FBSyxHQUNvQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUxSSxNQUFNLGNBQWMsR0FBRywwQkFBZ0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2pCLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsUUFBUSxnQkFBZ0IsRUFBRTtnQkFDM0QsaUJBQWlCLEVBQUUsMEJBQWlCLENB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LEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrQ0FBMEI7WUFDcEMsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxJQUFvQjtRQUNuRCxPQUFPLElBQUksdUJBQU0sQ0FBQztZQUNoQixNQUFNLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSwwQkFBUyxDQUFDLEdBQUc7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsYUFBYSxFQUFFO2dCQUNiLENBQUMsZ0RBQXNCLENBQUMsRUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLGlCQUFHLENBQUMsVUFBVTtnQkFDekQsQ0FBQywrQ0FBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7Z0JBQzdELENBQUMsbURBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2FBQzVEO1lBQ0QsVUFBVSwrREFBbUM7WUFDN0MsU0FBUyxFQUFFLDJDQUFpQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxUSCxvQ0FtVEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcm5Gb3JtYXQsIEF3cywgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQ29tcGFyaXNvbk9wZXJhdG9yLFxuICBHcmFwaFdpZGdldCxcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBTdGF0aXN0aWMsXG4gIFRyZWF0TWlzc2luZ0RhdGEsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENmblJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWFydGlmYWN0JztcbmltcG9ydCB7IFJ1bGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBUcmFjaW5nIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBCbG9ja1B1YmxpY0FjY2VzcywgSUJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBRdWV1ZSwgUXVldWVFbmNyeXB0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwsXG4gIGxhbWJkYUZ1bmN0aW9uVXJsLFxuICBsYW1iZGFTZWFyY2hMb2dHcm91cFVybCxcbiAgc3FzUXVldWVVcmwsXG59IGZyb20gJy4uL2RlZXAtbGluayc7XG5pbXBvcnQgeyBmaWxsTWV0cmljIH0gZnJvbSAnLi4vbWV0cmljLXV0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgSVBhY2thZ2VTb3VyY2UsXG4gIFBhY2thZ2VTb3VyY2VCaW5kT3B0aW9ucyxcbiAgUGFja2FnZVNvdXJjZUJpbmRSZXN1bHQsXG59IGZyb20gJy4uL3BhY2thZ2Utc291cmNlJztcbmltcG9ydCB7IENvZGVBcnRpZmFjdEZvcndhcmRlciB9IGZyb20gJy4vY29kZWFydGlmYWN0L2NvZGUtYXJ0aWZhY3QtZm9yd2FyZGVyJztcbmltcG9ydCB7XG4gIE1FVFJJQ1NfTkFNRVNQQUNFLFxuICBNZXRyaWNOYW1lLFxuICBET01BSU5fTkFNRV9ESU1FTlNJT04sXG4gIERPTUFJTl9PV05FUl9ESU1FTlNJT04sXG4gIFJFUE9TSVRPUllfTkFNRV9ESU1FTlNJT04sXG59IGZyb20gJy4vY29kZWFydGlmYWN0L2NvbnN0YW50cy5sYW1iZGEtc2hhcmVkJztcbmltcG9ydCB7IFMzU3RvcmFnZUZhY3RvcnkgfSBmcm9tICcuLi9zMy9zdG9yYWdlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQXJ0aWZhY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ29kZUFydGlmYWN0IHJlcG9zaXRvcnkgd2hlcmUgcGFja2FnZXMgYXJlIG9idGFpbmVkIGZyb20uXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5OiBDZm5SZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgUzMgYnVja2V0IHdoZXJlIHBhY2thZ2VzIHdpbGwgYmUgc3RhZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0PzogSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBBIHBhY2thZ2Ugc291cmNlIHRoYXQgb2J0YWlucyBwYWNrYWdlIGRhdGEgZnJvbSBhbiBucG0gQ29kZUFydGlmYWN0XG4gKiByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgQ29kZUFydGlmYWN0IGltcGxlbWVudHMgSVBhY2thZ2VTb3VyY2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQ29kZUFydGlmYWN0UHJvcHMpIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB7XG4gICAgICBkZW55TGlzdCxcbiAgICAgIGluZ2VzdGlvbixcbiAgICAgIGxpY2Vuc2VMaXN0LFxuICAgICAgbW9uaXRvcmluZyxcbiAgICAgIG92ZXJ2aWV3RGFzaGJvYXJkLFxuICAgICAgcXVldWUsXG4gICAgfTogUGFja2FnZVNvdXJjZUJpbmRPcHRpb25zXG4gICk6IFBhY2thZ2VTb3VyY2VCaW5kUmVzdWx0IHtcbiAgICBjb25zdCBpZFByZWZpeCA9IHRoaXMucHJvcHMucmVwb3NpdG9yeS5ub2RlLnBhdGg7XG4gICAgY29uc3QgcmVwb3NpdG9yeUlkID0gYCR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lcn06JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWV9LyR7dGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lfWA7XG5cbiAgICBjb25zdCBzdG9yYWdlRmFjdG9yeSA9IFMzU3RvcmFnZUZhY3RvcnkuZ2V0T3JDcmVhdGUoc2NvcGUpO1xuICAgIGNvbnN0IGJ1Y2tldCA9XG4gICAgICB0aGlzLnByb3BzLmJ1Y2tldCB8fFxuICAgICAgc3RvcmFnZUZhY3RvcnkubmV3QnVja2V0KHNjb3BlLCBgJHtpZFByZWZpeH0vU3RhZ2luZ0J1Y2tldGAsIHtcbiAgICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgICAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgICAgICAgbGlmZWN5Y2xlUnVsZXM6IFt7IGV4cGlyYXRpb246IER1cmF0aW9uLmRheXMoMzApIH1dLFxuICAgICAgfSk7XG4gICAgYnVja2V0LmdyYW50UmVhZChpbmdlc3Rpb24pO1xuXG4gICAgY29uc3QgZGxxID0gbmV3IFF1ZXVlKHNjb3BlLCBgJHtpZFByZWZpeH0vRExRYCwge1xuICAgICAgZW5jcnlwdGlvbjogUXVldWVFbmNyeXB0aW9uLktNU19NQU5BR0VELFxuICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcndhcmRlciA9IG5ldyBDb2RlQXJ0aWZhY3RGb3J3YXJkZXIoXG4gICAgICBzY29wZSxcbiAgICAgIGAke2lkUHJlZml4fS9Gb3J3YXJkZXJgLFxuICAgICAge1xuICAgICAgICBkZWFkTGV0dGVyUXVldWU6IGRscSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBbJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH1dIEhhbmRsZSBDb2RlQXJ0aWZhY3QgRXZlbnRCcmlkZ2UgZXZlbnRzYCxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBBV1NfRU1GX0VOVklST05NRU5UOiAnTG9jYWwnLFxuICAgICAgICAgIEJVQ0tFVF9OQU1FOiBidWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgICBRVUVVRV9VUkw6IHF1ZXVlLnF1ZXVlVXJsLFxuICAgICAgICB9LFxuICAgICAgICBtZW1vcnlTaXplOiAxMDI0LFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcbiAgICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgICB9XG4gICAgKTtcbiAgICBidWNrZXQuZ3JhbnRSZWFkV3JpdGUoZm9yd2FyZGVyKTtcbiAgICBkZW55TGlzdD8uZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgbGljZW5zZUxpc3QuZ3JhbnRSZWFkKGZvcndhcmRlcik7XG4gICAgcXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZm9yd2FyZGVyKTtcbiAgICBmb3J3YXJkZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbJ2NvZGVhcnRpZmFjdDpHZXRQYWNrYWdlVmVyc2lvbkFzc2V0J10sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIFN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICAgICAgc2VydmljZTogJ2NvZGVhcnRpZmFjdCcsXG4gICAgICAgICAgICByZXNvdXJjZTogJ3BhY2thZ2UnLFxuICAgICAgICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICAgICAgIHJlc291cmNlTmFtZTogW1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgICAgICAgICAgJ25wbScsIC8vIHBhY2thZ2UgZm9ybWF0XG4gICAgICAgICAgICAgICcqJywgLy8gbmFtZXNwYWNlL3BhY2thZ2UtbmFtZVxuICAgICAgICAgICAgXS5qb2luKCcvJyksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUoc2NvcGUsIGAke2lkUHJlZml4fS9FdmVudEJyaWRnZWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRXZlbnRCcmlkZ2VgLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogWydhd3MuY29kZWFydGlmYWN0J10sXG4gICAgICAgIGRldGFpbFR5cGU6IFsnQ29kZUFydGlmYWN0IFBhY2thZ2UgVmVyc2lvbiBTdGF0ZSBDaGFuZ2UnXSxcbiAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgZG9tYWluT3duZXI6IFt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyXSxcbiAgICAgICAgICBkb21haW5OYW1lOiBbdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogW3RoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZV0sXG4gICAgICAgICAgcGFja2FnZUZvcm1hdDogWyducG0nXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbbmV3IExhbWJkYUZ1bmN0aW9uKGZvcndhcmRlcildLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmFpbHVyZUFsYXJtID0gZm9yd2FyZGVyXG4gICAgICAubWV0cmljRXJyb3JzKClcbiAgICAgIC5jcmVhdGVBbGFybShzY29wZSwgYCR7aWRQcmVmaXh9L0ZvcndhcmRlci9GYWlsdXJlc2AsIHtcbiAgICAgICAgYWxhcm1OYW1lOiBgJHtzY29wZS5ub2RlLnBhdGh9L0NvZGVBcnRpZmFjdC8ke3JlcG9zaXRvcnlJZH0vRm9yd2FyZGVyYCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjpcbiAgICAgICAgICBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HLFxuICAgICAgfSk7XG4gICAgbW9uaXRvcmluZy5hZGRIaWdoU2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3Q6JHt0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWV9IEZhaWx1cmVzYCxcbiAgICAgIGZhaWx1cmVBbGFybVxuICAgICk7XG5cbiAgICBjb25zdCBkbHFOb3RFbXB0eUFsYXJtID0gZGxxXG4gICAgICAubWV0cmljQXBwcm94aW1hdGVOdW1iZXJPZk1lc3NhZ2VzVmlzaWJsZSh7XG4gICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgIH0pXG4gICAgICAuY3JlYXRlQWxhcm0oc2NvcGUsIGAke2lkUHJlZml4fS9Gb3J3YXJkZXIvRExRTm90RW1wdHlgLCB7XG4gICAgICAgIGFsYXJtTmFtZTogYCR7c2NvcGUubm9kZS5wYXRofS9Db2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9L0RMUU5vdEVtcHR5YCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogW1xuICAgICAgICAgIGBUaGUgQ29kZUFydGlmYWN0IGZvd2FyZGVyIGZvciAke3JlcG9zaXRvcnlJZH0gaXMgZmFpbGluZ2AsXG4gICAgICAgICAgJycsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGxhbWJkYSBmdW5jdGlvbjogJHtsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpfWAsXG4gICAgICAgICAgYExpbmsgdG8gdGhlIGRlYWQgbGV0dGVyIHF1ZXVlOiAke3Nxc1F1ZXVlVXJsKGRscSl9YCxcbiAgICAgICAgXS5qb2luKCcvbicpLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6XG4gICAgICAgICAgQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgICB0aHJlc2hvbGQ6IDEsXG4gICAgICAgIHRyZWF0TWlzc2luZ0RhdGE6IFRyZWF0TWlzc2luZ0RhdGEuTk9UX0JSRUFDSElORyxcbiAgICAgIH0pO1xuICAgIG1vbml0b3JpbmcuYWRkTG93U2V2ZXJpdHlBbGFybShcbiAgICAgIGBDb2RlQXJ0aWZhY3QvJHtyZXBvc2l0b3J5SWR9IERMUSBOb3QgRW1wdHlgLFxuICAgICAgZGxxTm90RW1wdHlBbGFybVxuICAgICk7XG5cbiAgICBydWxlLm5vZGUuYWRkRGVwZW5kZW5jeShmYWlsdXJlQWxhcm0sIGRscU5vdEVtcHR5QWxhcm0pO1xuXG4gICAgb3ZlcnZpZXdEYXNoYm9hcmQuYWRkRExRTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBgQ29kZUFydGlmYWN0LyR7cmVwb3NpdG9yeUlkfSBETFFgLFxuICAgICAgZGxxXG4gICAgKTtcbiAgICBvdmVydmlld0Rhc2hib2FyZC5hZGRDb25jdXJyZW50RXhlY3V0aW9uTWV0cmljVG9EYXNoYm9hcmQoXG4gICAgICBmb3J3YXJkZXIsXG4gICAgICBgJHtpZFByZWZpeH0vRm9yd2FyZGVyTGFtYmRhYFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYENvZGVBcnRpZmFjdDogJHtyZXBvc2l0b3J5SWR9YCxcbiAgICAgIGxpbmtzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnQ29kZUFydGlmYWN0JyxcbiAgICAgICAgICB1cmw6IGNvZGVBcnRpZmFjdFJlcG9zaXRvcnlVcmwodGhpcy5wcm9wcy5yZXBvc2l0b3J5KSxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ0ZvcndhcmRlciBGdW5jdGlvbicsXG4gICAgICAgICAgdXJsOiBsYW1iZGFGdW5jdGlvblVybChmb3J3YXJkZXIpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NlYXJjaCBMb2cgZ3JvdXAnLFxuICAgICAgICAgIHVybDogbGFtYmRhU2VhcmNoTG9nR3JvdXBVcmwoZm9yd2FyZGVyKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdETFEnLFxuICAgICAgICAgIHVybDogc3FzUXVldWVVcmwoZGxxKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBkYXNoYm9hcmRXaWRnZXRzOiBbXG4gICAgICAgIFtcbiAgICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgd2lkdGg6IDEyLFxuICAgICAgICAgICAgdGl0bGU6ICdGdW5jdGlvbiBIZWFsdGgnLFxuICAgICAgICAgICAgbGVmdDogW1xuICAgICAgICAgICAgICBmaWxsTWV0cmljKGZvcndhcmRlci5tZXRyaWNJbnZvY2F0aW9ucyh7IGxhYmVsOiAnSW52b2NhdGlvbnMnIH0pKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhmb3J3YXJkZXIubWV0cmljRXJyb3JzKHsgbGFiZWw6ICdFcnJvcnMnIH0pKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBsZWZ0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICByaWdodDogW2ZvcndhcmRlci5tZXRyaWNEdXJhdGlvbih7IGxhYmVsOiAnRHVyYXRpb24nIH0pXSxcbiAgICAgICAgICAgIHJpZ2h0WUF4aXM6IHsgbWluOiAwIH0sXG4gICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ0RlYWQgTGV0dGVyIFF1ZXVlJyxcbiAgICAgICAgICAgIGxlZnQ6IFtcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc1Zpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnVmlzaWJsZSBNZXNzYWdlcycsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgZGxxLm1ldHJpY0FwcHJveGltYXRlTnVtYmVyT2ZNZXNzYWdlc05vdFZpc2libGUoe1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnSGlkZGVuIE1lc3NhZ2VzJyxcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxlZnRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICAgIHJpZ2h0OiBbXG4gICAgICAgICAgICAgIGRscS5tZXRyaWNBcHByb3hpbWF0ZUFnZU9mT2xkZXN0TWVzc2FnZSh7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICdPbGRlc3QgTWVzc2FnZSBBZ2UnLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmlnaHRZQXhpczogeyBtaW46IDAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgICAgW1xuICAgICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICB3aWR0aDogMTIsXG4gICAgICAgICAgICB0aXRsZTogJ1F1YWxpdHkgTWV0cmljcycsXG4gICAgICAgICAgICBsZWZ0OiBbXG4gICAgICAgICAgICAgIGZpbGxNZXRyaWMoXG4gICAgICAgICAgICAgICAgdGhpcy5tZXRyaWNOb3RKc2lpRW5hYmxlZENvdW50KHsgbGFiZWw6ICdOb3QgYSBqc2lpIHBhY2thZ2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0luZWxpZ2libGVMaWNlbnNlKHsgbGFiZWw6ICdJbmVsaWdpYmxlIExpY2Vuc2UnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbnlMaXN0ZWRDb3VudCh7IGxhYmVsOiAnRGVueSBMaXN0ZWQnIH0pLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmlsbE1ldHJpYyhcbiAgICAgICAgICAgICAgICB0aGlzLm1ldHJpY0RlbGV0ZWRDb3VudCh7IGxhYmVsOiAnRGVsZXRpb24gRXZlbnRzJyB9KSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbGVmdFlBeGlzOiB7IG1pbjogMCB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb3VudCBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBpZ25vcmVkIGR1ZSB0byBiZWluZyBpbiB0aGUgZGVueSBsaXN0LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0RlbnlMaXN0ZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyLFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLkRFTllfTElTVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCB3ZXJlIGlnbm9yZWQgZHVlIHRvIHVzaW5nIGFuIGluZWxvaWdpYmxlIGxpY2Vuc2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSW5lbGlnaWJsZUxpY2Vuc2Uob3B0cz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgIHN0YXRpc3RpYzogU3RhdGlzdGljLlNVTSxcbiAgICAgIC4uLm9wdHMsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIFtET01BSU5fT1dORVJfRElNRU5TSU9OXTpcbiAgICAgICAgICB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk93bmVyID8/IEF3cy5BQ0NPVU5UX0lELFxuICAgICAgICBbRE9NQUlOX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5OYW1lLFxuICAgICAgICBbUkVQT1NJVE9SWV9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyTmFtZSxcbiAgICAgIH0sXG4gICAgICBtZXRyaWNOYW1lOiBNZXRyaWNOYW1lLklORUxJR0lCTEVfTElDRU5TRSxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYWNrYWdlIHZlcnNpb25zIHRoYXQgd2VyZSBkZWxldGVkIGZyb20gQ29kZUFydGlmYWN0ICh0aG9zZSBldmVudHMgYXJlIG5vdFxuICAgKiBoYW5kbGVkIGN1cnJlbnRseSkuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljRGVsZXRlZENvdW50KG9wdHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gbmV3IE1ldHJpYyh7XG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoNSksXG4gICAgICBzdGF0aXN0aWM6IFN0YXRpc3RpYy5TVU0sXG4gICAgICAuLi5vcHRzLFxuICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICBbRE9NQUlOX09XTkVSX0RJTUVOU0lPTl06XG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJEb21haW5Pd25lciA/PyBBd3MuQUNDT1VOVF9JRCxcbiAgICAgICAgW0RPTUFJTl9OQU1FX0RJTUVOU0lPTl06IHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluTmFtZSxcbiAgICAgICAgW1JFUE9TSVRPUllfTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ck5hbWUsXG4gICAgICB9LFxuICAgICAgbWV0cmljTmFtZTogTWV0cmljTmFtZS5ERUxFVEVEX0NPVU5ULFxuICAgICAgbmFtZXNwYWNlOiBNRVRSSUNTX05BTUVTUEFDRSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhY2thZ2UgdmVyc2lvbnMgdGhhdCBkbyBub3QgaGF2ZSBhIGpzaWkgYXNzZW1ibHkgaW4gdGhlIHBhY2thZ2UuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTm90SnNpaUVuYWJsZWRDb3VudChvcHRzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBNZXRyaWMoe1xuICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgc3RhdGlzdGljOiBTdGF0aXN0aWMuU1VNLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgW0RPTUFJTl9PV05FUl9ESU1FTlNJT05dOlxuICAgICAgICAgIHRoaXMucHJvcHMucmVwb3NpdG9yeS5hdHRyRG9tYWluT3duZXIgPz8gQXdzLkFDQ09VTlRfSUQsXG4gICAgICAgIFtET01BSU5fTkFNRV9ESU1FTlNJT05dOiB0aGlzLnByb3BzLnJlcG9zaXRvcnkuYXR0ckRvbWFpbk5hbWUsXG4gICAgICAgIFtSRVBPU0lUT1JZX05BTUVfRElNRU5TSU9OXTogdGhpcy5wcm9wcy5yZXBvc2l0b3J5LmF0dHJOYW1lLFxuICAgICAgfSxcbiAgICAgIG1ldHJpY05hbWU6IE1ldHJpY05hbWUuTk9UX0pTSUlfRU5BQkxFRF9DT1VOVCxcbiAgICAgIG5hbWVzcGFjZTogTUVUUklDU19OQU1FU1BBQ0UsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -561,7 +561,7 @@ class NpmJs {
561
561
  }
562
562
  exports.NpmJs = NpmJs;
563
563
  _a = JSII_RTTI_SYMBOL_1;
564
- NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.503" };
564
+ NpmJs[_a] = { fqn: "construct-hub.sources.NpmJs", version: "0.4.505" };
565
565
  /**
566
566
  * How often 'rate' goes into 'duration' (rounded up)
567
567
  */
@@ -50,7 +50,7 @@ class TagCondition {
50
50
  }
51
51
  exports.TagCondition = TagCondition;
52
52
  _a = JSII_RTTI_SYMBOL_1;
53
- TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.503" };
53
+ TagCondition[_a] = { fqn: "construct-hub.TagCondition", version: "0.4.505" };
54
54
  /**
55
55
  * Logic operators for performing specific conditional logic.
56
56
  */
@@ -130,7 +130,7 @@ 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.4.503" };
133
+ TagConditionField[_b] = { fqn: "construct-hub.TagConditionField", version: "0.4.505" };
134
134
  /**
135
135
  * Target the README of the package to dictate whether a tag is relevant.
136
136
  */
@@ -147,5 +147,5 @@ class TagConditionReadme {
147
147
  }
148
148
  exports.TagConditionReadme = TagConditionReadme;
149
149
  _c = JSII_RTTI_SYMBOL_1;
150
- TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.503" };
150
+ TagConditionReadme[_c] = { fqn: "construct-hub.TagConditionReadme", version: "0.4.505" };
151
151
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4RUEsSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQUc3QjtBQXNCRDs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUFDaEM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXFCO1FBQ2pDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFxQjtRQUNoQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFxQjtRQUNqQyxPQUFPLElBQUksaUJBQWlCLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBdkNILG9DQTBDQzs7O0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQU9YO0FBUEQsV0FBWSxxQkFBcUI7SUFDL0Isb0NBQVcsQ0FBQTtJQUNYLGtDQUFTLENB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b20gJy4uL3BhY2thZ2UtdGFnLWdyb3VwJztcblxuaW50ZXJmYWNlIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIHRhZyBiZWluZyBhcHBsaWVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaGV4IHZhbHVlIHN0cmluZyBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0YWcgd2hlbiBkaXNwbGF5ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbG9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQgZXh0ZW5kcyBQYWNrYWdlVGFnUHJlc2VudGF0aW9uQmFzZSB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodCBleHRlbmRzIFBhY2thZ2VUYWdQcmVzZW50YXRpb25CYXNlIHtcbiAgLyoqXG4gICAqIEljb24gZGlzcGxheWVkIG5leHQgdG8gaGlnaGxpZ2h0IG9uIHBhY2thZ2UgY2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hGaWx0ZXIge1xuICAvKipcbiAgICogRGlzcGxheSBuYW1lIGZvciBmaWx0ZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiBncm91cCB0byBpbmNsdWRlIGZpbHRlciBpblxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGdyb3VwYCBpbnN0ZWFkXG4gICAqL1xuICByZWFkb25seSBncm91cEJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYWNrYWdlVGFnR3JvdXAgdG8gaW5jbHVkZSBmaWx0ZXIgaW5cbiAgICovXG4gIHJlYWRvbmx5IGdyb3VwPzogUGFja2FnZVRhZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRhZywgdXNlZCBmb3Igc2VhcmNoLiBNdXN0IGJlIHVuaXF1ZSBhbW9uZ3N0IHRhZ3MuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWdsaWdodGluZyB0YWcgb24gcGFja2FnZSBjYXJkXG4gICAqIEBkZWZhdWx0IGRvbid0IGhpZ2hsaWdodCB0YWdcbiAgICovXG4gIHJlYWRvbmx5IGhpZ2hsaWdodD86IEhpZ2hsaWdodDtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3Igc2hvd2luZyB0YWcgYXMga2V5d29yZFxuICAgKiBAZGVmYXVsdCBkb24ndCBzaG93IHRhZyBpbiBrZXl3b3JkIGxpc3RcbiAgICovXG4gIHJlYWRvbmx5IGtleXdvcmQ/OiBLZXl3b3JkO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciBzaG93aW5nIHRhZyBhcyBzZWFyY2ggZmlsdGVyXG4gICAqIEBkZWZhdWx0IGRvbid0IHNob3cgdGFnIGluIHNlYXJjaCBmaWx0ZXJzXG4gICAqL1xuICByZWFkb25seSBzZWFyY2hGaWx0ZXI/OiBTZWFyY2hGaWx0ZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYXBwbHlpbmcgY3VzdG9tIHRhZ3MgdG8gcmVsZXZhbnQgcGFja2FnZXMuIEN1c3RvbSB0YWdzIGFyZVxuICogZGlzcGxheWVkIG9uIHRoZSBwYWNrYWdlIGRldGFpbHMgcGFnZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBzZWFyY2hpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZyBleHRlbmRzIFBhY2thZ2VUYWdCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbG9naWMgdGhhdCBkaWN0YXRlcyB3aGV0aGVyIHRoZVxuICAgKiBwYWNrYWdlIGhhcyB0aGUgdGFnIGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGVudW0gVGFnQ29uZGl0aW9uU291cmNlIHtcbiAgUEFDS0FHRV9KU09OID0gJ1BBQ0tBR0VfSlNPTicsXG4gIFJFQURNRSA9ICdSRUFETUUnLFxufVxuXG4vKipcbiAqIFNlcmlhbGl6ZWQgY29uZmlnIGZvciBhIHRhZyBjb25kaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWdDb25kaXRpb25Db25maWcge1xuICByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGU7XG4gIHJlYWRvbmx5IHNvdXJjZT86IFRhZ0NvbmRpdGlvblNvdXJjZTtcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zPzogeyByZWFkb25seSBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBUYWdDb25kaXRpb25Db25maWdbXTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIHRhZyBkZWNsYXJhdGlvbiB0byBiZSBwYXNzZWQgdG8gbGFtYmRhcyB2aWEgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWNrYWdlVGFnQ29uZmlnIGV4dGVuZHMgUGFja2FnZVRhZ0Jhc2Uge1xuICByZWFkb25seSBjb25kaXRpb246IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBDb25kaXRpb24gZm9yIGFwcGx5aW5nIGEgY3VzdG9tIHRhZyB0byBhIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWdDb25kaXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIGFuICYmIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIG9ubHkgd2hlbiBhbGwgY29uZGl0aW9uIGFyZ3VtZW50cyBhcmVcbiAgICogdHJ1ZS5cbiAgICovXG4gIHN0YXRpYyBhbmQoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5BTkQsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gfHwgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgYW55IG9mIHRoZSBjb25kaXRpb24gYXJndW1lbnRzIGFyZVxuICAgKiB0cnVlLlxuICAgKi9cbiAgc3RhdGljIG9yKC4uLmNvbmRzOiBUYWdDb25kaXRpb25bXSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25Mb2dpYyhUYWdDb25kaXRpb25Mb2dpY1R5cGUuT1IsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSAhIGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBjb25kaXRpb24gYXJndW1lbnQgaXMgZmFsc2VcbiAgICovXG4gIHN0YXRpYyBub3QoLi4uY29uZHM6IFRhZ0NvbmRpdGlvbltdKTogVGFnQ29uZGl0aW9uIHtcbiAgICByZXR1cm4gbmV3IFRhZ0NvbmRpdGlvbkxvZ2ljKFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZS5OT1QsIGNvbmRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYXJnZXQgYSBmaWVsZCB3aXRoaW4gdGhlIGBwYWNrYWdlLmpzb25gIHRvIGFzc2VydCBhZ2FpbnN0LiBOZXN0ZWQgZmllbGRzXG4gICAqIGNhbiBiZSBhY2Nlc3NlZCBieSBwYXNzaW5nIG11bHRpcGxlIGtleXMuXG4gICAqIGBUYWdDb25kaXRpb24uZmllbGQoJ2tleTEnLCAna2V5MicpYCB3aWxsIGFjY2Vzc1xuICAgKiBgcGFja2FnZUpzb24/LmtleTE/LmtleTJgLlxuICAgKi9cbiAgc3RhdGljIGZpZWxkKC4uLmtleXM6IHN0cmluZ1tdKTogVGFnQ29uZGl0aW9uRmllbGQge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uRmllbGQoa2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29uZGl0aW9uIHdpdGggbG9naWMgdGFyZ2V0aW5nIHRoZSBSRUFETUUgb2YgdGhlIHBhY2thZ2UuXG4gICAqL1xuICBzdGF0aWMgcmVhZG1lKCk6IFRhZ0NvbmRpdGlvblJlYWRtZSB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25SZWFkbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZztcbn1cblxuLyoqXG4gKiBMb2dpYyBvcGVyYXRvcnMgZm9yIHBlcmZvcm1pbmcgc3BlY2lmaWMgY29uZGl0aW9uYWwgbG9naWMuXG4gKi9cbmV4cG9ydCBlbnVtIFRhZ0NvbmRpdGlvbkxvZ2ljVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUicsXG4gIE5PVCA9ICdOT1QnLFxuICBFUVVBTFMgPSAnRVFVQUxTJyxcbiAgSU5DTFVERVMgPSAnSU5DTFVERVMnLFxuICBTVEFSVFNfV0lUSCA9ICdTVEFSVFNfV0lUSCcsXG59XG5cbmNsYXNzIFRhZ0NvbmRpdGlvbkxvZ2ljIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9naWMgPSB0cnVlO1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlOiBUYWdDb25kaXRpb25Mb2dpY1R5cGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGlsZHJlbjogVGFnQ29uZGl0aW9uW11cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLm1hcCgoY29uZCkgPT4gY29uZC5iaW5kKCkpLFxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgVGFnQ29uZGl0aW9uUHJlZGljYXRlIGV4dGVuZHMgVGFnQ29uZGl0aW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IGlzUHJlZGljYXRlID0gdHJ1ZTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZTogVGFnQ29uZGl0aW9uTG9naWNUeXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc291cmNlPzogVGFnQ29uZGl0aW9uU291cmNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Pzogc3RyaW5nW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZT86IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBUYWdDb25kaXRpb25JbmNsdWRlc09wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKCk6IFRhZ0NvbmRpdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhcmdldCBhIGZpZWxkIHRvIHVzZSBpbiBsb2dpYyB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25GaWVsZCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBzdHJpbmdbXSkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgPT09IGNvbmRpdGlvbiB3aGljaCBhcHBsaWVzIGlmIHRoZSBzcGVjaWZpZWQgZmllbGQgd2l0aGluIHRoZVxuICAgKiBwYWNrYWdlJ3MgcGFja2FnZS5qc29uIGlzIGVxdWFsIHRvIHRoZSBwYXNzZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgZXEodmFsdWU6IGFueSk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuRVFVQUxTLFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIHNwZWNpZmllZFxuICAgKiBmaWVsZCB3aXRoaW4gdGhlIHBhY2thZ2UncyBwYWNrYWdlLmpzb24gaW5jbHVkZXMgdGhlIHZhbHVlLiBUaGlzIHdvcmtzIGZvclxuICAgKiBhcnJheXMgb3Igc3RyaW5ncy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUEFDS0FHRV9KU09OLFxuICAgICAgdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgYGZpZWxkLnN0YXJ0c1dpdGgodmFsdWUpYCBjb25kaXRpb24gd2hpY2ggYXBwbGllcyBpZiB0aGUgc3BlY2lmaWVkXG4gICAqIGZpZWxkIHdpdGhpbiB0aGUgcGFja2FnZSdzIHBhY2thZ2UuanNvbiBiZWdpbnMgd2l0aCB0aGUgdmFsdWUuIFRoaXMgd29ya3NcbiAgICogb25seSBmb3Igc3RyaW5nIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyBzdGFydHNXaXRoKHZhbHVlOiBzdHJpbmcpOiBUYWdDb25kaXRpb24ge1xuICAgIHJldHVybiBuZXcgVGFnQ29uZGl0aW9uUHJlZGljYXRlKFxuICAgICAgVGFnQ29uZGl0aW9uTG9naWNUeXBlLlNUQVJUU19XSVRILFxuICAgICAgVGFnQ29uZGl0aW9uU291cmNlLlBBQ0tBR0VfSlNPTixcbiAgICAgIHRoaXMuZmllbGQsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYXJnZXQgdGhlIFJFQURNRSBvZiB0aGUgcGFja2FnZSB0byBkaWN0YXRlIHdoZXRoZXIgYSB0YWcgaXMgcmVsZXZhbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWdDb25kaXRpb25SZWFkbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBgcmVhZG1lLmluY2x1ZGVzKHZhbHVlKWAgY29uZGl0aW9uIHdoaWNoIGFwcGxpZXMgaWYgdGhlIFJFQURNRVxuICAgKiBpbmNsdWRlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBpbmNsdWRlcyhcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyA9IHt9XG4gICk6IFRhZ0NvbmRpdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBUYWdDb25kaXRpb25QcmVkaWNhdGUoXG4gICAgICBUYWdDb25kaXRpb25Mb2dpY1R5cGUuSU5DTFVERVMsXG4gICAgICBUYWdDb25kaXRpb25Tb3VyY2UuUkVBRE1FLFxuICAgICAgdW5kZWZpbmVkLCAvLyBubyBrZXlcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBgaW5jbHVkZXNgIG9wZXJhdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0NvbmRpdGlvbkluY2x1ZGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgbXVzdCBhcHBlYXIgYXQgbGVhc3QgdGhpcyBtYW55IHRpbWVzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBhdExlYXN0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJpbmcgbWF0Y2hlcyBtdXN0IG1hdGNoIHRoZSBjYXNpbmcgb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gVGhpcyBvcHRpb25cbiAgICogaXMgaWdub3JlZCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIGlzIGFuIGFycmF5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG4iXX0=
@@ -13,7 +13,7 @@ class FilterType {
13
13
  }
14
14
  exports.FilterType = FilterType;
15
15
  _a = JSII_RTTI_SYMBOL_1;
16
- FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.503" };
16
+ FilterType[_a] = { fqn: "construct-hub.FilterType", version: "0.4.505" };
17
17
  class FilterTypeRadio extends FilterType {
18
18
  bind() {
19
19
  return { type: 'radio' };
@@ -45,5 +45,5 @@ class PackageTagGroup {
45
45
  }
46
46
  exports.PackageTagGroup = PackageTagGroup;
47
47
  _b = JSII_RTTI_SYMBOL_1;
48
- PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.503" };
48
+ PackageTagGroup[_b] = { fqn: "construct-hub.PackageTagGroup", version: "0.4.505" };
49
49
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFja2FnZS10YWctZ3JvdXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFzQixVQUFVO0lBQzlCLE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQy9CLENBQUM7O0FBUEgsZ0NBVUM7OztBQUVELE1BQU0sZUFBZ0IsU0FBUSxVQUFVO0lBQy9CLElBQUk7UUFDVCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQUVELE1BQU0sa0JBQW1CLFNBQVEsVUFBVTtJQUNsQyxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUF3QkQ7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFLMUIsWUFBNEIsRUFBVSxFQUFFLEtBQTRCO1FBQXhDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7O0FBbEJILDBDQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyVHlwZVZhbHVlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXJUeXBlIHtcbiAgc3RhdGljIGNoZWNrYm94KCk6IEZpbHRlclR5cGUge1xuICAgIHJldHVybiBuZXcgRmlsdGVyVHlwZUNoZWNrYm94KCk7XG4gIH1cblxuICBzdGF0aWMgcmFkaW8oKTogRmlsdGVyVHlwZSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJUeXBlUmFkaW8oKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZTtcbn1cblxuY2xhc3MgRmlsdGVyVHlwZVJhZGlvIGV4dGVuZHMgRmlsdGVyVHlwZSB7XG4gIHB1YmxpYyBiaW5kKCk6IEZpbHRlclR5cGVWYWx1ZSB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3JhZGlvJyB9O1xuICB9XG59XG5cbmNsYXNzIEZpbHRlclR5cGVDaGVja2JveCBleHRlbmRzIEZpbHRlclR5cGUge1xuICBwdWJsaWMgYmluZCgpOiBGaWx0ZXJUeXBlVmFsdWUge1xuICAgIHJldHVybiB7IHR5cGU6ICdjaGVja2JveCcgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhY2thZ2VUYWdHcm91cFByb3BzIHtcbiAgLyoqXG4gICAqIEdyb3VwIGxhYmVsIHRvIGRpc3BsYXkuIEZhbGxzIGJhY2sgdG8gaWQgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1lc3NhZ2UgdG8gc2hvdyB3aXRoaW4gYSB0b29sdGlwIG5leHQgdG8gdGhlIGZpbHRlciBsYWJlbFxuICAgKi9cbiAgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzcGVjaWZ5IHRoZSBncm91cCBmaWx0ZXIgdHlwZS4gRGVmYXVsdHMgdG8gY2hlY2tib3ggaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyVHlwZT86IEZpbHRlclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRvb2x0aXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmaW5lcyBhIGN1c3RvbSBwYWNrYWdlIHRhZyBncm91cFxuICovXG5leHBvcnQgY2xhc3MgUGFja2FnZVRhZ0dyb3VwIHtcbiAgcHVibGljIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbHRpcD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZpbHRlclR5cGU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsIHByb3BzPzogUGFja2FnZVRhZ0dyb3VwUHJvcHMpIHtcbiAgICB0aGlzLmxhYmVsID0gcHJvcHM/LmxhYmVsO1xuICAgIHRoaXMudG9vbHRpcCA9IHByb3BzPy50b29sdGlwO1xuICAgIHRoaXMuZmlsdGVyVHlwZSA9IChwcm9wcz8uZmlsdGVyVHlwZSA/PyBGaWx0ZXJUeXBlLmNoZWNrYm94KCkpLmJpbmQoKS50eXBlO1xuICB9XG5cbiAgcHVibGljIGJpbmQoKTogUGFja2FnZVRhZ0dyb3VwQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbCxcbiAgICAgIHRvb2x0aXA6IHRoaXMudG9vbHRpcCxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMuZmlsdGVyVHlwZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -31,5 +31,5 @@ class PreloadFile {
31
31
  }
32
32
  exports.PreloadFile = PreloadFile;
33
33
  _a = JSII_RTTI_SYMBOL_1;
34
- PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.503" };
34
+ PreloadFile[_a] = { fqn: "construct-hub.PreloadFile", version: "0.4.505" };
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlbG9hZC1maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkJBQWtDO0FBRWxDOzs7R0FHRztBQUNILE1BQWEsV0FBVztJQUN0Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMxQixNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFZLEVBQUMsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVk7UUFDMUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBNkIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDO0lBRXRDLElBQUk7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7QUFwQkgsa0NBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnZnMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBqYXZhc2NyaXB0IGZpbGUgdG8gbG9hZCBiZWZvcmUgdGhlIHdlYmFwcC5cbiAqIFRoaXMgY2FuIGFsbG93IG9wZXJhdG9ycyB0byBhZGQgdGhlaXIgb3duIGNsaWVudCBtb25pdG9ycyBvciBhbmFseXRpY3MgaWYgdGhleSB3aXNoXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVsb2FkRmlsZSB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgUHJlbG9hZEZpbGUgaW5zdGFuY2UgZnJvbSBhIGZpbGVwYXRoIHRvIGxvYWRcbiAgICovXG4gIHN0YXRpYyBmcm9tRmlsZShwYXRoOiBzdHJpbmcpOiBQcmVsb2FkRmlsZSB7XG4gICAgY29uc3QgZGF0YSA9IHJlYWRGaWxlU3luYyhwYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuICAgIHJldHVybiBuZXcgUHJlbG9hZEZpbGUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIFByZWxvYWRGaWxlIGluc3RhbmNlIGRpcmVjdGx5IGZyb20gc291cmNlIGNvZGVcbiAgICovXG4gIHN0YXRpYyBmcm9tQ29kZShjb2RlOiBzdHJpbmcpOiBQcmVsb2FkRmlsZSB7XG4gICAgcmV0dXJuIG5ldyBQcmVsb2FkRmlsZShjb2RlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGF0YTogc3RyaW5nKSB7fVxuXG4gIHB1YmxpYyBiaW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufVxuIl19
package/lib/s3/storage.js CHANGED
@@ -52,6 +52,6 @@ class S3StorageFactory extends constructs_1.Construct {
52
52
  }
53
53
  exports.S3StorageFactory = S3StorageFactory;
54
54
  _a = JSII_RTTI_SYMBOL_1;
55
- S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.503" };
55
+ S3StorageFactory[_a] = { fqn: "construct-hub.S3StorageFactory", version: "0.4.505" };
56
56
  S3StorageFactory.UID = 'S3StorageFactory';
57
57
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zMy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXFEO0FBQ3JELHlDQUF5QztBQUN6QywyQ0FBdUM7QUFjdkM7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLHNCQUFTO0lBQzdDOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUN2QixLQUFnQixFQUNoQixRQUErQixFQUFFO1FBRWpDLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBcUIsQ0FBQztJQUN4RSxDQUFDO0lBTUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsUUFBK0IsRUFBRTtRQUVqQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQ2QsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQXNCO1FBRXRCLFNBQVMsV0FBVyxDQUFDLE1BQWlCO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ3RDLFdBQVcsRUFBRSxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsb0JBQW9CLE1BQU0sQ0FBQyxVQUFVLFNBQVMsU0FBUyxDQUFDLFVBQVUsRUFBRTthQUM1RSxDQUFDLENBQUM7WUFDSCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEQsNkVBQTZFO1FBQzdFLGtGQUFrRjtRQUNsRix5QkFBeUI7UUFDekIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDbEQsQ0FBQzs7QUE1REgsNENBNkRDOzs7QUEzQ3lCLG9CQUFHLEdBQUcsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGBTM1N0b3JhZ2VGYWN0b3J5YFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzU3RvcmFnZUZhY3RvcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBmYWN0b3J5IHdpbGwgcmV0dXJuIHRoZSBmYWlsb3ZlciBidWNrZXRzIGluc3RlYWQgb2YgdGhlIHByaW1hcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmYWlsb3Zlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIHMzIHN0b3JhZ2UgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgY2xhc3MgUzNTdG9yYWdlRmFjdG9yeSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBvciBjcmVhdGUgdGhlIHN0b3JhZ2UgZmFjdG9yeSBmb3IgdGhlIGN1cnJlbnQgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgaXMgc3RhY2sgc2luZ2xldG9uLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHByb3BzOiBTM1N0b3JhZ2VGYWN0b3J5UHJvcHMgPSB7fVxuICApOiBTM1N0b3JhZ2VGYWN0b3J5IHtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgICBjb25zdCBmYWN0b3J5ID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUzNTdG9yYWdlRmFjdG9yeS5VSUQpO1xuICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgcmV0dXJuIG5ldyBTM1N0b3JhZ2VGYWN0b3J5KHN0YWNrLCBTM1N0b3JhZ2VGYWN0b3J5LlVJRCwgcHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoUzNTdG9yYWdlRmFjdG9yeS5VSUQpIGFzIFMzU3RvcmFnZUZhY3Rvcnk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBVSUQgPSAnUzNTdG9yYWdlRmFjdG9yeSc7XG5cbiAgcHJpdmF0ZSBmYWlsb3ZlckFjdGl2ZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogUzNTdG9yYWdlRmFjdG9yeVByb3BzID0ge31cbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmZhaWxvdmVyQWN0aXZlID0gcHJvcHMuZmFpbG92ZXIgPz8gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGJ1Y2tldCBpbiBhIHN0b3JhZ2UgY29uZmlnIGF3YXJlIG1hbm5lci5cbiAgICpcbiAgICogQHJldHVybnMgczMuQnVja2V0XG4gICAqL1xuICBwdWJsaWMgbmV3QnVja2V0KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IHMzLkJ1Y2tldFByb3BzXG4gICk6IHMzLkJ1Y2tldCB7XG4gICAgZnVuY3Rpb24gZmFpbG92ZXJGb3IoYnVja2V0OiBzMy5CdWNrZXQpOiBzMy5CdWNrZXQge1xuICAgICAgY29uc3QgX2ZhaWxvdmVyID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgYEZhaWxvdmVyJHtpZH1gLCBwcm9wcyk7XG4gICAgICBUYWdzLm9mKF9mYWlsb3ZlcikuYWRkKCdmYWlsb3ZlcicsICd0cnVlJyk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQoc2NvcGUsICdTbmFwc2hvdENvbW1hbmQnLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgU25hcHNob3QgJHtidWNrZXQubm9kZS5wYXRofWAsXG4gICAgICAgIHZhbHVlOiBgYXdzIHMzIHN5bmMgczM6Ly8ke2J1Y2tldC5idWNrZXROYW1lfSBzMzovLyR7X2ZhaWxvdmVyLmJ1Y2tldE5hbWV9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIF9mYWlsb3ZlcjtcbiAgICB9XG5cbiAgICBjb25zdCBwcmltYXJ5ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIG5vdGUgdGhhdCB3ZSBjcmVhdGUgdGhlIGZhaWxvdmVyIGJ1Y2tldCBldmVuIGlmIHdlIGRvbid0IGN1cnJlbnRseSB1c2UgaXQuXG4gICAgLy8gdGhpcyBpcyBiZWNhdXNlIGNvbmRpdGlvbmluZyBidWNrZXQgY3JlYXRpb24gd2lsbCBldmVudHVhbGx5IGZhaWwgc2luY2UgYnVja2V0c1xuICAgIC8vIGFyZSBub3JtYWxseSByZXRhaW5lZC5cbiAgICBjb25zdCBmYWlsb3ZlciA9IGZhaWxvdmVyRm9yKHByaW1hcnkpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmFpbG92ZXJBY3RpdmUgPyBmYWlsb3ZlciA6IHByaW1hcnk7XG4gIH1cbn1cbiJdfQ==
@@ -270,7 +270,7 @@ class SpdxLicense {
270
270
  }
271
271
  exports.SpdxLicense = SpdxLicense;
272
272
  _a = JSII_RTTI_SYMBOL_1;
273
- SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.503" };
273
+ SpdxLicense[_a] = { fqn: "construct-hub.SpdxLicense", version: "0.4.505" };
274
274
  SpdxLicense._ALL = new Map();
275
275
  //#region Individual SPDX Licenses
276
276
  /**
package/package.json CHANGED
@@ -215,7 +215,7 @@
215
215
  "publishConfig": {
216
216
  "access": "public"
217
217
  },
218
- "version": "0.4.503",
218
+ "version": "0.4.505",
219
219
  "jest": {
220
220
  "coverageProvider": "v8",
221
221
  "maxConcurrency": 2,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/static/css/main.efe592a7.css",
4
- "main.js": "/static/js/main.d90f81f0.js",
4
+ "main.js": "/static/js/main.6eca6827.js",
5
5
  "static/js/332.b740638d.chunk.js": "/static/js/332.b740638d.chunk.js",
6
6
  "static/js/959.abcce3a0.chunk.js": "/static/js/959.abcce3a0.chunk.js",
7
7
  "static/js/619.1a7deb33.chunk.js": "/static/js/619.1a7deb33.chunk.js",
@@ -14,14 +14,14 @@
14
14
  "static/js/453.13ac0f49.chunk.js": "/static/js/453.13ac0f49.chunk.js",
15
15
  "static/js/591.6b31b86a.chunk.js": "/static/js/591.6b31b86a.chunk.js",
16
16
  "static/js/496.2a6b6f6f.chunk.js": "/static/js/496.2a6b6f6f.chunk.js",
17
- "static/js/487.4744759e.chunk.js": "/static/js/487.4744759e.chunk.js",
17
+ "static/js/487.e1807da5.chunk.js": "/static/js/487.e1807da5.chunk.js",
18
18
  "static/js/451.916d6ace.chunk.js": "/static/js/451.916d6ace.chunk.js",
19
19
  "static/js/516.87cad50a.chunk.js": "/static/js/516.87cad50a.chunk.js",
20
20
  "static/js/294.61480951.chunk.js": "/static/js/294.61480951.chunk.js",
21
21
  "service-worker.js": "/service-worker.js",
22
22
  "index.html": "/index.html",
23
23
  "main.efe592a7.css.map": "/static/css/main.efe592a7.css.map",
24
- "main.d90f81f0.js.map": "/static/js/main.d90f81f0.js.map",
24
+ "main.6eca6827.js.map": "/static/js/main.6eca6827.js.map",
25
25
  "332.b740638d.chunk.js.map": "/static/js/332.b740638d.chunk.js.map",
26
26
  "959.abcce3a0.chunk.js.map": "/static/js/959.abcce3a0.chunk.js.map",
27
27
  "619.1a7deb33.chunk.js.map": "/static/js/619.1a7deb33.chunk.js.map",
@@ -34,13 +34,13 @@
34
34
  "453.13ac0f49.chunk.js.map": "/static/js/453.13ac0f49.chunk.js.map",
35
35
  "591.6b31b86a.chunk.js.map": "/static/js/591.6b31b86a.chunk.js.map",
36
36
  "496.2a6b6f6f.chunk.js.map": "/static/js/496.2a6b6f6f.chunk.js.map",
37
- "487.4744759e.chunk.js.map": "/static/js/487.4744759e.chunk.js.map",
37
+ "487.e1807da5.chunk.js.map": "/static/js/487.e1807da5.chunk.js.map",
38
38
  "451.916d6ace.chunk.js.map": "/static/js/451.916d6ace.chunk.js.map",
39
39
  "516.87cad50a.chunk.js.map": "/static/js/516.87cad50a.chunk.js.map",
40
40
  "294.61480951.chunk.js.map": "/static/js/294.61480951.chunk.js.map"
41
41
  },
42
42
  "entrypoints": [
43
43
  "static/css/main.efe592a7.css",
44
- "static/js/main.d90f81f0.js"
44
+ "static/js/main.6eca6827.js"
45
45
  ]
46
46
  }
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><script src="/preload.js"></script><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="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.d90f81f0.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><script src="/preload.js"></script><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="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.6eca6827.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -1 +1 @@
1
- {"version":3,"file":"static/css/main.efe592a7.css","mappings":"AAAA,KAEE,oBACF,CAEA,UAJE,WAYF,CARA,KAME,kCAAmC,CACnC,iCAAkC,CAJlC,mIAEY,CAHZ,QAMF,CAEA,KACE,uEAEF,CAGA,gBACE,6DAA8D,CAC9D,yDAA0D,CAE1D,0DAA2D,CAE3D,+DAAgE,CAChE,iEAAkE,CAClE,gEAAiE,CACjE,kDAAmD,CAEnD,yDAA0D,CAC1D,gEAAiE,CAEjE,+DAAgE,CAChE,mEACF","sources":["index.css"],"sourcesContent":["html {\n height: 100%;\n overflow: hidden auto;\n}\n\nbody {\n height: 100%;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Dark-theme color resets */\n.chakra-ui-dark {\n --chakra-colors-bgPrimary: var(--chakra-colors-blackAlpha-900);\n --chakra-colors-bgSecondary: var(--chakra-colors-gray-900);\n\n --chakra-colors-hoverPrimary: var(--chakra-colors-gray-800);\n\n --chakra-colors-textPrimary: var(--chakra-colors-whiteAlpha-800);\n --chakra-colors-textSecondary: var(--chakra-colors-whiteAlpha-900);\n --chakra-colors-textTertiary: var(--chakra-colors-whiteAlpha-700);\n --chakra-colors-link: var(--chakra-colors-blue-300);\n\n --chakra-colors-borderColor: var(--chakra-colors-gray-600);\n --chakra-borders-base: 1px solid var(--chakra-colors-borderColor);\n\n --chakra-colors-shadowColor: var(--chakra-colors-blackAlpha-900);\n --chakra-shadows-base: 0px 4px 15px var(--chakra-colors-shadowColor);\n}\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"static/css/main.eaff4445.css","mappings":"AAAA,KAEE,oBACF,CAEA,UAJE,WAYF,CARA,KAME,kCAAmC,CACnC,iCAAkC,CAJlC,mIAEY,CAHZ,QAMF,CAEA,KACE,uEAEF,CAGA,gBACE,6DAA8D,CAC9D,yDAA0D,CAE1D,0DAA2D,CAE3D,+DAAgE,CAChE,iEAAkE,CAClE,gEAAiE,CACjE,kDAAmD,CAEnD,yDAA0D,CAC1D,gEAAiE,CAEjE,+DAAgE,CAChE,mEACF","sources":["index.css"],"sourcesContent":["html {\n height: 100%;\n overflow: hidden auto;\n}\n\nbody {\n height: 100%;\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n\n/* Dark-theme color resets */\n.chakra-ui-dark {\n --chakra-colors-bgPrimary: var(--chakra-colors-blackAlpha-900);\n --chakra-colors-bgSecondary: var(--chakra-colors-gray-900);\n\n --chakra-colors-hoverPrimary: var(--chakra-colors-gray-800);\n\n --chakra-colors-textPrimary: var(--chakra-colors-whiteAlpha-800);\n --chakra-colors-textSecondary: var(--chakra-colors-whiteAlpha-900);\n --chakra-colors-textTertiary: var(--chakra-colors-whiteAlpha-700);\n --chakra-colors-link: var(--chakra-colors-blue-300);\n\n --chakra-colors-borderColor: var(--chakra-colors-gray-600);\n --chakra-borders-base: 1px solid var(--chakra-colors-borderColor);\n\n --chakra-colors-shadowColor: var(--chakra-colors-blackAlpha-900);\n --chakra-shadows-base: 0px 4px 15px var(--chakra-colors-shadowColor);\n}\n"],"names":[],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/294.61480951.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","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/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text, useColorModeValue } 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 const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} 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 { 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<\n 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 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 { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\n\ninterface DetailProps {\n \"data-testid\": string;\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=\"link\"\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 { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n constructFrameworks,\n name,\n version,\n } = usePackageCard();\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\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=\"textPrimary\"\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 { usePackageCard } from \"./PackageCard\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\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 { usePackageCard } from \"./PackageCard\";\nimport { PackageLanguages } from \"../PackageLanguages\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\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: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\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 overflow=\"hidden\"\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 { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\nimport { ExtendedCatalogPackage } from \"../../api/catalog-search\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\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","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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\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 feedUrls = useConfigValue(\"feeds\") || [];\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 content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\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 { 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 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","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 { 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"],"names":["Highlight","_ref","label","color","icon","brightness","useColorModeValue","_jsxs","Stack","align","direction","filter","spacing","children","_jsx","Image","alt","concat","src","w","Text","fontWeight","LanguageSupportTooltip","language","isSupported","TEMP_SUPPORTED_LANGUAGES","has","langName","LANGUAGE_NAME_MAP","message","Tooltip","hasArrow","placement","PackageCardType","PackageCard_testIds","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","_data$packages","_data$packages$name","_data$packages$name$d","_usePackageCard","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","_Fragment","undefined","testIds","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","_useLanguage","useLanguage","currentLanguage","_slicedToArray","dataEvent","description","constructFrameworks","version","LinkOverlay","Link","eventName","getPackagePath","Flex","CDKTypeBadge","mr","ChakraHeading","title","wordBreak","_usePackageCard$metad","_ref$packageTags","packageTags","_highlightsFrom","highlightsFrom","highlight","Box","HighlightComponent","_objectSpread","sizes","sm","md","lg","PackageLanguages","_ref$isRounded","isRounded","languages","packageName","_ref$size","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","_ref2","_ref3","left","right","LANGUAGES","indexOf","map","_ref6","_ref7","lang","info","isSupportedByLibrary","Language","TypeScript","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","_usePackageCard$keywo","keywords","tags","tagObjectsFrom","slice","id","_ref$keyword","keyword","_ref$keyword2","PackageTag","variant","WideCard","LinkBox","_hover","bg","Grid","border","boxShadow","wideContainer","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","_ref$variant","Wide","Provider","_ref$label","tagProps","_objectWithoutProperties","_excluded","Tag","textDecoration","TagLabel","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","options","arguments","length","updateUrl","updateSaved","_useLocation","useLocation","pathname","hash","replace","useHistory","params","useQueryParams","langFromParams","get","QUERY_PARAMS","LANGUAGE","_useState","useState","_localStorage$getItem","storedLang","localStorage","getItem","_unused","getInitialLang","_useState2","setLanguage","set","toString","update","useCallback","val","setItem","_unused2","useMemo","URLSearchParams","reduce","accum","tag","mapPackageTags","_tag$keyword","Boolean","_tag$keyword2","mapPackageKeywords","KEYWORD_IGNORE_LIST","tagObjects","Array","tagLabels","Set","toLowerCase","push","add"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/294.fbdd2a19.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","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/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text, useColorModeValue } 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 const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} 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 { 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<\n 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 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 { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\n\ninterface DetailProps {\n \"data-testid\": string;\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=\"link\"\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 { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n constructFrameworks,\n name,\n version,\n } = usePackageCard();\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\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=\"textPrimary\"\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 { usePackageCard } from \"./PackageCard\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\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 { usePackageCard } from \"./PackageCard\";\nimport { PackageLanguages } from \"../PackageLanguages\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\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: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\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 overflow=\"hidden\"\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 { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\nimport { ExtendedCatalogPackage } from \"../../api/catalog-search\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\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","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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\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 feedUrls = useConfigValue(\"feeds\") || [];\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 content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\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 { 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 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","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 { 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"],"names":["Highlight","_ref","label","color","icon","brightness","useColorModeValue","_jsxs","Stack","align","direction","filter","spacing","children","_jsx","Image","alt","concat","src","w","Text","fontWeight","LanguageSupportTooltip","language","isSupported","TEMP_SUPPORTED_LANGUAGES","has","langName","LANGUAGE_NAME_MAP","message","Tooltip","hasArrow","placement","PackageCardType","PackageCard_testIds","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","_data$packages","_data$packages$name","_data$packages$name$d","_usePackageCard","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","_Fragment","undefined","testIds","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","_useLanguage","useLanguage","currentLanguage","_slicedToArray","dataEvent","description","constructFrameworks","version","LinkOverlay","Link","eventName","getPackagePath","Flex","CDKTypeBadge","mr","ChakraHeading","title","wordBreak","_usePackageCard$metad","_ref$packageTags","packageTags","_highlightsFrom","highlightsFrom","highlight","Box","HighlightComponent","_objectSpread","sizes","sm","md","lg","PackageLanguages","_ref$isRounded","isRounded","languages","packageName","_ref$size","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","_ref2","_ref3","left","right","LANGUAGES","indexOf","map","_ref6","_ref7","lang","info","isSupportedByLibrary","Language","TypeScript","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","_usePackageCard$keywo","keywords","tags","tagObjectsFrom","slice","id","_ref$keyword","keyword","_ref$keyword2","PackageTag","variant","WideCard","LinkBox","_hover","bg","Grid","border","boxShadow","wideContainer","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","_ref$variant","Wide","Provider","_ref$label","tagProps","_objectWithoutProperties","_excluded","Tag","textDecoration","TagLabel","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","options","arguments","length","updateUrl","updateSaved","_useLocation","useLocation","pathname","hash","replace","useHistory","params","useQueryParams","langFromParams","get","QUERY_PARAMS","LANGUAGE","_useState","useState","_localStorage$getItem","storedLang","localStorage","getItem","_unused","getInitialLang","_useState2","setLanguage","set","toString","update","useCallback","val","setItem","_unused2","useMemo","URLSearchParams","reduce","accum","tag","mapPackageTags","_tag$keyword","Boolean","_tag$keyword2","mapPackageKeywords","KEYWORD_IGNORE_LIST","tagObjects","Array","tagLabels","Set","toLowerCase","push","add"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/323.87521e0e.chunk.js","mappings":"0NAOA,MAMaA,EAA4BA,KACvC,MAAMC,GAAUC,EAAAA,EAAAA,KAEhB,GAAID,EAAQE,YAAcF,EAAQG,KAChC,OACEC,EAAAA,EAAAA,KAACC,EAAAA,GAAM,CAACC,KAAK,QAAOC,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAO,CAACC,KAAK,SAKpB,MAAMC,EAjBcV,KACpB,MAAMW,EAAWX,EAAQW,SAEzB,OAAOA,EADKC,KAAKC,MAAMD,KAAKE,SAAWH,EAASI,UAepCC,CAAahB,EAAQG,MAC3Bc,GAAMC,EAAAA,EAAAA,IAAe,CACzBC,KAAMT,EAAIS,KACVC,QAASV,EAAIU,UAGf,OAAOhB,EAAAA,EAAAA,KAACiB,EAAAA,GAAQ,CAACC,GAAIL","sources":["views/Random/Random.tsx"],"sourcesContent":["import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport type { CatalogPackage, Packages } from \"../../api/package/packages\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport { getPackagePath } from \"../../util/url\";\n\nconst getRandomPkg = (catalog: Packages): CatalogPackage => {\n const packages = catalog.packages;\n const idx = Math.floor(Math.random() * packages.length);\n return packages[idx];\n};\n\nexport const Random: FunctionComponent = () => {\n const catalog = useCatalog();\n\n if (catalog.isLoading || !catalog.data) {\n return (\n <Center minH=\"16rem\">\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const pkg = getRandomPkg(catalog.data);\n const url = getPackagePath({\n name: pkg.name,\n version: pkg.version,\n });\n\n return <Redirect to={url} />;\n};\n"],"names":["Random","catalog","useCatalog","isLoading","data","_jsx","Center","minH","children","Spinner","size","pkg","packages","Math","floor","random","length","getRandomPkg","url","getPackagePath","name","version","Redirect","to"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/323.98b1fe06.chunk.js","mappings":"0NAOA,MAMaA,EAA4BA,KACvC,MAAMC,GAAUC,EAAAA,EAAAA,KAEhB,GAAID,EAAQE,YAAcF,EAAQG,KAChC,OACEC,EAAAA,EAAAA,KAACC,EAAAA,GAAM,CAACC,KAAK,QAAOC,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAO,CAACC,KAAK,SAKpB,MAAMC,EAjBcV,KACpB,MAAMW,EAAWX,EAAQW,SAEzB,OAAOA,EADKC,KAAKC,MAAMD,KAAKE,SAAWH,EAASI,UAepCC,CAAahB,EAAQG,MAC3Bc,GAAMC,EAAAA,EAAAA,IAAe,CACzBC,KAAMT,EAAIS,KACVC,QAASV,EAAIU,UAGf,OAAOhB,EAAAA,EAAAA,KAACiB,EAAAA,GAAQ,CAACC,GAAIL","sources":["views/Random/Random.tsx"],"sourcesContent":["import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport type { CatalogPackage, Packages } from \"../../api/package/packages\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport { getPackagePath } from \"../../util/url\";\n\nconst getRandomPkg = (catalog: Packages): CatalogPackage => {\n const packages = catalog.packages;\n const idx = Math.floor(Math.random() * packages.length);\n return packages[idx];\n};\n\nexport const Random: FunctionComponent = () => {\n const catalog = useCatalog();\n\n if (catalog.isLoading || !catalog.data) {\n return (\n <Center minH=\"16rem\">\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const pkg = getRandomPkg(catalog.data);\n const url = getPackagePath({\n name: pkg.name,\n version: pkg.version,\n });\n\n return <Redirect to={url} />;\n};\n"],"names":["Random","catalog","useCatalog","isLoading","data","_jsx","Center","minH","children","Spinner","size","pkg","packages","Math","floor","random","length","getRandomPkg","url","getPackagePath","name","version","Redirect","to"],"sourceRoot":""}