construct-hub 0.3.182 → 0.3.183

Sign up to get free protection for your applications and to get access to all the features.
package/.jsii CHANGED
@@ -1864,7 +1864,7 @@
1864
1864
  },
1865
1865
  "name": "construct-hub",
1866
1866
  "readme": {
1867
- "markdown": "# Construct Hub\n\nThis project maintains a [AWS Cloud Development Kit][aws-cdk] construct library\nthat can be used to deploy instances of the Construct Hub in any AWS Account.\n\nThis software backs the public instance of the\n[ConstructHub](https://constructs.dev), and can be used to deploy a self-hosted\ninstance with personalized configuration.\n\n[aws-cdk]: https://github.com/aws/aws-cdk\n\n## :question: Getting Started\n\n> :warning: Disclaimer\n>\n> The [public instance of ConstructHub](https://constructs.dev) is Generally Available.\n>\n> Self-hosted ConstructHub instances are however in active development and\n> should be considered *experimental*. Breaking changes to the public API of\n> this package are expected to be released without prior notice, and the\n> infrastructure and operational posture of ConstructHub instances may also\n> significantly change.\n>\n> You are welcome to deploy self-hosted instances of ConstructHub for evaluation\n> purposes, and we welcome any feedback (good or bad) from your experience in\n> doing so.\n\n### Quick Start\n\nOnce you have installed the `construct-hub` library in your project, the\nsimplest way to get started is to create an instance of the `ConstructHub`\nconstruct:\n\n```ts\nimport { App, Stack } from '@aws-cdk/core';\nimport { ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nnew ConstructHub(stack, 'ConstructHub');\n```\n\n### Personalization\n\n#### Using a custom domain name\n\nIn order to use a custom domain for your ConstructHub instance instead of the\ndefault CloudFront domain name, specify the `domain` property with the following\nelements:\n\nAttribute | Description\n------------------------------|---------------------------------------------------------------------\n`zone` | A Route53 Hosted Zone, where DNS records will be added.\n`cert` | An Amazon Certificate Manager certificate, which must be in the `us-east-1` region.\n`monitorCertificateExpiration`| Set to `false` if you do not want an alarm to be created when the certificate is close to expiry.\n\nYour self-hosted ConstructHub instance will be served from the root of the\nprovided `zone`, so the certificate must match this name.\n\n#### Alternate package sources\n\nBy default, ConstructHub has a single package source configured: the public\n`npmjs.com` registry. Self-hosted instances typically should list packages from\nalternate sources, either in addition to packages from `npmjs.com`, or instead\nof those.\n\nThe `packageSources` property can be used to replace the default set of package\nsources configured on the instance. ConstructHub provides `IPackageSource`\nimplementations for the public `npmjs.com` registry as well as for private\nCodeArtifact repositories:\n\n```ts\nimport * as codeartifact from '@aws-cdk/aws-codeartifact';\nimport { App, Stack } from '@aws-cdk/core';\nimport { sources, ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nconst registry = new codeartifact.CfnRegistry(stack, 'Registry', {\n // ....\n});\nnew ConstructHub(stack, 'ConstructHub', {\n packageSources: [\n new sources.NpmJs(), // Remove if you do NOT want npmjs.com packages\n new sources.CodeArtifact({ registry }),\n ],\n});\n```\n\nYou may also implement a custom `IPackageSource` if you want to index packages\nfrom alternate locations. In this case, the component you provide will be\nresponsible for sending notifications to an SQS Queue about newly discovered\npackages. You may refer to the [sources.NpmJs] and [sources.CodeArtifact]\nimplementations as a reference for hos this can be done.\n\nBy default, download counts of NPM packages will be fetched periodically from\nNPM's public API by a Lambda. Since this is not desirable if you are using a\nprivate package registry, this is automatically disabled if you specify your own\nvalue for `packageSources`. (But this can be re-enabled through the\n`fetchPackageStats` property if needed).\n\n[sources.NpmJs]: src/package-sources/npmjs.ts\n[sources.CodeArtifact]: src/package-sources/code-artifact.ts\n\n#### Package deny list\n\nCertain packages may be undesirable to show in your self-hosted ConstructHub\ninstance. In order to prevent a package from ever being listed in construct hub,\nthe `denyList` property can be configured with a set of `DenyListRule` objects\nthat specify which package or package versions should never be lested:\n\n```ts\nimport { App, Stack } from '@aws-cdk/core';\nimport { ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nnew ConstructHub(stack, 'ConstructHub', {\n denyList: [\n // Denying _all_ versions of the \"sneaky-hackery\" package\n { packageName: 'sneaky-hackery', reason: 'Mines bitcoins wherever it gets installed' },\n // Denying _a specific_ version of the \"bad-release\" package\n { packageName: 'bad-release', version: '1.2.3', reason: 'CVE-####-#####' },\n ],\n});\n```\n\n#### Redirecting from additional domains\n\nYou can add additional domains that will be redirected to your primary Construct\nHub domain:\n\n```ts\nimport * as r53 from '@aws-cdk/aws-route53';\n\nconst myDomainZone = r53.HostedZone.fromHostedZoneAttributes(this, 'MyDomainZone', {\n hostedZoneId: 'AZ1234',\n zoneName: 'my.domain.com',\n});\n\nnew ConstructHub(this, 'ConstructHub', {\n additionalDomains: [ { hostedZone: myDomainZone } ]\n});\n```\n\nThis will set up full domain redirect using Amazon S3 and Amazon CloudFront. All\nrequests will be redirected to your primary Construct Hub domain.\n\n#### Decrease deployment footprint\n\nBy default, ConstructHub executes the documentation rendering process in the\ncontext of isolated subnets. This is a defense-in-depth mechanism to mitigate\nthe risks associated with downloading aribtrary (un-trusted) *npm packages* and\ntheir dependency closures.\n\nThis layer of security implies the creation of a number of resources that can\nincrease the operating cost of your self-hosted instance: several VPC endpoints\nare created, an internal CodeArtifact repository needs to be provisioned, etc...\n\nWhile we generally recommend leaving these features enabled, if your self-hosted\nConstructHub instance only indexes *trusted* packages (as could be the case for\nan instance that does not list packages from the public `npmjs.com` registry),\nyou may set the `isolateLambdas` setting to `false`.\n\n## :gear: Operating a self-hosted instance\n\n1. [Application Overview](./docs/application-overview.md) provides a high-level\n description of the components that make a ConstructHub instance. This is a\n great starting point for people who consider operating a self-hosted instance\n of ConstructHub; and for new operators on-boarding the platform.\n\n1. [Operator Runbook](./docs/operator-runbook.md) is a series of diagnostics and\n troubleshooting guides indended for operators to have a quick and easy way to\n navigate a ConstructHub instance when they are reacting to an alarm or bug\n report.\n\n### :baby_chick: Deployment Canaries\n\nConstruct Hub provides several built-in validation mechanisms to make sure the\ndeployment of your instance is continuously operating as expected.\n\nThese mechanisms come in the form of canary testers that are part of the\nConstructHub deployment stack. Each canary runs periodically and performs a\ndifferent check, triggering a different CloudWatch alarm in case it detects a\nfailure.\n\nWe recommend that you use staged deployments, and block promotions to the\nproduction stage in case any preivous stage triggers an alarm within a specific\ntimeframe.\n\n#### Discovery Canary\n\nWhen configuring an `NpmJs` package source, a package discovery canary can be\nenabled using the `enableCanary` property (and optionally configured using the\n`canaryPackage` and `canarySla` properties). This feature is activated by\ndefault and monitors availability of releases of the `construct-hub-probe` npm\npackage in the ConstructHub instance.\n\nProbe packages, such as `construct-hub-probe` are published frequently (e.g:\nevery 3 hours or more frequently), and can be used to ensure the ConstructHub\ninstance correctly discovers, indexes and represents those packages.\n\nIf a different package or SLA should be used, you can configure the `NpmJs`\npackage source manually like so:\n\n```ts\nimport * as codeartifact from '@aws-cdk/aws-codeartifact';\nimport { App, Stack } from '@aws-cdk/core';\nimport { sources, ConstructHub } from 'construct-hub';\n\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\nnew ConstructHub(stack, 'ConstructHub', {\n // ...\n packageSources: [\n // ...\n new sources.NpmJs({\n enableCanary: true, // This is the default\n canaryPackage: '@acme/my-constructhub-probe',\n canarySla: Duration.minutes(30),\n }),\n // ...\n ],\n // ...\n});\n```\n\nIn case the new package isn't fully available in the predefined SLA, a\n**high severity** CloudWatch alarm will trigger, which will in turn trigger\nthe configured action for low severity alarms.\n\n> See [Monitoring & Alarms](./docs/application-overview.md#monitoring--alarming)\n\nThe operator runbook contains [instructions](./docs/operator-runbook.md) on how\nto diagnose and mitigate the root cause of the failure.\n\n### :nail_care: Customizing the frontend\n\nThere are a number of customizations available in order to make your private\nconstruct hub better tailored to your organization.\n\n#### Package Tags\n\nConfiguring package tags allows you to compute additional labels to be applied\nto packages. These can be used to indicate to users which packages are owned by\ntrusted organizations, or any other arbitrary conditions, and can be referenced\nwhile searching.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n id: 'official',\n condition: TagCondition.field('name').eq('construct-hub'),\n keyword: {\n label: 'Official',\n color: '#00FF00',\n },\n highlight: {\n label: 'Vended by AWS',\n color: '#00FF00',\n }\n }]\n});\n```\n\nThe above example will result in packages with the `name` of `construct-hub` to\nreceive the `Official` tag, which is colored green and displayed amongst the\nlist of keywords. Additionally the `highlight` key shows this as a highlighted\nitem on the package's card.\n\nThe `searchFilter` key can also be used to show tags as search filters grouped\ntogether.\n\n```ts\nconst isAws = TagCondition.field('name').eq('construct-hub');\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n id: 'AWS',\n condition: isAws,\n searchFilter: {\n groupBy: 'Authors',\n display: 'AWS',\n },\n }, {\n id: 'Community',\n condition: TagCondition.not(isAws),\n searchFilter: {\n groupBy: 'Authors',\n display: 'AWS',\n },\n }]\n});\n```\n\nThe above will show a list of `Authors` filters on the search results page\nwith a checkbox for each `AWS` and `Community` packages, allowing users to\nfilter results by the presence of these tags.\n\nCombinations of conditions are also supported:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n label: 'Official',\n color: '#00FF00',\n condition: TagCondition.or(\n TagCondition.field('name').eq('construct-hub'),\n TagCondition.field('name').eq('construct-hub-webapp'),\n ),\n }]\n});\n\n// or more succintly if you have a long list\ncondition: TagCondition.or(\n ...['construct-hub', 'construct-hub-webapp', '...',]\n .map(name => TagCondition.field('name').eq(name))\n),\n```\n\nYou can assert against any value within package json including nested ones.\n\n```ts\nTagCondition.field('constructHub', 'nested', 'key').eq('value');\n\n// checks\npackageJson?.constructHub?.nested?.key === value;\n```\n\n#### Package Links\n\nConfiguring package links allows you to replace the `Repository`, `License`,\nand `Registry` links on the package details page with whatever you choose.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageLinks: [{\n linkLabel: 'Service Level Agreement',\n configKey: 'SLA',\n }, {\n linkLabel: 'Contact',\n configKey: 'Contact',\n linkText: 'Email Me!',\n allowedDomains: ['me.com'],\n }]\n});\n```\n\nThis would allow publishers to add the following to their package.json:\n\n```json\n\"constructHub\": {\n \"packageLinks\": {\n \"SLA\": \"https://support.mypackage.com\",\n \"Contact\": \"me.com/contact\"\n }\n}\n```\n\nThen the links on the corresponding package page would show these items as\nconfigured.\n\n#### Home Page\n\nThe home page is divided into sections, each with a header and list of packages.\nCurrently, for a given section you can display either the most recently updated\npackages, or a curated list of packages.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n featuredPackages: {\n sections: [\n {\n name: \"Recently updated\",\n showLastUpdated: 4\n },\n {\n name: \"From the AWS CDK\",\n showPackages: [\n {\n name: \"@aws-cdk/core\"\n },\n {\n name: \"@aws-cdk/aws-s3\",\n comment: \"One of the most popular AWS CDK libraries!\"\n },\n {\n name: \"@aws-cdk/aws-lambda\"\n },\n {\n name: \"@aws-cdk/pipelines\"\n comment: \"The pipelines L3 construct library abstracts away many of the details of managing software deployment within AWS.\"\n }\n ]\n }\n ]\n }\n});\n```\n\n#### Browse Categories\n\nThe Construct Hub home page includes a section that displays a set of buttons\nthat represent browsing categories (e.g. \"Databases\", \"Monitoring\",\n\"Serverless\", etc).\n\nYou can use the `categories` option to configure these categories. Each category\nis defined by a `title` and a `url`, which will be the link associated with the\nbutton.\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n categories: [\n { title: 'Databases', url: '?keywords=databases' },\n { title: 'Monitoring', url: '?q=monitoring' },\n { title: 'Partners', url: '?tags=aws-partner' }\n ]\n});\n```\n\n#### Feature Flags\n\nFeature flags for the web app can be used to enable or disable experimental\nfeatures. These can be customized through the `featureFlags` property - for\nmore information about the available flags, check the documentation for\n<https://github.com/cdklabs/construct-hub-webapp/>.\n\n## :raised_hand: Contributing\n\nIf you are looking to contribute to this project, but don't know where to start,\nhave a look at our [contributing guide](CONTRIBUTING.md)!\n\n## :cop: Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more\ninformation.\n\n## :balance_scale: License\n\nThis project is licensed under the Apache-2.0 License.\n"
1867
+ "markdown": "# Construct Hub\n\nThis project maintains a [AWS Cloud Development Kit][aws-cdk] construct library\nthat can be used to deploy instances of the Construct Hub in any AWS Account.\n\nThis software backs the public instance of the\n[ConstructHub](https://constructs.dev), and can be used to deploy a self-hosted\ninstance with personalized configuration.\n\n[aws-cdk]: https://github.com/aws/aws-cdk\n\n## :question: Getting Started\n\n> :warning: Disclaimer\n>\n> The [public instance of ConstructHub](https://constructs.dev) is Generally Available.\n>\n> Self-hosted ConstructHub instances are however in active development and\n> should be considered *experimental*. Breaking changes to the public API of\n> this package are expected to be released without prior notice, and the\n> infrastructure and operational posture of ConstructHub instances may also\n> significantly change.\n>\n> You are welcome to deploy self-hosted instances of ConstructHub for evaluation\n> purposes, and we welcome any feedback (good or bad) from your experience in\n> doing so.\n\n### Quick Start\n\nOnce you have installed the `construct-hub` library in your project, the\nsimplest way to get started is to create an instance of the `ConstructHub`\nconstruct:\n\n```ts\nimport { App, Stack } from '@aws-cdk/core';\nimport { ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nnew ConstructHub(stack, 'ConstructHub');\n```\n\n### Personalization\n\n#### Using a custom domain name\n\nIn order to use a custom domain for your ConstructHub instance instead of the\ndefault CloudFront domain name, specify the `domain` property with the following\nelements:\n\nAttribute | Description\n------------------------------|---------------------------------------------------------------------\n`zone` | A Route53 Hosted Zone, where DNS records will be added.\n`cert` | An Amazon Certificate Manager certificate, which must be in the `us-east-1` region.\n`monitorCertificateExpiration`| Set to `false` if you do not want an alarm to be created when the certificate is close to expiry.\n\nYour self-hosted ConstructHub instance will be served from the root of the\nprovided `zone`, so the certificate must match this name.\n\n#### Alternate package sources\n\nBy default, ConstructHub has a single package source configured: the public\n`npmjs.com` registry. Self-hosted instances typically should list packages from\nalternate sources, either in addition to packages from `npmjs.com`, or instead\nof those.\n\nThe `packageSources` property can be used to replace the default set of package\nsources configured on the instance. ConstructHub provides `IPackageSource`\nimplementations for the public `npmjs.com` registry as well as for private\nCodeArtifact repositories:\n\n```ts\nimport * as codeartifact from '@aws-cdk/aws-codeartifact';\nimport { App, Stack } from '@aws-cdk/core';\nimport { sources, ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nconst registry = new codeartifact.CfnRegistry(stack, 'Registry', {\n // ....\n});\nnew ConstructHub(stack, 'ConstructHub', {\n packageSources: [\n new sources.NpmJs(), // Remove if you do NOT want npmjs.com packages\n new sources.CodeArtifact({ registry }),\n ],\n});\n```\n\nYou may also implement a custom `IPackageSource` if you want to index packages\nfrom alternate locations. In this case, the component you provide will be\nresponsible for sending notifications to an SQS Queue about newly discovered\npackages. You may refer to the [sources.NpmJs] and [sources.CodeArtifact]\nimplementations as a reference for hos this can be done.\n\nBy default, download counts of NPM packages will be fetched periodically from\nNPM's public API by a Lambda. Since this is not desirable if you are using a\nprivate package registry, this is automatically disabled if you specify your own\nvalue for `packageSources`. (But this can be re-enabled through the\n`fetchPackageStats` property if needed).\n\n[sources.NpmJs]: src/package-sources/npmjs.ts\n[sources.CodeArtifact]: src/package-sources/code-artifact.ts\n\n#### Package deny list\n\nCertain packages may be undesirable to show in your self-hosted ConstructHub\ninstance. In order to prevent a package from ever being listed in construct hub,\nthe `denyList` property can be configured with a set of `DenyListRule` objects\nthat specify which package or package versions should never be lested:\n\n```ts\nimport { App, Stack } from '@aws-cdk/core';\nimport { ConstructHub } from 'construct-hub';\n\n// The usual... you might have used `cdk init app` instead!\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\n// Now to business!\nnew ConstructHub(stack, 'ConstructHub', {\n denyList: [\n // Denying _all_ versions of the \"sneaky-hackery\" package\n { packageName: 'sneaky-hackery', reason: 'Mines bitcoins wherever it gets installed' },\n // Denying _a specific_ version of the \"bad-release\" package\n { packageName: 'bad-release', version: '1.2.3', reason: 'CVE-####-#####' },\n ],\n});\n```\n\n#### Redirecting from additional domains\n\nYou can add additional domains that will be redirected to your primary Construct\nHub domain:\n\n```ts\nimport * as r53 from '@aws-cdk/aws-route53';\n\nconst myDomainZone = r53.HostedZone.fromHostedZoneAttributes(this, 'MyDomainZone', {\n hostedZoneId: 'AZ1234',\n zoneName: 'my.domain.com',\n});\n\nnew ConstructHub(this, 'ConstructHub', {\n additionalDomains: [ { hostedZone: myDomainZone } ]\n});\n```\n\nThis will set up full domain redirect using Amazon S3 and Amazon CloudFront. All\nrequests will be redirected to your primary Construct Hub domain.\n\n#### Decrease deployment footprint\n\nBy default, ConstructHub executes the documentation rendering process in the\ncontext of isolated subnets. This is a defense-in-depth mechanism to mitigate\nthe risks associated with downloading aribtrary (un-trusted) *npm packages* and\ntheir dependency closures.\n\nThis layer of security implies the creation of a number of resources that can\nincrease the operating cost of your self-hosted instance: several VPC endpoints\nare created, an internal CodeArtifact repository needs to be provisioned, etc...\n\nWhile we generally recommend leaving these features enabled, if your self-hosted\nConstructHub instance only indexes *trusted* packages (as could be the case for\nan instance that does not list packages from the public `npmjs.com` registry),\nyou may set the `isolateLambdas` setting to `false`.\n\n## :gear: Operating a self-hosted instance\n\n1. [Application Overview](./docs/application-overview.md) provides a high-level\n description of the components that make a ConstructHub instance. This is a\n great starting point for people who consider operating a self-hosted instance\n of ConstructHub; and for new operators on-boarding the platform.\n\n1. [Operator Runbook](./docs/operator-runbook.md) is a series of diagnostics and\n troubleshooting guides indended for operators to have a quick and easy way to\n navigate a ConstructHub instance when they are reacting to an alarm or bug\n report.\n\n### :baby_chick: Deployment Canaries\n\nConstruct Hub provides several built-in validation mechanisms to make sure the\ndeployment of your instance is continuously operating as expected.\n\nThese mechanisms come in the form of canary testers that are part of the\nConstructHub deployment stack. Each canary runs periodically and performs a\ndifferent check, triggering a different CloudWatch alarm in case it detects a\nfailure.\n\nWe recommend that you use staged deployments, and block promotions to the\nproduction stage in case any preivous stage triggers an alarm within a specific\ntimeframe.\n\n#### Discovery Canary\n\nWhen configuring an `NpmJs` package source, a package discovery canary can be\nenabled using the `enableCanary` property (and optionally configured using the\n`canaryPackage` and `canarySla` properties). This feature is activated by\ndefault and monitors availability of releases of the `construct-hub-probe` npm\npackage in the ConstructHub instance.\n\nProbe packages, such as `construct-hub-probe` are published frequently (e.g:\nevery 3 hours or more frequently), and can be used to ensure the ConstructHub\ninstance correctly discovers, indexes and represents those packages.\n\nIf a different package or SLA should be used, you can configure the `NpmJs`\npackage source manually like so:\n\n```ts\nimport * as codeartifact from '@aws-cdk/aws-codeartifact';\nimport { App, Stack } from '@aws-cdk/core';\nimport { sources, ConstructHub } from 'construct-hub';\n\nconst app = new App();\nconst stack = new Stack(app, 'StackName', { /* ... */ });\n\nnew ConstructHub(stack, 'ConstructHub', {\n // ...\n packageSources: [\n // ...\n new sources.NpmJs({\n enableCanary: true, // This is the default\n canaryPackage: '@acme/my-constructhub-probe',\n canarySla: Duration.minutes(30),\n }),\n // ...\n ],\n // ...\n});\n```\n\nIn case the new package isn't fully available in the predefined SLA, a\n**high severity** CloudWatch alarm will trigger, which will in turn trigger\nthe configured action for low severity alarms.\n\n> See [Monitoring & Alarms](./docs/application-overview.md#monitoring--alarming)\n\nThe operator runbook contains [instructions](./docs/operator-runbook.md) on how\nto diagnose and mitigate the root cause of the failure.\n\n### :nail_care: Customizing the frontend\n\nThere are a number of customizations available in order to make your private\nconstruct hub better tailored to your organization.\n\n#### Package Tags\n\nConfiguring package tags allows you to compute additional labels to be applied\nto packages. These can be used to indicate to users which packages are owned by\ntrusted organizations, or any other arbitrary conditions, and can be referenced\nwhile searching.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n id: 'official',\n condition: TagCondition.field('name').eq('construct-hub'),\n keyword: {\n label: 'Official',\n color: '#00FF00',\n },\n highlight: {\n label: 'Vended by AWS',\n color: '#00FF00',\n }\n }]\n});\n```\n\nThe above example will result in packages with the `name` of `construct-hub` to\nreceive the `Official` tag, which is colored green and displayed amongst the\nlist of keywords. Additionally the `highlight` key shows this as a highlighted\nitem on the package's card.\n\nThe `searchFilter` key can also be used to show tags as search filters grouped\ntogether.\n\n```ts\nconst authorsGroup = new PackageTagGroup(\"authors\", {\n label: \"Authors\",\n tooltip: \"Information about the authors filter\",\n filterType: FilterType.checkbox(),\n});\n\nconst isAws = TagCondition.field('name').eq('construct-hub');\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n id: 'AWS',\n condition: isAws,\n searchFilter: {\n group: authorsGroup,\n display: 'AWS',\n },\n }, {\n id: 'Community',\n condition: TagCondition.not(isAws),\n searchFilter: {\n group: authorsGroup,\n display: 'AWS',\n },\n }]\n});\n```\n\nThe above will show a list of `Authors` filters on the search results page\nwith a checkbox for each `AWS` and `Community` packages, allowing users to\nfilter results by the presence of these tags.\n\nCombinations of conditions are also supported:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n label: 'Official',\n color: '#00FF00',\n condition: TagCondition.or(\n TagCondition.field('name').eq('construct-hub'),\n TagCondition.field('name').eq('construct-hub-webapp'),\n ),\n }]\n});\n\n// or more succintly if you have a long list\ncondition: TagCondition.or(\n ...['construct-hub', 'construct-hub-webapp', '...',]\n .map(name => TagCondition.field('name').eq(name))\n),\n```\n\nYou can assert against any value within package json including nested ones.\n\n```ts\nTagCondition.field('constructHub', 'nested', 'key').eq('value');\n\n// checks\npackageJson?.constructHub?.nested?.key === value;\n```\n\n#### Package Links\n\nConfiguring package links allows you to replace the `Repository`, `License`,\nand `Registry` links on the package details page with whatever you choose.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageLinks: [{\n linkLabel: 'Service Level Agreement',\n configKey: 'SLA',\n }, {\n linkLabel: 'Contact',\n configKey: 'Contact',\n linkText: 'Email Me!',\n allowedDomains: ['me.com'],\n }]\n});\n```\n\nThis would allow publishers to add the following to their package.json:\n\n```json\n\"constructHub\": {\n \"packageLinks\": {\n \"SLA\": \"https://support.mypackage.com\",\n \"Contact\": \"me.com/contact\"\n }\n}\n```\n\nThen the links on the corresponding package page would show these items as\nconfigured.\n\n#### Home Page\n\nThe home page is divided into sections, each with a header and list of packages.\nCurrently, for a given section you can display either the most recently updated\npackages, or a curated list of packages.\n\nFor example:\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n featuredPackages: {\n sections: [\n {\n name: \"Recently updated\",\n showLastUpdated: 4\n },\n {\n name: \"From the AWS CDK\",\n showPackages: [\n {\n name: \"@aws-cdk/core\"\n },\n {\n name: \"@aws-cdk/aws-s3\",\n comment: \"One of the most popular AWS CDK libraries!\"\n },\n {\n name: \"@aws-cdk/aws-lambda\"\n },\n {\n name: \"@aws-cdk/pipelines\"\n comment: \"The pipelines L3 construct library abstracts away many of the details of managing software deployment within AWS.\"\n }\n ]\n }\n ]\n }\n});\n```\n\n#### Browse Categories\n\nThe Construct Hub home page includes a section that displays a set of buttons\nthat represent browsing categories (e.g. \"Databases\", \"Monitoring\",\n\"Serverless\", etc).\n\nYou can use the `categories` option to configure these categories. Each category\nis defined by a `title` and a `url`, which will be the link associated with the\nbutton.\n\n```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n categories: [\n { title: 'Databases', url: '?keywords=databases' },\n { title: 'Monitoring', url: '?q=monitoring' },\n { title: 'Partners', url: '?tags=aws-partner' }\n ]\n});\n```\n\n#### Feature Flags\n\nFeature flags for the web app can be used to enable or disable experimental\nfeatures. These can be customized through the `featureFlags` property - for\nmore information about the available flags, check the documentation for\n<https://github.com/cdklabs/construct-hub-webapp/>.\n\n## :raised_hand: Contributing\n\nIf you are looking to contribute to this project, but don't know where to start,\nhave a look at our [contributing guide](CONTRIBUTING.md)!\n\n## :cop: Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more\ninformation.\n\n## :balance_scale: License\n\nThis project is licensed under the Apache-2.0 License.\n"
1868
1868
  },
