construct-hub 0.2.4 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
package/.jsii CHANGED
@@ -1814,7 +1814,7 @@
1814
1814
  },
1815
1815
  "name": "construct-hub",
1816
1816
  "readme": {
1817
- "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\n## :question: Getting Started\n\n> :warning: Disclaimer\n>\n> The [public instance of ConstructHub](https://constructs.dev) is currently in\n> *Developer Preview*.\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\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#### 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\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### :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 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```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## :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\n## :cop: Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more\ninformation.\n\n\n## :balance_scale: License\n\nThis project is licensed under the Apache-2.0 License.\n"
1817
+ "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\n## :question: Getting Started\n\n> :warning: Disclaimer\n>\n> The [public instance of ConstructHub](https://constructs.dev) is currently in\n> *Developer Preview*.\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\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#### 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\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### :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```ts\nnew ConstructHub(this, \"ConstructHub\", {\n ...myProps,\n packageTags: [{\n label: 'Official',\n color: '#00FF00',\n condition: TagCondition.field('name').eq('construct-hub'),\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.\n\nCombinations of conditions are also supported:\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```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```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## :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\n## :cop: Security\n\nSee [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more\ninformation.\n\n\n## :balance_scale: License\n\nThis project is licensed under the Apache-2.0 License.\n"
1818
1818
  },
1819
1819
  "repository": {
1820
1820
  "type": "git",
@@ -1945,7 +1945,7 @@
1945
1945
  "kind": "interface",
1946
1946
  "locationInModule": {
1947
1947
  "filename": "src/construct-hub.ts",
1948
- "line": 107
1948
+ "line": 113
1949
1949
  },
1950
1950
  "name": "CodeArtifactDomainProps",
1951
1951
  "properties": [
@@ -1958,7 +1958,7 @@
1958
1958
  "immutable": true,
1959
1959
  "locationInModule": {
1960
1960
  "filename": "src/construct-hub.ts",
1961
- "line": 111
1961
+ "line": 117
1962
1962
  },
1963
1963
  "name": "name",
1964
1964
  "type": {
@@ -1974,7 +1974,7 @@
1974
1974
  "immutable": true,
1975
1975
  "locationInModule": {
1976
1976
  "filename": "src/construct-hub.ts",
1977
- "line": 117
1977
+ "line": 123
1978
1978
  },
1979
1979
  "name": "upstreams",
1980
1980
  "optional": true,
@@ -2003,7 +2003,7 @@
2003
2003
  },
2004
2004
  "locationInModule": {
2005
2005
  "filename": "src/construct-hub.ts",
2006
- "line": 126
2006
+ "line": 132
2007
2007
  },
2008
2008
  "parameters": [
2009
2009
  {
@@ -2033,7 +2033,7 @@
2033
2033
  "kind": "class",
2034
2034
  "locationInModule": {
2035
2035
  "filename": "src/construct-hub.ts",
2036
- "line": 123
2036
+ "line": 129
2037
2037
  },
2038
2038
  "name": "ConstructHub",
2039
2039
  "properties": [
@@ -2045,7 +2045,7 @@
2045
2045
  "immutable": true,
2046
2046
  "locationInModule": {
2047
2047
  "filename": "src/construct-hub.ts",
2048
- "line": 242
2048
+ "line": 258
2049
2049
  },
2050
2050
  "name": "grantPrincipal",
2051
2051
  "overrides": "@aws-cdk/aws-iam.IGrantable",
@@ -2060,7 +2060,7 @@
2060
2060
  "immutable": true,
2061
2061
  "locationInModule": {
2062
2062
  "filename": "src/construct-hub.ts",
2063
- "line": 246
2063
+ "line": 262
2064
2064
  },
2065
2065
  "name": "ingestionQueue",
2066
2066
  "type": {
@@ -2080,7 +2080,7 @@
2080
2080
  "kind": "interface",
2081
2081
  "locationInModule": {
2082
2082
  "filename": "src/construct-hub.ts",
2083
- "line": 28
2083
+ "line": 29
2084
2084
  },
2085
2085
  "name": "ConstructHubProps",
2086
2086
  "properties": [
@@ -2093,7 +2093,7 @@
2093
2093
  "immutable": true,
2094
2094
  "locationInModule": {
2095
2095
  "filename": "src/construct-hub.ts",
2096
- "line": 37
2096
+ "line": 38
2097
2097
  },
2098
2098
  "name": "alarmActions",
2099
2099
  "optional": true,
@@ -2111,7 +2111,7 @@
2111
2111
  "immutable": true,
2112
2112
  "locationInModule": {
2113
2113
  "filename": "src/construct-hub.ts",
2114
- "line": 85
2114
+ "line": 86
2115
2115
  },
2116
2116
  "name": "allowedLicenses",
2117
2117
  "optional": true,
@@ -2133,7 +2133,7 @@
2133
2133
  "immutable": true,
2134
2134
  "locationInModule": {
2135
2135
  "filename": "src/construct-hub.ts",
2136
- "line": 64
2136
+ "line": 65
2137
2137
  },
2138
2138
  "name": "backendDashboardName",
2139
2139
  "optional": true,
@@ -2152,7 +2152,7 @@
2152
2152
  "immutable": true,
2153
2153
  "locationInModule": {
2154
2154
  "filename": "src/construct-hub.ts",
2155
- "line": 96
2155
+ "line": 97
2156
2156
  },
2157
2157
  "name": "codeArtifactDomain",
2158
2158
  "optional": true,
@@ -2170,7 +2170,7 @@
2170
2170
  "immutable": true,
2171
2171
  "locationInModule": {
2172
2172
  "filename": "src/construct-hub.ts",
2173
- "line": 71
2173
+ "line": 72
2174
2174
  },
2175
2175
  "name": "denyList",
2176
2176
  "optional": true,
@@ -2192,7 +2192,7 @@
2192
2192
  "immutable": true,
2193
2193
  "locationInModule": {
2194
2194
  "filename": "src/construct-hub.ts",
2195
- "line": 32
2195
+ "line": 33
2196
2196
  },
2197
2197
  "name": "domain",
2198
2198
  "optional": true,
@@ -2211,7 +2211,7 @@
2211
2211
  "immutable": true,
2212
2212
  "locationInModule": {
2213
2213
  "filename": "src/construct-hub.ts",
2214
- "line": 51
2214
+ "line": 52
2215
2215
  },
2216
2216
  "name": "isolateSensitiveTasks",
2217
2217
  "optional": true,
@@ -2231,7 +2231,7 @@
2231
2231
  "immutable": true,
2232
2232
  "locationInModule": {
2233
2233
  "filename": "src/construct-hub.ts",
2234
- "line": 58
2234
+ "line": 59
2235
2235
  },
2236
2236
  "name": "logRetention",
2237
2237
  "optional": true,
@@ -2248,7 +2248,7 @@
2248
2248
  "immutable": true,
2249
2249
  "locationInModule": {
2250
2250
  "filename": "src/construct-hub.ts",
2251
- "line": 101
2251
+ "line": 102
2252
2252
  },
2253
2253
  "name": "packageLinks",
2254
2254
  "optional": true,
@@ -2271,7 +2271,7 @@
2271
2271
  "immutable": true,
2272
2272
  "locationInModule": {
2273
2273
  "filename": "src/construct-hub.ts",
2274
- "line": 78
2274
+ "line": 79
2275
2275
  },
2276
2276
  "name": "packageSources",
2277
2277
  "optional": true,
@@ -2283,6 +2283,28 @@
2283
2283
  "kind": "array"
2284
2284
  }
2285
2285
  }
2286
+ },
2287
+ {
2288
+ "abstract": true,
2289
+ "docs": {
2290
+ "stability": "experimental",
2291
+ "summary": "Configuration for custom package tags."
2292
+ },
2293
+ "immutable": true,
2294
+ "locationInModule": {
2295
+ "filename": "src/construct-hub.ts",
2296
+ "line": 107
2297
+ },
2298
+ "name": "packageTags",
2299
+ "optional": true,
2300
+ "type": {
2301
+ "collection": {
2302
+ "elementtype": {
2303
+ "fqn": "construct-hub.PackageTag"
2304
+ },
2305
+ "kind": "array"
2306
+ }
2307
+ }
2286
2308
  }
2287
2309
  ]
2288
2310
  },
@@ -2726,7 +2748,7 @@
2726
2748
  "kind": "interface",
2727
2749
  "locationInModule": {
2728
2750
  "filename": "src/webapp/index.ts",
2729
- "line": 16
2751
+ "line": 17
2730
2752
  },
2731
2753
  "name": "PackageLinkConfig",
2732
2754
  "properties": [
@@ -2739,7 +2761,7 @@
2739
2761
  "immutable": true,
2740
2762
  "locationInModule": {
2741
2763
  "filename": "src/webapp/index.ts",
2742
- "line": 26
2764
+ "line": 27
2743
2765
  },
2744
2766
  "name": "configKey",
2745
2767
  "type": {
@@ -2755,7 +2777,7 @@
2755
2777
  "immutable": true,
2756
2778
  "locationInModule": {
2757
2779
  "filename": "src/webapp/index.ts",
2758
- "line": 20
2780
+ "line": 21
2759
2781
  },
2760
2782
  "name": "linkLabel",
2761
2783
  "type": {
@@ -2772,7 +2794,7 @@
2772
2794
  "immutable": true,
2773
2795
  "locationInModule": {
2774
2796
  "filename": "src/webapp/index.ts",
2775
- "line": 40
2797
+ "line": 41
2776
2798
  },
2777
2799
  "name": "allowedDomains",
2778
2800
  "optional": true,
@@ -2795,7 +2817,7 @@
2795
2817
  "immutable": true,
2796
2818
  "locationInModule": {
2797
2819
  "filename": "src/webapp/index.ts",
2798
- "line": 33
2820
+ "line": 34
2799
2821
  },
2800
2822
  "name": "linkText",
2801
2823
  "optional": true,
@@ -3007,6 +3029,138 @@
3007
3029
  }
3008
3030
  ]
3009
3031
  },
3032
+ "construct-hub.PackageTag": {
3033
+ "assembly": "construct-hub",
3034
+ "datatype": true,
3035
+ "docs": {
3036
+ "remarks": "Custom tags are\ndisplayed on the package details page, and can be used for searching.",
3037
+ "stability": "experimental",
3038
+ "summary": "Configuration for applying custom tags to relevant packages."
3039
+ },
3040
+ "fqn": "construct-hub.PackageTag",
3041
+ "kind": "interface",
3042
+ "locationInModule": {
3043
+ "filename": "src/package-tag/index.ts",
3044
+ "line": 17
3045
+ },
3046
+ "name": "PackageTag",
3047
+ "properties": [
3048
+ {
3049
+ "abstract": true,
3050
+ "docs": {
3051
+ "stability": "experimental",
3052
+ "summary": "The description of the logic that dictates whether the package has the tag applied."
3053
+ },
3054
+ "immutable": true,
3055
+ "locationInModule": {
3056
+ "filename": "src/package-tag/index.ts",
3057
+ "line": 22
3058
+ },
3059
+ "name": "condition",
3060
+ "type": {
3061
+ "fqn": "construct-hub.TagCondition"
3062
+ }
3063
+ },
3064
+ {
3065
+ "abstract": true,
3066
+ "docs": {
3067
+ "stability": "experimental",
3068
+ "summary": "The label for the tag being applied."
3069
+ },
3070
+ "immutable": true,
3071
+ "locationInModule": {
3072
+ "filename": "src/package-tag/index.ts",
3073
+ "line": 5
3074
+ },
3075
+ "name": "label",
3076
+ "type": {
3077
+ "primitive": "string"
3078
+ }
3079
+ },
3080
+ {
3081
+ "abstract": true,
3082
+ "docs": {
3083
+ "stability": "experimental",
3084
+ "summary": "The hex value string for the color of the tag when displayed."
3085
+ },
3086
+ "immutable": true,
3087
+ "locationInModule": {
3088
+ "filename": "src/package-tag/index.ts",
3089
+ "line": 10
3090
+ },
3091
+ "name": "color",
3092
+ "optional": true,
3093
+ "type": {
3094
+ "primitive": "string"
3095
+ }
3096
+ }
3097
+ ]
3098
+ },
3099
+ "construct-hub.PackageTagConfig": {
3100
+ "assembly": "construct-hub",
3101
+ "datatype": true,
3102
+ "docs": {
3103
+ "stability": "experimental",
3104
+ "summary": "Serialized tag declaration to be passed to lambdas via environment variables."
3105
+ },
3106
+ "fqn": "construct-hub.PackageTagConfig",
3107
+ "kind": "interface",
3108
+ "locationInModule": {
3109
+ "filename": "src/package-tag/index.ts",
3110
+ "line": 39
3111
+ },
3112
+ "name": "PackageTagConfig",
3113
+ "properties": [
3114
+ {
3115
+ "abstract": true,
3116
+ "docs": {
3117
+ "stability": "experimental"
3118
+ },
3119
+ "immutable": true,
3120
+ "locationInModule": {
3121
+ "filename": "src/package-tag/index.ts",
3122
+ "line": 40
3123
+ },
3124
+ "name": "condition",
3125
+ "type": {
3126
+ "fqn": "construct-hub.TagConditionConfig"
3127
+ }
3128
+ },
3129
+ {
3130
+ "abstract": true,
3131
+ "docs": {
3132
+ "stability": "experimental",
3133
+ "summary": "The label for the tag being applied."
3134
+ },
3135
+ "immutable": true,
3136
+ "locationInModule": {
3137
+ "filename": "src/package-tag/index.ts",
3138
+ "line": 5
3139
+ },
3140
+ "name": "label",
3141
+ "type": {
3142
+ "primitive": "string"
3143
+ }
3144
+ },
3145
+ {
3146
+ "abstract": true,
3147
+ "docs": {
3148
+ "stability": "experimental",
3149
+ "summary": "The hex value string for the color of the tag when displayed."
3150
+ },
3151
+ "immutable": true,
3152
+ "locationInModule": {
3153
+ "filename": "src/package-tag/index.ts",
3154
+ "line": 10
3155
+ },
3156
+ "name": "color",
3157
+ "optional": true,
3158
+ "type": {
3159
+ "primitive": "string"
3160
+ }
3161
+ }
3162
+ ]
3163
+ },
3010
3164
  "construct-hub.SpdxLicense": {
3011
3165
  "assembly": "construct-hub",
3012
3166
  "docs": {
@@ -11631,6 +11785,345 @@
11631
11785
  }
11632
11786
  ]
11633
11787
  },
11788
+ "construct-hub.TagCondition": {
11789
+ "abstract": true,
11790
+ "assembly": "construct-hub",
11791
+ "docs": {
11792
+ "stability": "experimental",
11793
+ "summary": "Condition for applying a custom tag to a package."
11794
+ },
11795
+ "fqn": "construct-hub.TagCondition",
11796
+ "initializer": {
11797
+ "docs": {
11798
+ "stability": "experimental"
11799
+ }
11800
+ },
11801
+ "kind": "class",
11802
+ "locationInModule": {
11803
+ "filename": "src/package-tag/index.ts",
11804
+ "line": 46
11805
+ },
11806
+ "methods": [
11807
+ {
11808
+ "docs": {
11809
+ "stability": "experimental",
11810
+ "summary": "Create an && condition which applies only when all condition arguments are true."
11811
+ },
11812
+ "locationInModule": {
11813
+ "filename": "src/package-tag/index.ts",
11814
+ "line": 51
11815
+ },
11816
+ "name": "and",
11817
+ "parameters": [
11818
+ {
11819
+ "name": "conds",
11820
+ "type": {
11821
+ "fqn": "construct-hub.TagCondition"
11822
+ },
11823
+ "variadic": true
11824
+ }
11825
+ ],
11826
+ "returns": {
11827
+ "type": {
11828
+ "fqn": "construct-hub.TagCondition"
11829
+ }
11830
+ },
11831
+ "static": true,
11832
+ "variadic": true
11833
+ },
11834
+ {
11835
+ "docs": {
11836
+ "stability": "experimental",
11837
+ "summary": "Target a field within the `package.json` to assert against. Nested fields can be accessed by passing multiple keys. `TagCondition.field('key1', 'key2')` will access `packageJson?.key1?.key2`."
11838
+ },
11839
+ "locationInModule": {
11840
+ "filename": "src/package-tag/index.ts",
11841
+ "line": 76
11842
+ },
11843
+ "name": "field",
11844
+ "parameters": [
11845
+ {
11846
+ "name": "keys",
11847
+ "type": {
11848
+ "primitive": "string"
11849
+ },
11850
+ "variadic": true
11851
+ }
11852
+ ],
11853
+ "returns": {
11854
+ "type": {
11855
+ "fqn": "construct-hub.TagConditionField"
11856
+ }
11857
+ },
11858
+ "static": true,
11859
+ "variadic": true
11860
+ },
11861
+ {
11862
+ "docs": {
11863
+ "remarks": "condition which applies if the condition argument is false",
11864
+ "stability": "experimental",
11865
+ "summary": "Create a !"
11866
+ },
11867
+ "locationInModule": {
11868
+ "filename": "src/package-tag/index.ts",
11869
+ "line": 66
11870
+ },
11871
+ "name": "not",
11872
+ "parameters": [
11873
+ {
11874
+ "name": "conds",
11875
+ "type": {
11876
+ "fqn": "construct-hub.TagCondition"
11877
+ },
11878
+ "variadic": true
11879
+ }
11880
+ ],
11881
+ "returns": {
11882
+ "type": {
11883
+ "fqn": "construct-hub.TagCondition"
11884
+ }
11885
+ },
11886
+ "static": true,
11887
+ "variadic": true
11888
+ },
11889
+ {
11890
+ "docs": {
11891
+ "stability": "experimental",
11892
+ "summary": "Create an || condition which applies if any of the condition arguments are true."
11893
+ },
11894
+ "locationInModule": {
11895
+ "filename": "src/package-tag/index.ts",
11896
+ "line": 59
11897
+ },
11898
+ "name": "or",
11899
+ "parameters": [
11900
+ {
11901
+ "name": "conds",
11902
+ "type": {
11903
+ "fqn": "construct-hub.TagCondition"
11904
+ },
11905
+ "variadic": true
11906
+ }
11907
+ ],
11908
+ "returns": {
11909
+ "type": {
11910
+ "fqn": "construct-hub.TagCondition"
11911
+ }
11912
+ },
11913
+ "static": true,
11914
+ "variadic": true
11915
+ },
11916
+ {
11917
+ "abstract": true,
11918
+ "docs": {
11919
+ "stability": "experimental"
11920
+ },
11921
+ "locationInModule": {
11922
+ "filename": "src/package-tag/index.ts",
11923
+ "line": 80
11924
+ },
11925
+ "name": "bind",
11926
+ "returns": {
11927
+ "type": {
11928
+ "fqn": "construct-hub.TagConditionConfig"
11929
+ }
11930
+ }
11931
+ }
11932
+ ],
11933
+ "name": "TagCondition"
11934
+ },
11935
+ "construct-hub.TagConditionConfig": {
11936
+ "assembly": "construct-hub",
11937
+ "datatype": true,
11938
+ "docs": {
11939
+ "stability": "experimental",
11940
+ "summary": "Serialized config for a tag condition."
11941
+ },
11942
+ "fqn": "construct-hub.TagConditionConfig",
11943
+ "kind": "interface",
11944
+ "locationInModule": {
11945
+ "filename": "src/package-tag/index.ts",
11946
+ "line": 28
11947
+ },
11948
+ "name": "TagConditionConfig",
11949
+ "properties": [
11950
+ {
11951
+ "abstract": true,
11952
+ "docs": {
11953
+ "stability": "experimental"
11954
+ },
11955
+ "immutable": true,
11956
+ "locationInModule": {
11957
+ "filename": "src/package-tag/index.ts",
11958
+ "line": 29
11959
+ },
11960
+ "name": "type",
11961
+ "type": {
11962
+ "fqn": "construct-hub.TagConditionLogicType"
11963
+ }
11964
+ },
11965
+ {
11966
+ "abstract": true,
11967
+ "docs": {
11968
+ "stability": "experimental"
11969
+ },
11970
+ "immutable": true,
11971
+ "locationInModule": {
11972
+ "filename": "src/package-tag/index.ts",
11973
+ "line": 32
11974
+ },
11975
+ "name": "children",
11976
+ "optional": true,
11977
+ "type": {
11978
+ "collection": {
11979
+ "elementtype": {
11980
+ "fqn": "construct-hub.TagConditionConfig"
11981
+ },
11982
+ "kind": "array"
11983
+ }
11984
+ }
11985
+ },
11986
+ {
11987
+ "abstract": true,
11988
+ "docs": {
11989
+ "stability": "experimental"
11990
+ },
11991
+ "immutable": true,
11992
+ "locationInModule": {
11993
+ "filename": "src/package-tag/index.ts",
11994
+ "line": 30
11995
+ },
11996
+ "name": "key",
11997
+ "optional": true,
11998
+ "type": {
11999
+ "collection": {
12000
+ "elementtype": {
12001
+ "primitive": "string"
12002
+ },
12003
+ "kind": "array"
12004
+ }
12005
+ }
12006
+ },
12007
+ {
12008
+ "abstract": true,
12009
+ "docs": {
12010
+ "stability": "experimental"
12011
+ },
12012
+ "immutable": true,
12013
+ "locationInModule": {
12014
+ "filename": "src/package-tag/index.ts",
12015
+ "line": 31
12016
+ },
12017
+ "name": "value",
12018
+ "optional": true,
12019
+ "type": {
12020
+ "primitive": "string"
12021
+ }
12022
+ }
12023
+ ]
12024
+ },
12025
+ "construct-hub.TagConditionField": {
12026
+ "assembly": "construct-hub",
12027
+ "docs": {
12028
+ "stability": "experimental",
12029
+ "summary": "Target a field to use in logic to dictate whether a tag is relevant."
12030
+ },
12031
+ "fqn": "construct-hub.TagConditionField",
12032
+ "initializer": {
12033
+ "docs": {
12034
+ "stability": "experimental"
12035
+ },
12036
+ "locationInModule": {
12037
+ "filename": "src/package-tag/index.ts",
12038
+ "line": 133
12039
+ },
12040
+ "parameters": [
12041
+ {
12042
+ "name": "field",
12043
+ "type": {
12044
+ "collection": {
12045
+ "elementtype": {
12046
+ "primitive": "string"
12047
+ },
12048
+ "kind": "array"
12049
+ }
12050
+ }
12051
+ }
12052
+ ]
12053
+ },
12054
+ "kind": "class",
12055
+ "locationInModule": {
12056
+ "filename": "src/package-tag/index.ts",
12057
+ "line": 132
12058
+ },
12059
+ "methods": [
12060
+ {
12061
+ "docs": {
12062
+ "stability": "experimental",
12063
+ "summary": "Create a === condition which applies if the specified field within the package's package.json is equal to the passed value."
12064
+ },
12065
+ "locationInModule": {
12066
+ "filename": "src/package-tag/index.ts",
12067
+ "line": 139
12068
+ },
12069
+ "name": "eq",
12070
+ "parameters": [
12071
+ {
12072
+ "name": "value",
12073
+ "type": {
12074
+ "primitive": "any"
12075
+ }
12076
+ }
12077
+ ],
12078
+ "returns": {
12079
+ "type": {
12080
+ "fqn": "construct-hub.TagCondition"
12081
+ }
12082
+ }
12083
+ }
12084
+ ],
12085
+ "name": "TagConditionField"
12086
+ },
12087
+ "construct-hub.TagConditionLogicType": {
12088
+ "assembly": "construct-hub",
12089
+ "docs": {
12090
+ "stability": "experimental",
12091
+ "summary": "Logic operators for performing specific conditional logic."
12092
+ },
12093
+ "fqn": "construct-hub.TagConditionLogicType",
12094
+ "kind": "enum",
12095
+ "locationInModule": {
12096
+ "filename": "src/package-tag/index.ts",
12097
+ "line": 86
12098
+ },
12099
+ "members": [
12100
+ {
12101
+ "docs": {
12102
+ "stability": "experimental"
12103
+ },
12104
+ "name": "AND"
12105
+ },
12106
+ {
12107
+ "docs": {
12108
+ "stability": "experimental"
12109
+ },
12110
+ "name": "OR"
12111
+ },
12112
+ {
12113
+ "docs": {
12114
+ "stability": "experimental"
12115
+ },
12116
+ "name": "NOT"
12117
+ },
12118
+ {
12119
+ "docs": {
12120
+ "stability": "experimental"
12121
+ },
12122
+ "name": "EQUALS"
12123
+ }
12124
+ ],
12125
+ "name": "TagConditionLogicType"
12126
+ },
11634
12127
  "construct-hub.sources.CodeArtifact": {
11635
12128
  "assembly": "construct-hub",
11636
12129
  "docs": {
@@ -12203,6 +12696,6 @@
12203
12696
  ]
12204
12697
  }
12205
12698
  },
12206
- "version": "0.2.4",
12207
- "fingerprint": "0PSa5xITsfvJdF1LetBMKO+PP++bGgXU1YCWBXjM6OU="
12699
+ "version": "0.2.8",
12700
+ "fingerprint": "aao0foFih4k7WZzeJREWA35MqMJxPG2Sa3uUHGc0+3U="
12208
12701
  }