1869
1869
  "repository": {
1870
1870
  "type": "git",
@@ -2049,7 +2049,7 @@
2049
2049
  "kind": "interface",
2050
2050
  "locationInModule": {
2051
2051
  "filename": "src/construct-hub.ts",
2052
- "line": 193
2052
+ "line": 199
2053
2053
  },
2054
2054
  "name": "CodeArtifactDomainProps",
2055
2055
  "properties": [
@@ -2062,7 +2062,7 @@
2062
2062
  "immutable": true,
2063
2063
  "locationInModule": {
2064
2064
  "filename": "src/construct-hub.ts",
2065
- "line": 197
2065
+ "line": 203
2066
2066
  },
2067
2067
  "name": "name",
2068
2068
  "type": {
@@ -2078,7 +2078,7 @@
2078
2078
  "immutable": true,
2079
2079
  "locationInModule": {
2080
2080
  "filename": "src/construct-hub.ts",
2081
- "line": 203
2081
+ "line": 209
2082
2082
  },
2083
2083
  "name": "upstreams",
2084
2084
  "optional": true,
@@ -2108,7 +2108,7 @@
2108
2108
  },
2109
2109
  "locationInModule": {
2110
2110
  "filename": "src/construct-hub.ts",
2111
- "line": 212
2111
+ "line": 218
2112
2112
  },
2113
2113
  "parameters": [
2114
2114
  {
@@ -2138,7 +2138,7 @@
2138
2138
  "kind": "class",
2139
2139
  "locationInModule": {
2140
2140
  "filename": "src/construct-hub.ts",
2141
- "line": 209
2141
+ "line": 215
2142
2142
  },
2143
2143
  "name": "ConstructHub",
2144
2144
  "properties": [
@@ -2150,7 +2150,7 @@
2150
2150
  "immutable": true,
2151
2151
  "locationInModule": {
2152
2152
  "filename": "src/construct-hub.ts",
2153
- "line": 403
2153
+ "line": 410
2154
2154
  },
2155
2155
  "name": "grantPrincipal",
2156
2156
  "overrides": "@aws-cdk/aws-iam.IGrantable",
@@ -2165,7 +2165,7 @@
2165
2165
  "immutable": true,
2166
2166
  "locationInModule": {
2167
2167
  "filename": "src/construct-hub.ts",
2168
- "line": 407
2168
+ "line": 414
2169
2169
  },
2170
2170
  "name": "ingestionQueue",
2171
2171
  "type": {
@@ -2186,7 +2186,7 @@
2186
2186
  "kind": "interface",
2187
2187
  "locationInModule": {
2188
2188
  "filename": "src/construct-hub.ts",
2189
- "line": 34
2189
+ "line": 35
2190
2190
  },
2191
2191
  "name": "ConstructHubProps",
2192
2192
  "properties": [
@@ -2200,7 +2200,7 @@
2200
2200
  "immutable": true,
2201
2201
  "locationInModule": {
2202
2202
  "filename": "src/construct-hub.ts",
2203
- "line": 182
2203
+ "line": 188
2204
2204
  },
2205
2205
  "name": "additionalDomains",
2206
2206
  "optional": true,
@@ -2222,7 +2222,7 @@
2222
2222
  "immutable": true,
2223
2223
  "locationInModule": {
2224
2224
  "filename": "src/construct-hub.ts",
2225
- "line": 43
2225
+ "line": 44
2226
2226
  },
2227
2227
  "name": "alarmActions",
2228
2228
  "optional": true,
@@ -2240,7 +2240,7 @@
2240
2240
  "immutable": true,
2241
2241
  "locationInModule": {
2242
2242
  "filename": "src/construct-hub.ts",
2243
- "line": 105
2243
+ "line": 106
2244
2244
  },
2245
2245
  "name": "allowedLicenses",
2246
2246
  "optional": true,
@@ -2262,7 +2262,7 @@
2262
2262
  "immutable": true,
2263
2263
  "locationInModule": {
2264
2264
  "filename": "src/construct-hub.ts",
2265
- "line": 84
2265
+ "line": 85
2266
2266
  },
2267
2267
  "name": "backendDashboardName",
2268
2268
  "optional": true,
@@ -2280,7 +2280,7 @@
2280
2280
  "immutable": true,
2281
2281
  "locationInModule": {
2282
2282
  "filename": "src/construct-hub.ts",
2283
- "line": 153
2283
+ "line": 159
2284
2284
  },
2285
2285
  "name": "categories",
2286
2286
  "optional": true,
@@ -2304,7 +2304,7 @@
2304
2304
  "immutable": true,
2305
2305
  "locationInModule": {
2306
2306
  "filename": "src/construct-hub.ts",
2307
- "line": 116
2307
+ "line": 117
2308
2308
  },
2309
2309
  "name": "codeArtifactDomain",
2310
2310
  "optional": true,
@@ -2322,7 +2322,7 @@
2322
2322
  "immutable": true,
2323
2323
  "locationInModule": {
2324
2324
  "filename": "src/construct-hub.ts",
2325
- "line": 91
2325
+ "line": 92
2326
2326
  },
2327
2327
  "name": "denyList",
2328
2328
  "optional": true,
@@ -2344,7 +2344,7 @@
2344
2344
  "immutable": true,
2345
2345
  "locationInModule": {
2346
2346
  "filename": "src/construct-hub.ts",
2347
- "line": 38
2347
+ "line": 39
2348
2348
  },
2349
2349
  "name": "domain",
2350
2350
  "optional": true,
@@ -2364,7 +2364,7 @@
2364
2364
  "immutable": true,
2365
2365
  "locationInModule": {
2366
2366
  "filename": "src/construct-hub.ts",
2367
- "line": 164
2367
+ "line": 170
2368
2368
  },
2369
2369
  "name": "failoverStorage",
2370
2370
  "optional": true,
@@ -2382,7 +2382,7 @@
2382
2382
  "immutable": true,
2383
2383
  "locationInModule": {
2384
2384
  "filename": "src/construct-hub.ts",
2385
- "line": 132
2385
+ "line": 138
2386
2386
  },
2387
2387
  "name": "featuredPackages",
2388
2388
  "optional": true,
@@ -2399,7 +2399,7 @@
2399
2399
  "immutable": true,
2400
2400
  "locationInModule": {
2401
2401
  "filename": "src/construct-hub.ts",
2402
- "line": 137
2402
+ "line": 143
2403
2403
  },
2404
2404
  "name": "featureFlags",
2405
2405
  "optional": true,
@@ -2417,7 +2417,7 @@
2417
2417
  "immutable": true,
2418
2418
  "locationInModule": {
2419
2419
  "filename": "src/construct-hub.ts",
2420
- "line": 147
2420
+ "line": 153
2421
2421
  },
2422
2422
  "name": "fetchPackageStats",
2423
2423
  "optional": true,
@@ -2436,7 +2436,7 @@
2436
2436
  "immutable": true,
2437
2437
  "locationInModule": {
2438
2438
  "filename": "src/construct-hub.ts",
2439
- "line": 57
2439
+ "line": 58
2440
2440
  },
2441
2441
  "name": "isolateSensitiveTasks",
2442
2442
  "optional": true,
@@ -2456,7 +2456,7 @@
2456
2456
  "immutable": true,
2457
2457
  "locationInModule": {
2458
2458
  "filename": "src/construct-hub.ts",
2459
- "line": 78
2459
+ "line": 79
2460
2460
  },
2461
2461
  "name": "logRetention",
2462
2462
  "optional": true,
@@ -2473,7 +2473,7 @@
2473
2473
  "immutable": true,
2474
2474
  "locationInModule": {
2475
2475
  "filename": "src/construct-hub.ts",
2476
- "line": 121
2476
+ "line": 122
2477
2477
  },
2478
2478
  "name": "packageLinks",
2479
2479
  "optional": true,
@@ -2496,7 +2496,7 @@
2496
2496
  "immutable": true,
2497
2497
  "locationInModule": {
2498
2498
  "filename": "src/construct-hub.ts",
2499
- "line": 98
2499
+ "line": 99
2500
2500
  },
2501
2501
  "name": "packageSources",
2502
2502
  "optional": true,
@@ -2509,6 +2509,28 @@
2509
2509
  }
2510
2510
  }
2511
2511
  },
2512
+ {
2513
+ "abstract": true,
2514
+ "docs": {
2515
+ "stability": "experimental",
2516
+ "summary": "Optional configuration for grouping custom package tags."
2517
+ },
2518
+ "immutable": true,
2519
+ "locationInModule": {
2520
+ "filename": "src/construct-hub.ts",
2521
+ "line": 132
2522
+ },
2523
+ "name": "packageTagGroups",
2524
+ "optional": true,
2525
+ "type": {
2526
+ "collection": {
2527
+ "elementtype": {
2528
+ "fqn": "construct-hub.PackageTagGroup"
2529
+ },
2530
+ "kind": "array"
2531
+ }
2532
+ }
2533
+ },
2512
2534
  {
2513
2535
  "abstract": true,
2514
2536
  "docs": {
@@ -2518,7 +2540,7 @@
2518
2540
  "immutable": true,
2519
2541
  "locationInModule": {
2520
2542
  "filename": "src/construct-hub.ts",
2521
- "line": 126
2543
+ "line": 127
2522
2544
  },
2523
2545
  "name": "packageTags",
2524
2546
  "optional": true,
@@ -2540,7 +2562,7 @@
2540
2562
  "immutable": true,
2541
2563
  "locationInModule": {
2542
2564
  "filename": "src/construct-hub.ts",
2543
- "line": 187
2565
+ "line": 193
2544
2566
  },
2545
2567
  "name": "preloadScript",
2546
2568
  "optional": true,
@@ -2560,7 +2582,7 @@
2560
2582
  "immutable": true,
2561
2583
  "locationInModule": {
2562
2584
  "filename": "src/construct-hub.ts",
2563
- "line": 174
2585
+ "line": 180
2564
2586
  },
2565
2587
  "name": "reprocessFrequency",
2566
2588
  "optional": true,
@@ -2579,7 +2601,7 @@
2579
2601
  "immutable": true,
2580
2602
  "locationInModule": {
2581
2603
  "filename": "src/construct-hub.ts",
2582
- "line": 71
2604
+ "line": 72
2583
2605
  },
2584
2606
  "name": "sensitiveTaskIsolation",
2585
2607
  "optional": true,
@@ -3011,6 +3033,108 @@
3011
3033
  ],
3012
3034
  "symbolId": "src/webapp/index:FeaturedPackagesSection"
3013
3035
  },
3036
+ "construct-hub.FilterType": {
3037
+ "abstract": true,
3038
+ "assembly": "construct-hub",
3039
+ "docs": {
3040
+ "stability": "experimental"
3041
+ },
3042
+ "fqn": "construct-hub.FilterType",
3043
+ "initializer": {
3044
+ "docs": {
3045
+ "stability": "experimental"
3046
+ }
3047
+ },
3048
+ "kind": "class",
3049
+ "locationInModule": {
3050
+ "filename": "src/package-tag-group/index.ts",
3051
+ "line": 5
3052
+ },
3053
+ "methods": [
3054
+ {
3055
+ "docs": {
3056
+ "stability": "experimental"
3057
+ },
3058
+ "locationInModule": {
3059
+ "filename": "src/package-tag-group/index.ts",
3060
+ "line": 6
3061
+ },
3062
+ "name": "checkbox",
3063
+ "returns": {
3064
+ "type": {
3065
+ "fqn": "construct-hub.FilterType"
3066
+ }
3067
+ },
3068
+ "static": true
3069
+ },
3070
+ {
3071
+ "docs": {
3072
+ "stability": "experimental"
3073
+ },
3074
+ "locationInModule": {
3075
+ "filename": "src/package-tag-group/index.ts",
3076
+ "line": 10
3077
+ },
3078
+ "name": "radio",
3079
+ "returns": {
3080
+ "type": {
3081
+ "fqn": "construct-hub.FilterType"
3082
+ }
3083
+ },
3084
+ "static": true
3085
+ },
3086
+ {
3087
+ "abstract": true,
3088
+ "docs": {
3089
+ "stability": "experimental"
3090
+ },
3091
+ "locationInModule": {
3092
+ "filename": "src/package-tag-group/index.ts",
3093
+ "line": 14
3094
+ },
3095
+ "name": "bind",
3096
+ "returns": {
3097
+ "type": {
3098
+ "fqn": "construct-hub.FilterTypeValue"
3099
+ }
3100
+ }
3101
+ }
3102
+ ],
3103
+ "name": "FilterType",
3104
+ "symbolId": "src/package-tag-group/index:FilterType"
3105
+ },
3106
+ "construct-hub.FilterTypeValue": {
3107
+ "assembly": "construct-hub",
3108
+ "datatype": true,
3109
+ "docs": {
3110
+ "stability": "experimental"
3111
+ },
3112
+ "fqn": "construct-hub.FilterTypeValue",
3113
+ "kind": "interface",
3114
+ "locationInModule": {
3115
+ "filename": "src/package-tag-group/index.ts",
3116
+ "line": 1
3117
+ },
3118
+ "name": "FilterTypeValue",
3119
+ "properties": [
3120
+ {
3121
+ "abstract": true,
3122
+ "docs": {
3123
+ "stability": "experimental"
3124
+ },
3125
+ "immutable": true,
3126
+ "locationInModule": {
3127
+ "filename": "src/package-tag-group/index.ts",
3128
+ "line": 2
3129
+ },
3130
+ "name": "type",
3131
+ "type": {
3132
+ "primitive": "string"
3133
+ }
3134
+ }
3135
+ ],
3136
+ "symbolId": "src/package-tag-group/index:FilterTypeValue"
3137
+ },
3014
3138
  "construct-hub.Highlight": {
3015
3139
  "assembly": "construct-hub",
3016
3140
  "datatype": true,
@@ -3021,7 +3145,7 @@
3021
3145
  "kind": "interface",
3022
3146
  "locationInModule": {
3023
3147
  "filename": "src/package-tag/index.ts",
3024
- "line": 15
3148
+ "line": 17
3025
3149
  },
3026
3150
  "name": "Highlight",
3027
3151
  "properties": [
@@ -3034,7 +3158,7 @@
3034
3158
  "immutable": true,
3035
3159
  "locationInModule": {
3036
3160
  "filename": "src/package-tag/index.ts",
3037
- "line": 5
3161
+ "line": 7
3038
3162
  },
3039
3163
  "name": "label",
3040
3164
  "type": {
@@ -3050,7 +3174,7 @@
3050
3174
  "immutable": true,
3051
3175
  "locationInModule": {
3052
3176
  "filename": "src/package-tag/index.ts",
3053
- "line": 10
3177
+ "line": 12
3054
3178
  },
3055
3179
  "name": "color",
3056
3180
  "optional": true,
@@ -3067,7 +3191,7 @@
3067
3191
  "immutable": true,
3068
3192
  "locationInModule": {
3069
3193
  "filename": "src/package-tag/index.ts",
3070
- "line": 19
3194
+ "line": 21
3071
3195
  },
3072
3196
  "name": "icon",
3073
3197
  "optional": true,
@@ -3339,7 +3463,7 @@
3339
3463
  "kind": "enum",
3340
3464
  "locationInModule": {
3341
3465
  "filename": "src/construct-hub.ts",
3342
- "line": 522
3466
+ "line": 529
3343
3467
  },
3344
3468
  "members": [
3345
3469
  {
@@ -3379,7 +3503,7 @@
3379
3503
  "kind": "interface",
3380
3504
  "locationInModule": {
3381
3505
  "filename": "src/package-tag/index.ts",
3382
- "line": 13
3506
+ "line": 15
3383
3507
  },
3384
3508
  "name": "Keyword",
3385
3509
  "properties": [
@@ -3392,7 +3516,7 @@
3392
3516
  "immutable": true,
3393
3517
  "locationInModule": {
3394
3518
  "filename": "src/package-tag/index.ts",
3395
- "line": 5
3519
+ "line": 7
3396
3520
  },
3397
3521
  "name": "label",
3398
3522
  "type": {
@@ -3408,7 +3532,7 @@
3408
3532
  "immutable": true,
3409
3533
  "locationInModule": {
3410
3534
  "filename": "src/package-tag/index.ts",
3411
- "line": 10
3535
+ "line": 12
3412
3536
  },
3413
3537
  "name": "color",
3414
3538
  "optional": true,
@@ -3811,7 +3935,7 @@
3811
3935
  "kind": "interface",
3812
3936
  "locationInModule": {
3813
3937
  "filename": "src/package-tag/index.ts",
3814
- "line": 63
3938
+ "line": 71
3815
3939
  },
3816
3940
  "name": "PackageTag",
3817
3941
  "properties": [
@@ -3824,7 +3948,7 @@
3824
3948
  "immutable": true,
3825
3949
  "locationInModule": {
3826
3950
  "filename": "src/package-tag/index.ts",
3827
- "line": 68
3951
+ "line": 76
3828
3952
  },
3829
3953
  "name": "condition",
3830
3954
  "type": {
@@ -3844,7 +3968,7 @@
3844
3968
  "kind": "interface",
3845
3969
  "locationInModule": {
3846
3970
  "filename": "src/package-tag/index.ts",
3847
- "line": 34
3971
+ "line": 42
3848
3972
  },
3849
3973
  "name": "PackageTagBase",
3850
3974
  "properties": [
@@ -3858,7 +3982,7 @@
3858
3982
  "immutable": true,
3859
3983
  "locationInModule": {
3860
3984
  "filename": "src/package-tag/index.ts",
3861
- "line": 38
3985
+ "line": 46
3862
3986
  },
3863
3987
  "name": "id",
3864
3988
  "type": {
@@ -3875,7 +3999,7 @@
3875
3999
  "immutable": true,
3876
4000
  "locationInModule": {
3877
4001
  "filename": "src/package-tag/index.ts",
3878
- "line": 44
4002
+ "line": 52
3879
4003
  },
3880
4004
  "name": "highlight",
3881
4005
  "optional": true,
@@ -3893,7 +4017,7 @@
3893
4017
  "immutable": true,
3894
4018
  "locationInModule": {
3895
4019
  "filename": "src/package-tag/index.ts",
3896
- "line": 50
4020
+ "line": 58
3897
4021
  },
3898
4022
  "name": "keyword",
3899
4023
  "optional": true,
@@ -3911,7 +4035,7 @@
3911
4035
  "immutable": true,
3912
4036
  "locationInModule": {
3913
4037
  "filename": "src/package-tag/index.ts",
3914
- "line": 56
4038
+ "line": 64
3915
4039
  },
3916
4040
  "name": "searchFilter",
3917
4041
  "optional": true,
@@ -3936,7 +4060,7 @@
3936
4060
  "kind": "interface",
3937
4061
  "locationInModule": {
3938
4062
  "filename": "src/package-tag/index.ts",
3939
- "line": 85
4063
+ "line": 93
3940
4064
  },
3941
4065
  "name": "PackageTagConfig",
3942
4066
  "properties": [
@@ -3948,7 +4072,7 @@
3948
4072
  "immutable": true,
3949
4073
  "locationInModule": {
3950
4074
  "filename": "src/package-tag/index.ts",
3951
- "line": 86
4075
+ "line": 94
3952
4076
  },
3953
4077
  "name": "condition",
3954
4078
  "type": {
@@ -3958,6 +4082,273 @@
3958
4082
  ],
3959
4083
  "symbolId": "src/package-tag/index:PackageTagConfig"
3960
4084
  },
4085
+ "construct-hub.PackageTagGroup": {
4086
+ "assembly": "construct-hub",
4087
+ "docs": {
4088
+ "stability": "experimental",
4089
+ "summary": "Defines a custom package tag group."
4090
+ },
4091
+ "fqn": "construct-hub.PackageTagGroup",
4092
+ "initializer": {
4093
+ "docs": {
4094
+ "stability": "experimental"
4095
+ },
4096
+ "locationInModule": {
4097
+ "filename": "src/package-tag-group/index.ts",
4098
+ "line": 59
4099
+ },
4100
+ "parameters": [
4101
+ {
4102
+ "name": "id",
4103
+ "type": {
4104
+ "primitive": "string"
4105
+ }
4106
+ },
4107
+ {
4108
+ "name": "props",
4109
+ "optional": true,
4110
+ "type": {
4111
+ "fqn": "construct-hub.PackageTagGroupProps"
4112
+ }
4113
+ }
4114
+ ]
4115
+ },
4116
+ "kind": "class",
4117
+ "locationInModule": {
4118
+ "filename": "src/package-tag-group/index.ts",
4119
+ "line": 54
4120
+ },
4121
+ "methods": [
4122
+ {
4123
+ "docs": {
4124
+ "stability": "experimental"
4125
+ },
4126
+ "locationInModule": {
4127
+ "filename": "src/package-tag-group/index.ts",
4128
+ "line": 65
4129
+ },
4130
+ "name": "bind",
4131
+ "returns": {
4132
+ "type": {
4133
+ "fqn": "construct-hub.PackageTagGroupConfig"
4134
+ }
4135
+ }
4136
+ }
4137
+ ],
4138
+ "name": "PackageTagGroup",
4139
+ "properties": [
4140
+ {
4141
+ "docs": {
4142
+ "stability": "experimental"
4143
+ },
4144
+ "immutable": true,
4145
+ "locationInModule": {
4146
+ "filename": "src/package-tag-group/index.ts",
4147
+ "line": 59
4148
+ },
4149
+ "name": "id",
4150
+ "type": {
4151
+ "primitive": "string"
4152
+ }
4153
+ },
4154
+ {
4155
+ "docs": {
4156
+ "stability": "experimental"
4157
+ },
4158
+ "immutable": true,
4159
+ "locationInModule": {
4160
+ "filename": "src/package-tag-group/index.ts",
4161
+ "line": 57
4162
+ },
4163
+ "name": "filterType",
4164
+ "optional": true,
4165
+ "type": {
4166
+ "primitive": "string"
4167
+ }
4168
+ },
4169
+ {
4170
+ "docs": {
4171
+ "stability": "experimental"
4172
+ },
4173
+ "immutable": true,
4174
+ "locationInModule": {
4175
+ "filename": "src/package-tag-group/index.ts",
4176
+ "line": 55
4177
+ },
4178
+ "name": "label",
4179
+ "optional": true,
4180
+ "type": {
4181
+ "primitive": "string"
4182
+ }
4183
+ },
4184
+ {
4185
+ "docs": {
4186
+ "stability": "experimental"
4187
+ },
4188
+ "immutable": true,
4189
+ "locationInModule": {
4190
+ "filename": "src/package-tag-group/index.ts",
4191
+ "line": 56
4192
+ },
4193
+ "name": "tooltip",
4194
+ "optional": true,
4195
+ "type": {
4196
+ "primitive": "string"
4197
+ }
4198
+ }
4199
+ ],
4200
+ "symbolId": "src/package-tag-group/index:PackageTagGroup"
4201
+ },
4202
+ "construct-hub.PackageTagGroupConfig": {
4203
+ "assembly": "construct-hub",
4204
+ "datatype": true,
4205
+ "docs": {
4206
+ "stability": "experimental"
4207
+ },
4208
+ "fqn": "construct-hub.PackageTagGroupConfig",
4209
+ "kind": "interface",
4210
+ "locationInModule": {
4211
+ "filename": "src/package-tag-group/index.ts",
4212
+ "line": 44
4213
+ },
4214
+ "name": "PackageTagGroupConfig",
4215
+ "properties": [
4216
+ {
4217
+ "abstract": true,
4218
+ "docs": {
4219
+ "stability": "experimental"
4220
+ },
4221
+ "immutable": true,
4222
+ "locationInModule": {
4223
+ "filename": "src/package-tag-group/index.ts",
4224
+ "line": 45
4225
+ },
4226
+ "name": "id",
4227
+ "type": {
4228
+ "primitive": "string"
4229
+ }
4230
+ },
4231
+ {
4232
+ "abstract": true,
4233
+ "docs": {
4234
+ "stability": "experimental"
4235
+ },
4236
+ "immutable": true,
4237
+ "locationInModule": {
4238
+ "filename": "src/package-tag-group/index.ts",
4239
+ "line": 48
4240
+ },
4241
+ "name": "filterType",
4242
+ "optional": true,
4243
+ "type": {
4244
+ "primitive": "string"
4245
+ }
4246
+ },
4247
+ {
4248
+ "abstract": true,
4249
+ "docs": {
4250
+ "stability": "experimental"
4251
+ },
4252
+ "immutable": true,
4253
+ "locationInModule": {
4254
+ "filename": "src/package-tag-group/index.ts",
4255
+ "line": 46
4256
+ },
4257
+ "name": "label",
4258
+ "optional": true,
4259
+ "type": {
4260
+ "primitive": "string"
4261
+ }
4262
+ },
4263
+ {
4264
+ "abstract": true,
4265
+ "docs": {
4266
+ "stability": "experimental"
4267
+ },
4268
+ "immutable": true,
4269
+ "locationInModule": {
4270
+ "filename": "src/package-tag-group/index.ts",
4271
+ "line": 47
4272
+ },
4273
+ "name": "tooltip",
4274
+ "optional": true,
4275
+ "type": {
4276
+ "primitive": "string"
4277
+ }
4278
+ }
4279
+ ],
4280
+ "symbolId": "src/package-tag-group/index:PackageTagGroupConfig"
4281
+ },
4282
+ "construct-hub.PackageTagGroupProps": {
4283
+ "assembly": "construct-hub",
4284
+ "datatype": true,
4285
+ "docs": {
4286
+ "stability": "experimental"
4287
+ },
4288
+ "fqn": "construct-hub.PackageTagGroupProps",
4289
+ "kind": "interface",
4290
+ "locationInModule": {
4291
+ "filename": "src/package-tag-group/index.ts",
4292
+ "line": 29
4293
+ },
4294
+ "name": "PackageTagGroupProps",
4295
+ "properties": [
4296
+ {
4297
+ "abstract": true,
4298
+ "docs": {
4299
+ "remarks": "Defaults to checkbox if not specified",
4300
+ "stability": "experimental",
4301
+ "summary": "Allows to specify the group filter type."
4302
+ },
4303
+ "immutable": true,
4304
+ "locationInModule": {
4305
+ "filename": "src/package-tag-group/index.ts",
4306
+ "line": 41
4307
+ },
4308
+ "name": "filterType",
4309
+ "optional": true,
4310
+ "type": {
4311
+ "fqn": "construct-hub.FilterType"
4312
+ }
4313
+ },
4314
+ {
4315
+ "abstract": true,
4316
+ "docs": {
4317
+ "remarks": "Falls back to id if not provided",
4318
+ "stability": "experimental",
4319
+ "summary": "Group label to display."
4320
+ },
4321
+ "immutable": true,
4322
+ "locationInModule": {
4323
+ "filename": "src/package-tag-group/index.ts",
4324
+ "line": 33
4325
+ },
4326
+ "name": "label",
4327
+ "optional": true,
4328
+ "type": {
4329
+ "primitive": "string"
4330
+ }
4331
+ },
4332
+ {
4333
+ "abstract": true,
4334
+ "docs": {
4335
+ "stability": "experimental",
4336
+ "summary": "Optional message to show within a tooltip next to the filter label."
4337
+ },
4338
+ "immutable": true,
4339
+ "locationInModule": {
4340
+ "filename": "src/package-tag-group/index.ts",
4341
+ "line": 37
4342
+ },
4343
+ "name": "tooltip",
4344
+ "optional": true,
4345
+ "type": {
4346
+ "primitive": "string"
4347
+ }
4348
+ }
4349
+ ],
4350
+ "symbolId": "src/package-tag-group/index:PackageTagGroupProps"
4351
+ },
3961
4352
  "construct-hub.S3StorageFactory": {
3962
4353
  "assembly": "construct-hub",
3963
4354
  "base": "@aws-cdk/core.Construct",
@@ -4093,7 +4484,7 @@
4093
4484
  "kind": "interface",
4094
4485
  "locationInModule": {
4095
4486
  "filename": "src/package-tag/index.ts",
4096
- "line": 22
4487
+ "line": 24
4097
4488
  },
4098
4489
  "name": "SearchFilter",
4099
4490
  "properties": [
@@ -4106,7 +4497,7 @@
4106
4497
  "immutable": true,
4107
4498
  "locationInModule": {
4108
4499
  "filename": "src/package-tag/index.ts",
4109
- "line": 26
4500
+ "line": 28
4110
4501
  },
4111
4502
  "name": "display",
4112
4503
  "type": {
@@ -4117,14 +4508,33 @@
4117
4508
  "abstract": true,
4118
4509
  "docs": {
4119
4510
  "stability": "experimental",
4511
+ "summary": "PackageTagGroup to include filter in."
4512
+ },
4513
+ "immutable": true,
4514
+ "locationInModule": {
4515
+ "filename": "src/package-tag/index.ts",
4516
+ "line": 39
4517
+ },
4518
+ "name": "group",
4519
+ "optional": true,
4520
+ "type": {
4521
+ "fqn": "construct-hub.PackageTagGroup"
4522
+ }
4523
+ },
4524
+ {
4525
+ "abstract": true,
4526
+ "docs": {
4527
+ "deprecated": "use `group` instead",
4528
+ "stability": "deprecated",
4120
4529
  "summary": "Name of group to include filter in."
4121
4530
  },
4122
4531
  "immutable": true,
4123
4532
  "locationInModule": {
4124
4533
  "filename": "src/package-tag/index.ts",
4125
- "line": 31
4534
+ "line": 34
4126
4535
  },
4127
4536
  "name": "groupBy",
4537
+ "optional": true,
4128
4538
  "type": {
4129
4539
  "primitive": "string"
4130
4540
  }
@@ -12839,7 +13249,7 @@
12839
13249
  "kind": "class",
12840
13250
  "locationInModule": {
12841
13251
  "filename": "src/package-tag/index.ts",
12842
- "line": 92
13252
+ "line": 100
12843
13253
  },
12844
13254
  "methods": [
12845
13255
  {
@@ -12849,7 +13259,7 @@
12849
13259
  },
12850
13260
  "locationInModule": {
12851
13261
  "filename": "src/package-tag/index.ts",
12852
- "line": 97
13262
+ "line": 105
12853
13263
  },
12854
13264
  "name": "and",
12855
13265
  "parameters": [
@@ -12876,7 +13286,7 @@
12876
13286
  },
12877
13287
  "locationInModule": {
12878
13288
  "filename": "src/package-tag/index.ts",
12879
- "line": 122
13289
+ "line": 130
12880
13290
  },
12881
13291
  "name": "field",
12882
13292
  "parameters": [
@@ -12904,7 +13314,7 @@
12904
13314
  },
12905
13315
  "locationInModule": {
12906
13316
  "filename": "src/package-tag/index.ts",
12907
- "line": 112
13317
+ "line": 120
12908
13318
  },
12909
13319
  "name": "not",
12910
13320
  "parameters": [
@@ -12931,7 +13341,7 @@
12931
13341
  },
12932
13342
  "locationInModule": {
12933
13343
  "filename": "src/package-tag/index.ts",
12934
- "line": 105
13344
+ "line": 113
12935
13345
  },
12936
13346
  "name": "or",
12937
13347
  "parameters": [
@@ -12958,7 +13368,7 @@
12958
13368
  },
12959
13369
  "locationInModule": {
12960
13370
  "filename": "src/package-tag/index.ts",
12961
- "line": 126
13371
+ "line": 134
12962
13372
  },
12963
13373
  "name": "bind",
12964
13374
  "returns": {
@@ -12982,7 +13392,7 @@
12982
13392
  "kind": "interface",
12983
13393
  "locationInModule": {
12984
13394
  "filename": "src/package-tag/index.ts",
12985
- "line": 74
13395
+ "line": 82
12986
13396
  },
12987
13397
  "name": "TagConditionConfig",
12988
13398
  "properties": [
@@ -12994,7 +13404,7 @@
12994
13404
  "immutable": true,
12995
13405
  "locationInModule": {
12996
13406
  "filename": "src/package-tag/index.ts",
12997
- "line": 75
13407
+ "line": 83
12998
13408
  },
12999
13409
  "name": "type",
13000
13410
  "type": {
@@ -13009,7 +13419,7 @@
13009
13419
  "immutable": true,
13010
13420
  "locationInModule": {
13011
13421
  "filename": "src/package-tag/index.ts",
13012
- "line": 78
13422
+ "line": 86
13013
13423
  },
13014
13424
  "name": "children",
13015
13425
  "optional": true,
@@ -13030,7 +13440,7 @@
13030
13440
  "immutable": true,
13031
13441
  "locationInModule": {
13032
13442
  "filename": "src/package-tag/index.ts",
13033
- "line": 76
13443
+ "line": 84
13034
13444
  },
13035
13445
  "name": "key",
13036
13446
  "optional": true,
@@ -13051,7 +13461,7 @@
13051
13461
  "immutable": true,
13052
13462
  "locationInModule": {
13053
13463
  "filename": "src/package-tag/index.ts",
13054
- "line": 77
13464
+ "line": 85
13055
13465
  },
13056
13466
  "name": "value",
13057
13467
  "optional": true,
@@ -13075,7 +13485,7 @@
13075
13485
  },
13076
13486
  "locationInModule": {
13077
13487
  "filename": "src/package-tag/index.ts",
13078
- "line": 181
13488
+ "line": 189
13079
13489
  },
13080
13490
  "parameters": [
13081
13491
  {
@@ -13094,7 +13504,7 @@
13094
13504
  "kind": "class",
13095
13505
  "locationInModule": {
13096
13506
  "filename": "src/package-tag/index.ts",
13097
- "line": 180
13507
+ "line": 188
13098
13508
  },
13099
13509
  "methods": [
13100
13510
  {
@@ -13104,7 +13514,7 @@
13104
13514
  },
13105
13515
  "locationInModule": {
13106
13516
  "filename": "src/package-tag/index.ts",
13107
- "line": 187
13517
+ "line": 195
13108
13518
  },
13109
13519
  "name": "eq",
13110
13520
  "parameters": [
@@ -13128,7 +13538,7 @@
13128
13538
  },
13129
13539
  "locationInModule": {
13130
13540
  "filename": "src/package-tag/index.ts",
13131
- "line": 200
13541
+ "line": 208
13132
13542
  },
13133
13543
  "name": "includes",
13134
13544
  "parameters": [
@@ -13152,7 +13562,7 @@
13152
13562
  },
13153
13563
  "locationInModule": {
13154
13564
  "filename": "src/package-tag/index.ts",
13155
- "line": 213
13565
+ "line": 221
13156
13566
  },
13157
13567
  "name": "startsWith",
13158
13568
  "parameters": [
@@ -13183,7 +13593,7 @@
13183
13593
  "kind": "enum",
13184
13594
  "locationInModule": {
13185
13595
  "filename": "src/package-tag/index.ts",
13186
- "line": 132
13596
+ "line": 140
13187
13597
  },
13188
13598
  "members": [
13189
13599
  {
@@ -13833,6 +14243,6 @@
13833
14243
  "symbolId": "src/package-sources/npmjs:NpmJsProps"
13834
14244
  }
13835
14245
  },
13836
- "version": "0.3.182",
13837
- "fingerprint": "jbhF2yPkVTNOeDkLsK5/kQxmHBc5mlvmc5LrhX/z/Qw="
14246
+ "version": "0.3.183",
14247
+ "fingerprint": "bWLYpdb1Cu3CxG0ppAA9/DYOJOIUg6Vi2HBS8bIMj08="
13838
14248
  }