construct-hub-webapp 0.1.414 → 0.1.418

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,3 +26,4 @@ See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more inform
26
26
  ## License
27
27
 
28
28
  This project is licensed under the Apache-2.0 License.
29
+
@@ -5,16 +5,16 @@
5
5
  "static/js/1.de94dd4f.chunk.js": "/static/js/1.de94dd4f.chunk.js",
6
6
  "static/js/1.de94dd4f.chunk.js.map": "/static/js/1.de94dd4f.chunk.js.map",
7
7
  "main.css": "/static/css/main.1e6d8b38.chunk.css",
8
- "main.js": "/static/js/main.40e21094.chunk.js",
9
- "main.js.map": "/static/js/main.40e21094.chunk.js.map",
10
- "runtime-main.js": "/static/js/runtime-main.b8868b3c.js",
11
- "runtime-main.js.map": "/static/js/runtime-main.b8868b3c.js.map",
8
+ "main.js": "/static/js/main.abd99000.chunk.js",
9
+ "main.js.map": "/static/js/main.abd99000.chunk.js.map",
10
+ "runtime-main.js": "/static/js/runtime-main.23f2317c.js",
11
+ "runtime-main.js.map": "/static/js/runtime-main.23f2317c.js.map",
12
12
  "static/js/4.91a3f4bb.chunk.js": "/static/js/4.91a3f4bb.chunk.js",
13
13
  "static/js/4.91a3f4bb.chunk.js.map": "/static/js/4.91a3f4bb.chunk.js.map",
14
14
  "static/js/5.fb19ba3d.chunk.js": "/static/js/5.fb19ba3d.chunk.js",
15
15
  "static/js/5.fb19ba3d.chunk.js.map": "/static/js/5.fb19ba3d.chunk.js.map",
16
- "static/js/6.ca3456ca.chunk.js": "/static/js/6.ca3456ca.chunk.js",
17
- "static/js/6.ca3456ca.chunk.js.map": "/static/js/6.ca3456ca.chunk.js.map",
16
+ "static/js/6.8a76d46f.chunk.js": "/static/js/6.8a76d46f.chunk.js",
17
+ "static/js/6.8a76d46f.chunk.js.map": "/static/js/6.8a76d46f.chunk.js.map",
18
18
  "static/js/7.f1806927.chunk.js": "/static/js/7.f1806927.chunk.js",
19
19
  "static/js/7.f1806927.chunk.js.map": "/static/js/7.f1806927.chunk.js.map",
20
20
  "static/js/8.73c2c7f3.chunk.js": "/static/js/8.73c2c7f3.chunk.js",
@@ -44,9 +44,9 @@
44
44
  "static/js/5.fb19ba3d.chunk.js.LICENSE.txt": "/static/js/5.fb19ba3d.chunk.js.LICENSE.txt"
45
45
  },
46
46
  "entrypoints": [
47
- "static/js/runtime-main.b8868b3c.js",
47
+ "static/js/runtime-main.23f2317c.js",
48
48
  "static/js/5.fb19ba3d.chunk.js",
49
49
  "static/css/main.1e6d8b38.chunk.css",
50
- "static/js/main.40e21094.chunk.js"
50
+ "static/js/main.abd99000.chunk.js"
51
51
  ]
52
52
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#ffffff"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Construct Hub</title><script>var AWSMA={config:{customPageview:!0}}</script><script src="https://a0.awsstatic.com/s_code/js/3.0/awshome_s_code.js"></script><link href="/static/css/main.1e6d8b38.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.b8868b3c.js"></script><script src="/static/js/5.fb19ba3d.chunk.js"></script><script src="/static/js/main.40e21094.chunk.js"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#ffffff"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Construct Hub</title><script>var AWSMA={config:{customPageview:!0}}</script><script src="https://a0.awsstatic.com/s_code/js/3.0/awshome_s_code.js"></script><link href="/static/css/main.1e6d8b38.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script src="/static/js/runtime-main.23f2317c.js"></script><script src="/static/js/5.fb19ba3d.chunk.js"></script><script src="/static/js/main.abd99000.chunk.js"></script></body></html>
@@ -1,2 +1,2 @@
1
- (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[6],{246:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(0),c=n(263),r={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(122),o=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(i.b)(r[s]);Object(a.useEffect)((function(){l()}),[l]);var d=n.suffix,u=void 0===d||d,b=n.title,j=n.description,f=u?"".concat(b," - Construct Hub"):b;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(c.a,{children:[!1,Object(o.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(o.jsx)("meta",{charSet:"utf-8"}),Object(o.jsx)("title",{children:f}),Object(o.jsx)("meta",{content:f,property:"og:title"}),Object(o.jsx)("meta",{content:f,name:"twitter:title"}),Object(o.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(o.jsx)("meta",{content:j,name:"description"}),Object(o.jsx)("meta",{content:j,property:"og:description"}),Object(o.jsx)("meta",{content:j,name:"twitter:description"})]}),t]})}},256:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var a=n(6),c=n(14),r=n(126),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat(Object(c.a)(e),[t.highlight]):e}),[])},o=function(e){for(var t=e.packageTags,n=e.keywords,i=new Array,o=new Set,s=0,l=[].concat(Object(c.a)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return Object(a.a)(Object(a.a)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),Object(c.a)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!r.a.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();o.has(u)||(i.push(d),o.add(u))}return i}},257:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return o}));var a=n(13),c=function(e,t){return t?"".concat(t,"/").concat(e):e},r=function(e,t,n){var r="".concat(a.a.PACKAGES_PREFIX,"/"),i=c(e,n),o="/v".concat(t);return"".concat(r).concat(i).concat(o)},i=function(e){var t=e;return(t.startsWith("~")||t.startsWith("^"))&&(t=t.substring(1)),t},o=function(e,t){var n=e.packages.filter((function(e){return e.name===t}));return n.length>1?n.sort((function(e,t){var n=new Date(e.metadata.date);return new Date(t.metadata.date).getTime()-n.getTime()}))[0]:n[0]}},262:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(0),c=n(22),r=function(){var e=Object(c.h)().search;return Object(a.useMemo)((function(){return new URLSearchParams(e)}),[e])}},269:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(74),c=function(e){var t=Object(a.b)().data;return(null!==t&&void 0!==t?t:{})[e]}},270:function(e,t,n){"use strict";n.d(t,"a",(function(){return j}));var a=n(5),c=n(0),r=n(22),i=n(121),o=n(13),s=n(262),l=i.d.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.e.has(e)},b=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(d))&&void 0!==t?t:"";if(u(n))return n}catch(a){}return l},j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,i=Object(r.h)(),l=i.pathname,j=i.hash,f=Object(r.g)(),h=f.replace,m=Object(s.a)(),O=m.get(o.b.LANGUAGE),g=Object(c.useState)((function(){return b(O)})),p=Object(a.a)(g,2),x=p[0],v=p[1];Object(c.useEffect)((function(){u(O)&&O!==x&&v(O)}),[O]),Object(c.useEffect)((function(){O!==x&&t&&(m.set(o.b.LANGUAGE,x),h({pathname:l,hash:j,search:m.toString()}))}),[x,t]);var w=Object(c.useCallback)((function(e){if(v(e),n)try{localStorage.setItem(d,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[x,w]}),[x,w])}},281:function(e,t,n){"use strict";var a;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return X})),function(e){e.Wide="wide"}(a||(a={}));var c=n(0),r=n(390),i=n(153),o=n(213),s=n(236),l=n(231),d=n(207),u=n(636),b=n(91),j=n(89),f=n(49),h=n(282),m=n(63),O=Object(m.a)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),g=n(1),p=function(e){var t=e["data-testid"],n=e.tooltip,a=e.value;return Object(g.jsx)(l.a,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:Object(g.jsx)(d.a,{"data-testid":t,fontSize:"xs",zIndex:1,children:a})})},x=function(){var e,t,n,a=U(),c=a.author,r=a.metadata.date,i=a.name,o=Object(b.b)().data,s=null===o||void 0===o||null===(e=o.packages)||void 0===e||null===(t=e[i])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,l="string"===typeof c?c:c.name,d=new Date(r);return Object(g.jsxs)(g.Fragment,{children:[void 0!==s&&Object(g.jsx)(p,{"data-testid":O.downloads,tooltip:"Download numbers are periodically sourced from the NPM registry",value:"".concat(s.toLocaleString()," weekly downloads")}),Object(g.jsx)(p,{"data-testid":O.published,value:Object(g.jsx)(h.a,{date:d,fontSize:"xs",formattedDate:Object(u.a)(d,{addSuffix:!0})})}),Object(g.jsx)(p,{"data-testid":O.author,value:Object(g.jsxs)(g.Fragment,{children:["By"," ",Object(g.jsx)(f.a,{color:"blue.500",to:Object(j.c)({query:l}),children:l})]})})]})},v=n(5),w=n(223),y=n(34),k=n(270),S=n(128),C=function(e){var t=e.comment;return Object(g.jsxs)(d.a,{"data-testid":O.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[Object(g.jsxs)(d.a,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},D=function(){var e=Object(k.a)(),t=Object(v.a)(e,1)[0],n=U(),a=n.description,c=n.comment,i=n.metadata.constructFramework,s=n.name,l=n.version,u=null===i||void 0===i?void 0:i.name,b=null===i||void 0===i?void 0:i.majorVersion;return Object(g.jsxs)(g.Fragment,{children:[Object(g.jsx)(r.b,{as:y.b,to:Object(j.a)({name:s,version:l,language:t}),children:Object(g.jsxs)(o.a,{align:"center",children:[Object(g.jsx)(S.a,{majorVersion:b,mr:2,name:u}),Object(g.jsx)(w.a,{as:"h3",color:"blue.800","data-testid":O.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),c?Object(g.jsx)(C,{comment:c}):Object(g.jsx)(d.a,{color:"blue.800","data-testid":O.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},T=n(6),H=n(203),z=n(256),A=n(283),W=function(){var e,t,n=(null!==(e=null===(t=U())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,a=void 0===n?[]:n,c=Object(z.a)(a),r=Object(v.a)(c,1)[0];return Object(g.jsx)(H.a,{fontSize:"xs",children:Object(g.jsx)(A.a,Object(T.a)({},r))})},F=n(121),I=n(285),K={sm:5,md:6,lg:8},L=function(e){var t=e.isRounded,n=void 0!==t&&t,a=e.languages,c=e.name,r=e.size,i=void 0===r?"md":r,o=e.version,s=Object.keys(null!==a&&void 0!==a?a:{});return Object(g.jsx)(g.Fragment,{children:Object.entries(F.c).sort((function(e,t){var n=Object(v.a)(e,1)[0],a=Object(v.a)(t,1)[0];return F.a.indexOf(n)-F.a.indexOf(a)})).map((function(e){var t=Object(v.a)(e,2),a=t[0],r=t[1],l=a,d=l===F.d.TypeScript||s.includes(l),u=l===F.d.TypeScript||F.e.has(l);if(!d)return null;var b=r.name,f=r.icon,h=Object(g.jsx)(f,{"aria-label":"Supports ".concat(b),borderRadius:n?"50%":0,h:K[i],opacity:u?1:.2,w:K[i]});return Object(g.jsx)(I.a,{language:l,children:u?Object(g.jsx)(y.b,{"aria-label":"View package docs for ".concat(l),to:Object(j.a)({name:c,version:o,language:l}),children:h}):h},l)}))})},P=function(){var e=U();return Object(g.jsx)(L,Object(T.a)(Object(T.a)({},e),{},{size:"sm"}))},G=n(284),E=function(){var e=U(),t=e.keywords,n=void 0===t?[]:t,a=e.metadata.packageTags,c=void 0===a?[]:a,r=Object(z.b)({packageTags:c,keywords:n});return Object(g.jsx)(g.Fragment,{children:r.slice(0,10).map((function(e){var t=e.id,n=e.keyword,a=(n=void 0===n?{}:n).label,c=n.color;return Object(g.jsx)(G.a,{value:t,variant:c,children:a},t)}))})},N=function(){return Object(g.jsx)(r.a,{_hover:{"> article":{bg:"gray.50"}},children:Object(g.jsxs)(i.a,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":O.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[Object(g.jsxs)(o.a,{direction:"column",justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsx)(s.a,{spacing:3,children:Object(g.jsx)(D,{})}),Object(g.jsx)(o.a,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:Object(g.jsx)(E,{})})]}),Object(g.jsxs)(o.a,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsxs)(s.a,{spacing:1,children:[Object(g.jsx)(W,{}),Object(g.jsx)(s.a,{spacing:1,children:Object(g.jsx)(x,{})})]}),Object(g.jsx)(s.a,{"data-testid":O.languages,direction:"row",spacing:2,children:Object(g.jsx)(P,{})})]})]})})},R=Object(c.createContext)(null),U=function(){return Object(c.useContext)(R)},X=function(e){var t=e.pkg,n=e.variant,c=void 0===n?a.Wide:n;return Object(g.jsx)(R.Provider,{value:t,children:c===a.Wide&&Object(g.jsx)(N,{})})}},282:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(17),i=n(203),o=n(648),s=n(1),l=["date","format","formattedDate"],d=Object(r.a)((function(e,t){var n=e.date,r=e.format,d=e.formattedDate,u=Object(c.a)(e,l);return Object(s.jsx)(i.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==d&&void 0!==d?d:Object(o.a)(n,null!==r&&void 0!==r?r:"")}))}));d.displayName="Time"},283:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(236),c=n(235),r=n(207),i=n(1),o=function(e){var t=e.label,n=e.color,o=e.icon;return Object(i.jsxs)(a.a,{align:"center",direction:"row",spacing:2,children:[Object(i.jsx)(c.a,{alt:"".concat(t," icon"),src:o,w:4}),Object(i.jsx)(r.a,{color:n,fontWeight:"bold",children:t})]})}},284:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(640),i=n(89),o=n(49),s=n(1),l=["children","value","label","zIndex"],d=function(e){var t=e.children,n=e.value,d=e.label,u=void 0===d?n:d,b=e.zIndex,j=Object(c.a)(e,l);return Object(s.jsx)(o.a,{"aria-label":"Tag: ".concat(u),to:Object(i.c)({keywords:[n]}),zIndex:b,children:Object(s.jsx)(r.a,Object(a.a)(Object(a.a)({_hover:{textDecoration:"underline"}},j),{},{children:Object(s.jsx)(r.b,{children:t})}))})}},285:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(231),c=n(121),r=n(1),i=function(e){var t=e.children,n=e.language,i=c.e.has(n),o=c.b[n],s=i?"Click to view documentation in ".concat(o):"Documentation support for ".concat(o," is coming soon!");return Object(r.jsx)(a.a,{hasArrow:!0,label:s,placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},649:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return ce}));var a,c=n(213),r=n(143),i=n(246),o=n(74),s=n(223),l=n(207),d=n(639),u=n(158),b=n(49),j=n(269),f=n(89),h={X:[4,8,12,16,20],Y:[4,6,8]},m=n(63),O=Object(m.a)("homeRedesign",["page","packageGrid","heroHeader","heroSubtitle","infoContainer","infoSection","infoSectionHeading","infoSectionDescription","infoSectionIcon","featuredContainer","featuredHeader","featuredGrid","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","cdkTypeTab","cdkTypeGrid","cdkTypeSeeAllButton","categoriesContainer","categoriesHeader","categoriesDescription"]),g=n(1),p=[{title:"Monitoring",url:Object(f.c)({keywords:["monitoring"]})},{title:"Containers",url:Object(f.c)({keywords:["containers"]})},{title:"Serverless",url:Object(f.c)({keywords:["serverless"]})},{title:"Databases",url:Object(f.c)({keywords:["databases"]})},{title:"Utilities",url:Object(f.c)({keywords:["utilities"]})},{title:"Deployment",url:Object(f.c)({keywords:["deployment"]})},{title:"Websites",url:Object(f.c)({keywords:["web"]})},{title:"Security",url:Object(f.c)({keywords:["security"]})},{title:"Compliance",url:Object(f.c)({keywords:["compliance"]})},{title:"Network",url:Object(f.c)({keywords:["network"]})},{title:"Artificial Intelligence (AI)",url:Object(f.c)({keywords:["artificial intelligence (ai)"]})},{title:"Cloud Services Integrations",url:Object(f.c)({keywords:["cloud services integrations"]})}],x=function(){var e,t=null!==(e=Object(j.a)("categories"))&&void 0!==e?e:p;return Object(g.jsxs)(c.a,{"data-testid":O.categoriesContainer,direction:"column",my:4,px:h.X,py:h.Y,zIndex:"0",children:[Object(g.jsx)(s.a,{as:"h3",color:"white","data-testid":O.categoriesHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:1,children:"Find constructs by use case"}),Object(g.jsx)(l.a,{color:"white","data-testid":O.categoriesDescription,lineHeight:"md",mb:5,children:"With hundreds of constructs available, there may already be one (or more!) that that can serve as a building block for your solution."}),Object(g.jsx)(d.a,{children:t.map((function(e){return Object(g.jsx)(d.b,{children:Object(g.jsx)(u.a,{_hover:{backgroundColor:"white"},as:b.a,color:"blue.800",colorScheme:"gray",size:"md",style:{boxShadow:"0px 4px 4px rgba(73, 73, 73, 0.63)"},to:e.url,children:e.title})},e.title)}))})]})},v=n(5),w=n(6),y=n(24),k=n(638),S=n(17),C=n(59),D=n(13),T=n(127),H=n(4),z=n(0),A=n(22),W=n(153),F=n(281),I=function(e){var t=e.packages;return Object(g.jsx)(W.a,{"data-testid":O.packageGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:t.map((function(e){return Object(g.jsx)(F.a,{pkg:e},"".concat(e.name,"-").concat(e.version))}))})},K=["label","data","tag"],L={community:{label:"Community",tag:"community"},aws:{label:"AWS",tag:"aws-official"},hashicorp:{label:"HashiCorp",tag:"hashicorp-official"}},P=function(e){var t=e.data,n=e.label;return Object(g.jsx)(k.a,{"data-testid":O.cdkTypeTab,"data-value":n,isDisabled:t.page.length<1,children:n})},G=Object(S.a)((function(e,t){var n=e.label,a=e.data,r=e.tag,i=Object(y.a)(e,K);return Object(g.jsxs)(k.c,Object(w.a)(Object(w.a)({"data-testid":O.cdkTypeGrid,ref:t},i),{},{p:0,children:[Object(g.jsx)(I,{packages:a.page}),Object(g.jsx)(c.a,{justify:"center",w:"full",children:Object(g.jsx)(b.a,{"data-testid":O.cdkTypeSeeAllButton,onClick:function(){return window.scrollTo(0,0)},to:Object(f.c)({tags:r?[r]:void 0,sort:C.a.DownloadsDesc}),children:Object(g.jsxs)(u.a,{colorScheme:"blue",my:8,children:["See all ",n," constructs"]})})})]}))})),E=function(){var e=Object(T.a)({tags:[L.community.tag],limit:4,sort:C.a.DownloadsDesc}),t=Object(T.a)({tags:[L.aws.tag],limit:4,sort:C.a.DownloadsDesc}),n=Object(T.a)({tags:[L.hashicorp.tag],limit:4,sort:C.a.DownloadsDesc}),a=function(e,t){var n=Object(A.g)(),a=Object(z.useState)((function(){var a,c=null===(a=n.location.state)||void 0===a?void 0:a[e];return null!==c&&void 0!==c?c:t})),c=Object(v.a)(a,2),r=c[0],i=c[1];return[r,function(t){n.replace(Object(w.a)(Object(w.a)({},n.location),{},{state:Object(w.a)(Object(w.a)({},n.location.state),{},Object(H.a)({},e,t))})),i(t)}]}("cdkTypeTab",0),r=Object(v.a)(a,2),i=r[0],o=r[1];return Object(g.jsxs)(c.a,{bg:"white",color:"blue.800","data-testid":O.cdkTypeSection,direction:"column",px:h.X,py:h.Y,zIndex:"0",children:[Object(g.jsx)(s.a,{as:"h3","data-testid":O.cdkTypeSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:"Find constructs by publisher"}),Object(g.jsxs)(l.a,{"data-testid":O.cdkTypeSectionDescription,lineHeight:"md",mb:5,children:["Find constructs published by the open-source community, AWS, and HashiCorp in one location. You can also have your own construct libraries listed on Construct Hub by publishing them on npm registry. More concrete guidance can be found in the"," ",Object(g.jsx)(b.a,{color:"blue.500",to:D.c.CONTRIBUTE,children:"Contribute"})," ","page."]}),Object(g.jsxs)(k.e,{defaultIndex:i,onChange:function(e){return o(e)},variant:"line",children:[Object(g.jsxs)(k.b,{children:[Object(g.jsx)(P,{data:e,label:L.community.label}),Object(g.jsx)(P,{data:t,label:L.aws.label}),Object(g.jsx)(P,{data:n,label:L.hashicorp.label})]}),Object(g.jsxs)(k.d,{minH:"28.5rem",children:[Object(g.jsx)(G,{data:e,label:L.community.label.toLowerCase(),tag:L.community.tag}),Object(g.jsx)(G,{data:t,label:L.aws.label,tag:L.aws.tag}),Object(g.jsx)(G,{data:n,label:L.hashicorp.label,tag:L.hashicorp.tag})]})]})]})},N=n(135),R=n(257),U=n(75),X=function(){var e=Object(j.a)("featuredPackages"),t=Object(v.a)((null!==e&&void 0!==e?e:N.a).sections,1)[0],n=void 0===t?{name:"Recently Updated",showLastUpdated:4}:t,a=function(e){var t=e.showLastUpdated,n=e.showPackages,a=Object(U.b)(),c=a.loading,r=a.error,i=Object(T.a)({limit:25,sort:C.a.PublishDateDesc}).results;return Object(z.useMemo)((function(){return c||r||!i?[]:t?i.slice(0,t):n?n.map((function(e){var t=Object(R.a)({packages:i},e.name);if(t)return Object(w.a)(Object(w.a)({},t),{},{comment:e.comment})})).filter((function(e){return void 0!==e})):void 0}),[i,r,c,t,n])}(n);return a?Object(g.jsxs)(c.a,{color:"white","data-testid":O.featuredContainer,direction:"column",px:h.X,py:h.Y,zIndex:"0",children:[Object(g.jsx)(s.a,{as:"h3","data-testid":O.featuredHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",children:n.name}),Object(g.jsx)(W.a,{"data-testid":O.featuredGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:null===a||void 0===a?void 0:a.slice(0,4).map((function(e){return Object(g.jsx)(F.a,{pkg:e},e.name)}))})]}):null},B=n(391),Y=n(65),M=n(203),_=Object(Y.b)(a||(a=Object(B.a)(["\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n"]))),q=Object(S.a)((function(e,t){return Object(g.jsx)(M.a,Object(w.a)({animation:"".concat(_," 10s linear infinite"),bg:"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)",bgSize:"200% 200%",ref:t},e))})),J=n(76),V=function(){return Object(g.jsxs)(c.a,{align:"center",color:"white",direction:"column",h:"20rem",justify:"center",px:h.X,py:h.Y,textAlign:"center",zIndex:"1",children:[Object(g.jsx)(s.a,{as:"h1","data-testid":O.heroHeader,size:"xl",children:"Simplify cloud development with constructs"}),Object(g.jsx)(s.a,{as:"h2","data-testid":O.heroSubtitle,fontWeight:"normal",mt:4,size:"md",children:"Find and use open-source Cloud Development Kit (CDK) libraries"}),Object(g.jsx)(M.a,{color:"initial",maxW:"36rem",mt:8,mx:"auto",w:"full",children:Object(g.jsxs)(J.a,{hasButton:!0,children:[Object(g.jsx)(J.b,{}),Object(g.jsx)(J.c,{})]})})]})},Q=n(215),Z=n(236),$=n(235),ee=n(48),te=n(121),ne=function(e){var t=e.title,n=e.description,a=e.children;return Object(g.jsxs)(W.a,{color:"blue.800","data-testid":O.infoSection,px:h.X,py:h.Y,templateColumns:"1fr",templateRows:"auto 1fr auto",children:[Object(g.jsx)(s.a,{as:"h3","data-testid":O.infoSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:t}),Object(g.jsx)(l.a,{"data-testid":O.infoSectionDescription,fontSize:"lg",mb:4,children:n}),a]})},ae=function(){return Object(g.jsxs)(c.a,{bg:"white",direction:"column",children:[Object(g.jsx)(M.a,{px:h.X,py:h.Y,children:Object(g.jsx)(l.a,{color:"blue.800",fontSize:"1.25rem",lineHeight:"1.5",textAlign:"center",children:"Construct Hub is a place to discover Cloud Development Kit (CDK) construct libraries, building blocks for cloud applications published by the open-source community, AWS, and partners. CDK is a software development framework for defining cloud infrastructure using familiar programming languages."})}),Object(g.jsx)(Q.a,{mx:h.X,w:"auto"}),Object(g.jsxs)(W.a,{"data-testid":O.infoContainer,templateColumns:{base:"1fr",lg:"1fr auto 1fr"},templateRows:{base:"1fr auto 1fr",lg:"1fr"},textAlign:"left",children:[Object(g.jsx)(ne,{description:" For all three CDKs: AWS CDK, which generates CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.",title:"A single home for all CDKs",children:Object(g.jsx)(c.a,{align:"center",pt:4,sx:{gap:"4rem"},wrap:"wrap",children:Object.entries(ee.b).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.name,r=a.imgsrc;return Object(g.jsx)(b.a,{color:"blue.500","data-testid":O.infoSectionIcon,fontWeight:"bold",to:Object(f.c)({cdkType:n,sort:C.a.DownloadsDesc}),children:Object(g.jsxs)(Z.a,{align:"center",spacing:2,children:[Object(g.jsx)($.a,{"aria-label":c,h:8,src:r}),Object(g.jsx)("span",{children:c})]})},n)}))})}),Object(g.jsx)(Q.a,{display:{base:"none",lg:"initial"},h:"auto",my:10,orientation:"vertical"}),Object(g.jsx)(Q.a,{display:{lg:"none"},mx:10,w:"auto"}),Object(g.jsx)(ne,{description:"Find documentation, API reference, and code samples in CDK-supported languages, such as Java, .NET, TypeScript, and Python. Define, test, and deploy cloud infrastructure using loops, conditionals, unit testing, and data structures.",title:"Support across languages",children:Object(g.jsx)(c.a,{align:"center",pt:4,sx:{gap:"4rem"},wrap:"wrap",children:Object.entries(te.c).filter((function(e){var t=Object(v.a)(e,1)[0];return te.e.has(t)})).map((function(e){var t=Object(v.a)(e,2),n=t[0],a=t[1],c=a.icon,r=a.name;return Object(g.jsx)(b.a,{color:"blue.500","data-testid":O.infoSectionIcon,fontWeight:"bold",to:Object(f.c)({languages:[n],sort:C.a.DownloadsDesc}),children:Object(g.jsxs)(Z.a,{align:"center",spacing:2,children:[Object(g.jsx)(c,{"aria-label":r,h:8,w:8}),Object(g.jsx)("span",{children:r})]},n)},n)}))})})]})]})},ce=function(){var e,t,n=Object(o.b)().data,a=null!==(e=null===n||void 0===n||null===(t=n.featureFlags)||void 0===t?void 0:t.fullSite)&&void 0!==e&&e;return Object(g.jsx)(i.a,{meta:{title:"Construct Hub",description:"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.",suffix:!1},pageName:"home",children:Object(g.jsxs)(q,{as:c.a,"data-testid":O.page,direction:"column",children:[Object(g.jsx)(r.a,{}),Object(g.jsx)(V,{}),Object(g.jsx)(ae,{}),a?Object(g.jsx)(x,{}):Object(g.jsx)(g.Fragment,{}),a?Object(g.jsx)(E,{}):Object(g.jsx)(g.Fragment,{}),a?Object(g.jsx)(X,{}):Object(g.jsx)(g.Fragment,{})]})})}}}]);
2
- //# sourceMappingURL=6.ca3456ca.chunk.js.map
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[6],{246:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(0),c=n(263),r={contribute:{event:{name:"Contribute Load"}},home:{event:{name:"Home Load"}},faq:{event:{name:"Frequently Asked Questions Load"}},packageProfile:{event:{name:"Package Profile Load"}},search:{event:{name:"Search Load"}},siteTerms:{event:{name:"Site Terms Load"}},notFound:{page:{pageType:"errorPage"},event:{name:"404 Page Load"}}},i=n(122),o=n(1),s=function(e){var t=e.children,n=e.meta,s=e.pageName,l=Object(i.b)(r[s]);Object(a.useEffect)((function(){l()}),[l]);var d=n.suffix,u=void 0===d||d,b=n.title,j=n.description,f=u?"".concat(b," - Construct Hub"):b;return Object(o.jsxs)(o.Fragment,{children:[Object(o.jsxs)(c.a,{children:[!1,Object(o.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(o.jsx)("meta",{charSet:"utf-8"}),Object(o.jsx)("title",{children:f}),Object(o.jsx)("meta",{content:f,property:"og:title"}),Object(o.jsx)("meta",{content:f,name:"twitter:title"}),Object(o.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(o.jsx)("meta",{content:j,name:"description"}),Object(o.jsx)("meta",{content:j,property:"og:description"}),Object(o.jsx)("meta",{content:j,name:"twitter:description"})]}),t]})}},256:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return o}));var a=n(6),c=n(14),r=n(126),i=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat(Object(c.a)(e),[t.highlight]):e}),[])},o=function(e){for(var t=e.packageTags,n=e.keywords,i=new Array,o=new Set,s=0,l=[].concat(Object(c.a)(function(e){return(null!==e&&void 0!==e?e:[]).filter((function(e){var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)})).map((function(e){var t;return Object(a.a)(Object(a.a)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}))}(t)),Object(c.a)(function(e){return!e||e.length<1?[]:e.filter((function(e){return Boolean(e)&&!r.a.has(e)})).map((function(e){return{id:e,keyword:{label:e}}}))}(n)));s<l.length;s++){var d=l[s],u=d.keyword.label.toLowerCase();o.has(u)||(i.push(d),o.add(u))}return i}},257:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"b",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return o}));var a=n(13),c=function(e,t){return t?"".concat(t,"/").concat(e):e},r=function(e,t,n){var r="".concat(a.a.PACKAGES_PREFIX,"/"),i=c(e,n),o="/v".concat(t);return"".concat(r).concat(i).concat(o)},i=function(e){var t=e;return(t.startsWith("~")||t.startsWith("^"))&&(t=t.substring(1)),t},o=function(e,t){var n=e.packages.filter((function(e){return e.name===t}));return n.length>1?n.sort((function(e,t){var n=new Date(e.metadata.date);return new Date(t.metadata.date).getTime()-n.getTime()}))[0]:n[0]}},262:function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var a=n(0),c=n(22),r=function(){var e=Object(c.h)().search;return Object(a.useMemo)((function(){return new URLSearchParams(e)}),[e])}},269:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(74),c=function(e){var t=Object(a.b)().data;return(null!==t&&void 0!==t?t:{})[e]}},270:function(e,t,n){"use strict";n.d(t,"a",(function(){return j}));var a=n(5),c=n(0),r=n(22),i=n(121),o=n(13),s=n(262),l=i.d.TypeScript,d="preferred-language",u=function(e){return null!=e&&i.e.has(e)},b=function(e){if(u(e))return e;try{var t,n=null!==(t=localStorage.getItem(d))&&void 0!==t?t:"";if(u(n))return n}catch(a){}return l},j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,i=Object(r.h)(),l=i.pathname,j=i.hash,f=Object(r.g)(),h=f.replace,m=Object(s.a)(),O=m.get(o.b.LANGUAGE),g=Object(c.useState)((function(){return b(O)})),p=Object(a.a)(g,2),x=p[0],v=p[1];Object(c.useEffect)((function(){u(O)&&O!==x&&v(O)}),[O]),Object(c.useEffect)((function(){O!==x&&t&&(m.set(o.b.LANGUAGE,x),h({pathname:l,hash:j,search:m.toString()}))}),[x,t]);var w=Object(c.useCallback)((function(e){if(v(e),n)try{localStorage.setItem(d,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[x,w]}),[x,w])}},281:function(e,t,n){"use strict";var a;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return X})),function(e){e.Wide="wide"}(a||(a={}));var c=n(0),r=n(390),i=n(153),o=n(213),s=n(236),l=n(231),d=n(207),u=n(636),b=n(91),j=n(89),f=n(49),h=n(282),m=n(63),O=Object(m.a)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]),g=n(1),p=function(e){var t=e["data-testid"],n=e.tooltip,a=e.value;return Object(g.jsx)(l.a,{hasArrow:!0,isDisabled:!n,label:n,placement:"left",children:Object(g.jsx)(d.a,{"data-testid":t,fontSize:"xs",zIndex:1,children:a})})},x=function(){var e,t,n,a=U(),c=a.author,r=a.metadata.date,i=a.name,o=Object(b.b)().data,s=null===o||void 0===o||null===(e=o.packages)||void 0===e||null===(t=e[i])||void 0===t||null===(n=t.downloads)||void 0===n?void 0:n.npm,l="string"===typeof c?c:c.name,d=new Date(r);return Object(g.jsxs)(g.Fragment,{children:[void 0!==s&&Object(g.jsx)(p,{"data-testid":O.downloads,tooltip:"Download numbers are periodically sourced from the NPM registry",value:"".concat(s.toLocaleString()," weekly downloads")}),Object(g.jsx)(p,{"data-testid":O.published,value:Object(g.jsx)(h.a,{date:d,fontSize:"xs",formattedDate:Object(u.a)(d,{addSuffix:!0})})}),Object(g.jsx)(p,{"data-testid":O.author,value:Object(g.jsxs)(g.Fragment,{children:["By"," ",Object(g.jsx)(f.a,{color:"blue.500",to:Object(j.c)({query:l}),children:l})]})})]})},v=n(5),w=n(223),y=n(34),k=n(270),S=n(128),C=function(e){var t=e.comment;return Object(g.jsxs)(d.a,{"data-testid":O.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[Object(g.jsxs)(d.a,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})},D=function(){var e=Object(k.a)(),t=Object(v.a)(e,1)[0],n=U(),a=n.description,c=n.comment,i=n.metadata.constructFramework,s=n.name,l=n.version,u=null===i||void 0===i?void 0:i.name,b=null===i||void 0===i?void 0:i.majorVersion;return Object(g.jsxs)(g.Fragment,{children:[Object(g.jsx)(r.b,{as:y.b,to:Object(j.a)({name:s,version:l,language:t}),children:Object(g.jsxs)(o.a,{align:"center",children:[Object(g.jsx)(S.a,{majorVersion:b,mr:2,name:u}),Object(g.jsx)(w.a,{as:"h3",color:"blue.800","data-testid":O.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:s})]})}),c?Object(g.jsx)(C,{comment:c}):Object(g.jsx)(d.a,{color:"blue.800","data-testid":O.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:a||"No description available."})]})},T=n(6),H=n(203),z=n(256),A=n(283),W=function(){var e,t,n=(null!==(e=null===(t=U())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,a=void 0===n?[]:n,c=Object(z.a)(a),r=Object(v.a)(c,1)[0];return Object(g.jsx)(H.a,{fontSize:"xs",children:Object(g.jsx)(A.a,Object(T.a)({},r))})},I=n(121),F=n(285),K={sm:5,md:6,lg:8},L=function(e){var t=e.isRounded,n=void 0!==t&&t,a=e.languages,c=e.name,r=e.size,i=void 0===r?"md":r,o=e.version,s=Object.keys(null!==a&&void 0!==a?a:{});return Object(g.jsx)(g.Fragment,{children:Object.entries(I.c).sort((function(e,t){var n=Object(v.a)(e,1)[0],a=Object(v.a)(t,1)[0];return I.a.indexOf(n)-I.a.indexOf(a)})).map((function(e){var t=Object(v.a)(e,2),a=t[0],r=t[1],l=a,d=l===I.d.TypeScript||s.includes(l),u=l===I.d.TypeScript||I.e.has(l);if(!d)return null;var b=r.name,f=r.icon,h=Object(g.jsx)(f,{"aria-label":"Supports ".concat(b),borderRadius:n?"50%":0,h:K[i],opacity:u?1:.2,w:K[i]});return Object(g.jsx)(F.a,{language:l,children:u?Object(g.jsx)(y.b,{"aria-label":"View package docs for ".concat(l),to:Object(j.a)({name:c,version:o,language:l}),children:h}):h},l)}))})},P=function(){var e=U();return Object(g.jsx)(L,Object(T.a)(Object(T.a)({},e),{},{size:"sm"}))},G=n(284),E=function(){var e=U(),t=e.keywords,n=void 0===t?[]:t,a=e.metadata.packageTags,c=void 0===a?[]:a,r=Object(z.b)({packageTags:c,keywords:n});return Object(g.jsx)(g.Fragment,{children:r.slice(0,10).map((function(e){var t=e.id,n=e.keyword,a=(n=void 0===n?{}:n).label,c=n.color;return Object(g.jsx)(G.a,{value:t,variant:c,children:a},t)}))})},N=function(){return Object(g.jsx)(r.a,{_hover:{"> article":{bg:"gray.50"}},children:Object(g.jsxs)(i.a,{as:"article",bg:"white",border:"base",borderRadius:"sm",boxShadow:"base",color:"blue.800","data-testid":O.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[Object(g.jsxs)(o.a,{direction:"column",justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsx)(s.a,{spacing:3,children:Object(g.jsx)(D,{})}),Object(g.jsx)(o.a,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:Object(g.jsx)(E,{})})]}),Object(g.jsxs)(o.a,{align:{base:"end",lg:"initial"},borderLeft:{lg:"base"},borderTop:{base:"base",lg:"none"},direction:{base:"row",lg:"column"},justify:"space-between",p:5,sx:{gap:"0.5rem"},children:[Object(g.jsxs)(s.a,{spacing:1,children:[Object(g.jsx)(W,{}),Object(g.jsx)(s.a,{spacing:1,children:Object(g.jsx)(x,{})})]}),Object(g.jsx)(s.a,{"data-testid":O.languages,direction:"row",spacing:2,children:Object(g.jsx)(P,{})})]})]})})},R=Object(c.createContext)(null),U=function(){return Object(c.useContext)(R)},X=function(e){var t=e.pkg,n=e.variant,c=void 0===n?a.Wide:n;return Object(g.jsx)(R.Provider,{value:t,children:c===a.Wide&&Object(g.jsx)(N,{})})}},282:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(17),i=n(203),o=n(648),s=n(1),l=["date","format","formattedDate"],d=Object(r.a)((function(e,t){var n=e.date,r=e.format,d=e.formattedDate,u=Object(c.a)(e,l);return Object(s.jsx)(i.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==d&&void 0!==d?d:Object(o.a)(n,null!==r&&void 0!==r?r:"")}))}));d.displayName="Time"},283:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(236),c=n(235),r=n(207),i=n(1),o=function(e){var t=e.label,n=e.color,o=e.icon;return Object(i.jsxs)(a.a,{align:"center",direction:"row",spacing:2,children:[Object(i.jsx)(c.a,{alt:"".concat(t," icon"),src:o,w:4}),Object(i.jsx)(r.a,{color:n,fontWeight:"bold",children:t})]})}},284:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(640),i=n(89),o=n(49),s=n(1),l=["children","value","label","zIndex"],d=function(e){var t=e.children,n=e.value,d=e.label,u=void 0===d?n:d,b=e.zIndex,j=Object(c.a)(e,l);return Object(s.jsx)(o.a,{"aria-label":"Tag: ".concat(u),to:Object(i.c)({keywords:[n]}),zIndex:b,children:Object(s.jsx)(r.a,Object(a.a)(Object(a.a)({_hover:{textDecoration:"underline"}},j),{},{children:Object(s.jsx)(r.b,{children:t})}))})}},285:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(231),c=n(121),r=n(1),i=function(e){var t=e.children,n=e.language,i=c.e.has(n),o=c.b[n],s=i?"Click to view documentation in ".concat(o):"Documentation support for ".concat(o," is coming soon!");return Object(r.jsx)(a.a,{hasArrow:!0,label:s,placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},649:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return ce}));var a,c=n(213),r=n(143),i=n(246),o=n(75),s=n(74),l=n(223),d=n(207),u=n(639),b=n(158),j=n(49),f=n(269),h=n(89),m={X:[4,8,12,16,20],Y:[4,6,8]},O=n(63),g=Object(O.a)("homeRedesign",["page","packageGrid","heroHeader","heroSubtitle","infoContainer","infoSection","infoSectionHeading","infoSectionDescription","infoSectionIcon","featuredContainer","featuredHeader","featuredGrid","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","cdkTypeTab","cdkTypeGrid","cdkTypeSeeAllButton","categoriesContainer","categoriesHeader","categoriesDescription"]),p=n(1),x=[{title:"Monitoring",url:Object(h.c)({keywords:["monitoring"]})},{title:"Containers",url:Object(h.c)({keywords:["containers"]})},{title:"Serverless",url:Object(h.c)({keywords:["serverless"]})},{title:"Databases",url:Object(h.c)({keywords:["databases"]})},{title:"Utilities",url:Object(h.c)({keywords:["utilities"]})},{title:"Deployment",url:Object(h.c)({keywords:["deployment"]})},{title:"Websites",url:Object(h.c)({keywords:["web"]})},{title:"Security",url:Object(h.c)({keywords:["security"]})},{title:"Compliance",url:Object(h.c)({keywords:["compliance"]})},{title:"Network",url:Object(h.c)({keywords:["network"]})},{title:"Artificial Intelligence (AI)",url:Object(h.c)({keywords:["artificial intelligence (ai)"]})},{title:"Cloud Services Integrations",url:Object(h.c)({keywords:["cloud services integrations"]})}],v=function(){var e,t=null!==(e=Object(f.a)("categories"))&&void 0!==e?e:x;return Object(p.jsxs)(c.a,{"data-testid":g.categoriesContainer,direction:"column",my:4,px:m.X,py:m.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3",color:"white","data-testid":g.categoriesHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:1,children:"Find constructs by use case"}),Object(p.jsx)(d.a,{color:"white","data-testid":g.categoriesDescription,lineHeight:"md",mb:5,children:"With hundreds of constructs available, there may already be one (or more!) that that can serve as a building block for your solution."}),Object(p.jsx)(u.a,{children:t.map((function(e){return Object(p.jsx)(u.b,{children:Object(p.jsx)(b.a,{_hover:{backgroundColor:"white"},as:j.a,color:"blue.800",colorScheme:"gray",size:"md",style:{boxShadow:"0px 4px 4px rgba(73, 73, 73, 0.63)"},to:e.url,children:e.title})},e.title)}))})]})},w=n(5),y=n(6),k=n(24),S=n(638),C=n(17),D=n(59),T=n(13),H=n(127),z=n(4),A=n(0),W=n(22),I=n(153),F=n(281),K=function(e){var t=e.packages;return Object(p.jsx)(I.a,{"data-testid":g.packageGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:t.map((function(e){return Object(p.jsx)(F.a,{pkg:e},"".concat(e.name,"-").concat(e.version))}))})},L=["label","data","tag"],P={community:{label:"Community",tag:"community"},aws:{label:"AWS",tag:"aws-official"},hashicorp:{label:"HashiCorp",tag:"hashicorp-official"}},G=function(e){var t=e.data,n=e.label;return Object(p.jsx)(S.a,{"data-testid":g.cdkTypeTab,"data-value":n,isDisabled:t.page.length<1,children:n})},E=Object(C.a)((function(e,t){var n=e.label,a=e.data,r=e.tag,i=Object(k.a)(e,L);return Object(p.jsxs)(S.c,Object(y.a)(Object(y.a)({"data-testid":g.cdkTypeGrid,ref:t},i),{},{p:0,children:[Object(p.jsx)(K,{packages:a.page}),Object(p.jsx)(c.a,{justify:"center",w:"full",children:Object(p.jsx)(j.a,{"data-testid":g.cdkTypeSeeAllButton,onClick:function(){return window.scrollTo(0,0)},to:Object(h.c)({tags:r?[r]:void 0,sort:D.a.DownloadsDesc}),children:Object(p.jsxs)(b.a,{colorScheme:"blue",my:8,children:["See all ",n," constructs"]})})})]}))})),N=function(){var e=Object(H.a)({tags:[P.community.tag],limit:4,sort:D.a.DownloadsDesc}),t=Object(H.a)({tags:[P.aws.tag],limit:4,sort:D.a.DownloadsDesc}),n=Object(H.a)({tags:[P.hashicorp.tag],limit:4,sort:D.a.DownloadsDesc}),a=function(e,t){var n=Object(W.g)(),a=Object(A.useState)((function(){var a,c=null===(a=n.location.state)||void 0===a?void 0:a[e];return null!==c&&void 0!==c?c:t})),c=Object(w.a)(a,2),r=c[0],i=c[1];return[r,function(t){n.replace(Object(y.a)(Object(y.a)({},n.location),{},{state:Object(y.a)(Object(y.a)({},n.location.state),{},Object(z.a)({},e,t))})),i(t)}]}("cdkTypeTab",0),r=Object(w.a)(a,2),i=r[0],o=r[1];return Object(p.jsxs)(c.a,{bg:"white",color:"blue.800","data-testid":g.cdkTypeSection,direction:"column",px:m.X,py:m.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.cdkTypeSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:"Find constructs by publisher"}),Object(p.jsxs)(d.a,{"data-testid":g.cdkTypeSectionDescription,lineHeight:"md",mb:5,children:["Find constructs published by the open-source community, AWS, and HashiCorp in one location. You can also have your own construct libraries listed on Construct Hub by publishing them on npm registry. More concrete guidance can be found in the"," ",Object(p.jsx)(j.a,{color:"blue.500",to:T.c.CONTRIBUTE,children:"Contribute"})," ","page."]}),Object(p.jsxs)(S.e,{defaultIndex:i,onChange:function(e){return o(e)},variant:"line",children:[Object(p.jsxs)(S.b,{children:[Object(p.jsx)(G,{data:e,label:P.community.label}),Object(p.jsx)(G,{data:t,label:P.aws.label}),Object(p.jsx)(G,{data:n,label:P.hashicorp.label})]}),Object(p.jsxs)(S.d,{minH:"28.5rem",children:[Object(p.jsx)(E,{data:e,label:P.community.label.toLowerCase(),tag:P.community.tag}),Object(p.jsx)(E,{data:t,label:P.aws.label,tag:P.aws.tag}),Object(p.jsx)(E,{data:n,label:P.hashicorp.label,tag:P.hashicorp.tag})]})]})]})},R=n(135),U=n(257),X=function(){var e=Object(f.a)("featuredPackages"),t=Object(w.a)((null!==e&&void 0!==e?e:R.a).sections,1)[0],n=void 0===t?{name:"Recently Updated",showLastUpdated:4}:t,a=function(e){var t=e.showLastUpdated,n=e.showPackages,a=Object(o.b)(),c=a.loading,r=a.error,i=Object(H.a)({limit:25,sort:D.a.PublishDateDesc}).results;return Object(A.useMemo)((function(){return c||r||!i?[]:t?i.slice(0,t):n?n.map((function(e){var t=Object(U.a)({packages:i},e.name);if(t)return Object(y.a)(Object(y.a)({},t),{},{comment:e.comment})})).filter((function(e){return void 0!==e})):void 0}),[i,r,c,t,n])}(n);return a?Object(p.jsxs)(c.a,{color:"white","data-testid":g.featuredContainer,direction:"column",px:m.X,py:m.Y,zIndex:"0",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.featuredHeader,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",children:n.name}),Object(p.jsx)(I.a,{"data-testid":g.featuredGrid,gap:4,mt:8,templateColumns:{base:"1fr",xl:"1fr 1fr"},children:null===a||void 0===a?void 0:a.slice(0,4).map((function(e){return Object(p.jsx)(F.a,{pkg:e},e.name)}))})]}):null},B=n(391),Y=n(65),M=n(203),_=Object(Y.b)(a||(a=Object(B.a)(["\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n"]))),q=Object(C.a)((function(e,t){return Object(p.jsx)(M.a,Object(y.a)({animation:"".concat(_," 10s linear infinite"),bg:"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)",bgSize:"200% 200%",ref:t},e))})),J=n(76),V=function(){return Object(p.jsxs)(c.a,{align:"center",color:"white",direction:"column",h:"20rem",justify:"center",px:m.X,py:m.Y,textAlign:"center",zIndex:"1",children:[Object(p.jsx)(l.a,{as:"h1","data-testid":g.heroHeader,size:"xl",children:"Simplify cloud development with constructs"}),Object(p.jsx)(l.a,{as:"h2","data-testid":g.heroSubtitle,fontWeight:"normal",mt:4,size:"md",children:"Find and use open-source Cloud Development Kit (CDK) libraries"}),Object(p.jsx)(M.a,{color:"initial",maxW:"36rem",mt:8,mx:"auto",w:"full",children:Object(p.jsxs)(J.a,{hasButton:!0,children:[Object(p.jsx)(J.b,{}),Object(p.jsx)(J.c,{})]})})]})},Q=n(215),Z=n(236),$=n(235),ee=n(48),te=n(121),ne=function(e){var t=e.title,n=e.description,a=e.children;return Object(p.jsxs)(I.a,{color:"blue.800","data-testid":g.infoSection,px:m.X,py:m.Y,templateColumns:"1fr",templateRows:"auto 1fr auto",children:[Object(p.jsx)(l.a,{as:"h3","data-testid":g.infoSectionHeading,fontSize:"1.5rem",fontWeight:"semibold",lineHeight:"lg",mb:2,children:t}),Object(p.jsx)(d.a,{"data-testid":g.infoSectionDescription,fontSize:"lg",mb:4,children:n}),a]})},ae=function(){return Object(p.jsxs)(c.a,{bg:"white",direction:"column",children:[Object(p.jsx)(M.a,{px:m.X,py:m.Y,children:Object(p.jsx)(d.a,{color:"blue.800",fontSize:"1.25rem",lineHeight:"1.5",textAlign:"center",children:"Construct Hub is a place to discover Cloud Development Kit (CDK) construct libraries, building blocks for cloud applications published by the open-source community, AWS, and partners. CDK is a software development framework for defining cloud infrastructure using familiar programming languages."})}),Object(p.jsx)(Q.a,{mx:m.X,w:"auto"}),Object(p.jsxs)(I.a,{"data-testid":g.infoContainer,templateColumns:{base:"1fr",lg:"1fr auto 1fr"},templateRows:{base:"1fr auto 1fr",lg:"1fr"},textAlign:"left",children:[Object(p.jsx)(ne,{description:" For all three CDKs: AWS CDK, which generates CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.",title:"A single home for all CDKs",children:Object(p.jsx)(c.a,{align:"center",pt:4,sx:{gap:"4rem"},wrap:"wrap",children:Object.entries(ee.b).map((function(e){var t=Object(w.a)(e,2),n=t[0],a=t[1],c=a.name,r=a.imgsrc;return Object(p.jsx)(j.a,{color:"blue.500","data-testid":g.infoSectionIcon,fontWeight:"bold",to:Object(h.c)({cdkType:n,sort:D.a.DownloadsDesc}),children:Object(p.jsxs)(Z.a,{align:"center",spacing:2,children:[Object(p.jsx)($.a,{"aria-label":c,h:8,src:r}),Object(p.jsx)("span",{children:c})]})},n)}))})}),Object(p.jsx)(Q.a,{display:{base:"none",lg:"initial"},h:"auto",my:10,orientation:"vertical"}),Object(p.jsx)(Q.a,{display:{lg:"none"},mx:10,w:"auto"}),Object(p.jsx)(ne,{description:"Find documentation, API reference, and code samples in CDK-supported languages, such as Java, .NET, TypeScript, and Python. Define, test, and deploy cloud infrastructure using loops, conditionals, unit testing, and data structures.",title:"Support across languages",children:Object(p.jsx)(c.a,{align:"center",pt:4,sx:{gap:"4rem"},wrap:"wrap",children:Object.entries(te.c).filter((function(e){var t=Object(w.a)(e,1)[0];return te.e.has(t)})).map((function(e){var t=Object(w.a)(e,2),n=t[0],a=t[1],c=a.icon,r=a.name;return Object(p.jsx)(j.a,{color:"blue.500","data-testid":g.infoSectionIcon,fontWeight:"bold",to:Object(h.c)({languages:[n],sort:D.a.DownloadsDesc}),children:Object(p.jsxs)(Z.a,{align:"center",spacing:2,children:[Object(p.jsx)(c,{"aria-label":r,h:8,w:8}),Object(p.jsx)("span",{children:r})]},n)},n)}))})})]})]})},ce=function(){var e,t,n,a=Object(s.b)().data,l=Object(o.b)().data,d=null!==(e=null===a||void 0===a||null===(t=a.featureFlags)||void 0===t?void 0:t.fullSite)&&void 0!==e&&e,u=(null!==(n=null===l||void 0===l?void 0:l.packages.length)&&void 0!==n?n:0)>0;return Object(p.jsx)(i.a,{meta:{title:"Construct Hub",description:"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.",suffix:!1},pageName:"home",children:Object(p.jsxs)(q,{as:c.a,"data-testid":g.page,direction:"column",children:[Object(p.jsx)(r.a,{}),Object(p.jsx)(V,{}),Object(p.jsx)(ae,{}),u&&d?Object(p.jsxs)(p.Fragment,{children:[Object(p.jsx)(v,{}),Object(p.jsx)(N,{}),Object(p.jsx)(X,{})]}):null]})})}}}]);
2
+ //# sourceMappingURL=6.8a76d46f.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["constants/pageInfo.ts","components/Page/Page.tsx","util/package.ts","api/package/util.ts","hooks/useQueryParams/useQueryParams.ts","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/Time/Time.tsx","components/Highlight/Highlight.tsx","components/PackageTag/PackageTag.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","views/Home/constants.ts","views/Home/testIds.ts","views/Home/Categories.tsx","views/Home/PackageGrid.tsx","views/Home/CDKTypeTabs.tsx","hooks/useHistoryState/useHistoryState.ts","views/Home/Featured.tsx","views/Home/useSection.ts","views/Home/GradientContainer.tsx","views/Home/Hero.tsx","views/Home/InfoSection.tsx","views/Home/Info.tsx","views/Home/Home.tsx"],"names":["pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","Page","children","meta","pageName","trackPageView","usePageView","useEffect","suffix","title","description","formattedTitle","Helmet","process","content","charSet","property","highlightsFrom","packageTags","length","reduce","accum","tag","highlight","tagObjectsFrom","keywords","tagObjects","Array","tagLabels","Set","filter","Boolean","keyword","label","map","id","mapPackageTags","KEYWORD_IGNORE_LIST","has","mapPackageKeywords","toLowerCase","push","add","getFullPackageName","scope","getAssetsPath","version","prefix","API_PATHS","PACKAGES_PREFIX","body","sanitizeVersion","ver","sanitized","startsWith","substring","findPackage","catalog","pkg","packages","p","sort","p1","p2","date1","Date","metadata","date","getTime","useQueryParams","useLocation","useMemo","URLSearchParams","useConfigValue","key","data","useConfig","defaultLang","Language","TypeScript","LOCAL_KEY","isValidLang","lang","TEMP_SUPPORTED_LANGUAGES","getInitialLang","langFromParams","storedLang","localStorage","getItem","useLanguage","options","updateUrl","updateSaved","pathname","hash","useHistory","replace","params","get","QUERY_PARAMS","LANGUAGE","useState","language","setLanguage","set","toString","update","useCallback","val","setItem","PackageCardType","testIds","createTestIds","Detail","dataTestid","tooltip","value","hasArrow","isDisabled","placement","fontSize","zIndex","Details","usePackageCard","author","useStats","downloads","npm","authorName","publishDate","undefined","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","color","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","fontWeight","Heading","currentLanguage","constructFramework","cdkType","cdkVersion","majorVersion","Link","getPackagePath","align","CDKType","mr","wordBreak","Highlight","sizes","sm","md","lg","PackageLanguages","isRounded","languages","packageName","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","left","right","LANGUAGES","indexOf","info","isSupportedByLibrary","includes","isSupportedByConstructHub","Icon","icon","borderRadius","h","opacity","w","LanguageSupportTooltip","Languages","Tags","tags","slice","PackageTag","variant","WideCard","_hover","bg","border","boxShadow","wideContainer","minH","templateColumns","base","direction","justify","sx","gap","spacing","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","Wide","Provider","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","alt","src","tagProps","textDecoration","isSupported","langName","LANGUAGE_NAME_MAP","message","SECTION_PADDING","X","Y","DEFAULT_CATEGORIES","url","Categories","categories","categoriesContainer","my","px","py","categoriesHeader","mb","categoriesDescription","category","backgroundColor","colorScheme","style","PackageGrid","packageGrid","mt","xl","tabs","community","aws","hashicorp","PackageTab","cdkTypeTab","PackageTabPanel","props","cdkTypeGrid","cdkTypeSeeAllButton","onClick","window","scrollTo","CatalogSearchSort","DownloadsDesc","CDKTypeTabs","useCatalogResults","limit","initialValue","history","location","state","rawState","rawSetState","useHistoryState","tabIndex","setTabIndex","cdkTypeSection","cdkTypeSectionHeading","cdkTypeSectionDescription","ROUTES","CONTRIBUTE","defaultIndex","onChange","index","Featured","homePackages","DEFAULT_FEATURED_PACKAGES","sections","featured","showLastUpdated","section","showPackages","useCatalog","loading","error","results","PublishDateDesc","useSection","featuredContainer","featuredHeader","featuredGrid","animation","keyframes","GradientContainer","bgSize","Hero","textAlign","heroHeader","heroSubtitle","maxW","mx","SearchBar","hasButton","InfoSection","infoSection","templateRows","infoSectionHeading","infoSectionDescription","Info","infoContainer","pt","CDKTYPE_RENDER_MAP","cdktype","imgsrc","infoSectionIcon","display","orientation","Home","config","fullSite","featureFlags","hasPackages","Flex","DevPreviewBanner"],"mappings":"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","file":"static/js/6.8a76d46f.chunk.js","sourcesContent":["export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta\n content=\"default-src 'self' 'unsafe-inline' https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; connect-src 'self' https://*.shortbread.aws.dev ws://localhost:3000 https://*.awsstatic.com https://amazonwebservices.d2.sc.omtrdc.net; frame-src 'none'; img-src 'self' https://* http://*.omtrdc.net; object-src 'none'; style-src 'self' 'unsafe-inline';\"\n httpEquiv=\"Content-Security-Policy\"\n />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n","import { API_PATHS } from \"../../constants/url\";\nimport { CatalogPackage, Packages } from \"./packages\";\n\nexport const getFullPackageName = (name: string, scope?: string) => {\n return scope ? `${scope}/${name}` : name;\n};\n\nexport const getAssetsPath = (\n name: string,\n version: string,\n scope?: string\n) => {\n const prefix = `${API_PATHS.PACKAGES_PREFIX}/`;\n const body = getFullPackageName(name, scope);\n const suffix = `/v${version}`;\n return `${prefix}${body}${suffix}`;\n};\n\nexport const sanitizeVersion = (ver: string) => {\n let sanitized = ver;\n if (sanitized.startsWith(\"~\") || sanitized.startsWith(\"^\")) {\n sanitized = sanitized.substring(1);\n }\n return sanitized;\n};\n\nexport const findPackage = (\n catalog: Packages,\n pkg: string\n): CatalogPackage | undefined => {\n const packages = catalog.packages.filter((p) => p.name === pkg);\n\n // return the most recently published version\n if (packages.length > 1) {\n return packages.sort((p1, p2) => {\n const date1 = new Date(p1.metadata.date);\n const date2 = new Date(p2.metadata.date);\n return date2.getTime() - date1.getTime();\n })[0];\n }\n\n return packages[0];\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { useStats } from \"../../contexts/Stats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\ninterface DetailProps {\n \"data-testid\": string;\n\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the NPM registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"blue.500\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n description,\n comment,\n metadata: { constructFramework },\n name,\n version,\n } = usePackageCard();\n\n const cdkType = constructFramework?.name;\n const cdkVersion = constructFramework?.majorVersion;\n\n return (\n <>\n <LinkOverlay\n as={Link}\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge majorVersion={cdkVersion} mr={2} name={cdkType} />\n <ChakraHeading\n as=\"h3\"\n color=\"blue.800\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"blue.800\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { PackageLanguages } from \"../PackageLanguages\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\nimport { usePackageCard } from \"./PackageCard\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"gray.50\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"white\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"blue.800\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\n\nexport interface PackageCardProps {\n pkg: CatalogPackage;\n variant?: PackageCardType;\n}\n\nconst PackageCardContext = createContext<\n (CatalogPackage & { comment?: string }) | null\n>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={pkg}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import { Stack, Image, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n return (\n <Stack align=\"center\" direction=\"row\" spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<LanguageSupportTooltipProps> =\n ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n };\n","export const SECTION_PADDING = {\n X: [4, 8, 12, 16, 20],\n Y: [4, 6, 8],\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"homeRedesign\", [\n \"page\",\n \"packageGrid\",\n // Hero Section\n \"heroHeader\",\n \"heroSubtitle\",\n // Info Section\n \"infoContainer\",\n \"infoSection\",\n \"infoSectionHeading\",\n \"infoSectionDescription\",\n \"infoSectionIcon\",\n // Featured / Recently Updated Section\n \"featuredContainer\",\n \"featuredHeader\",\n \"featuredGrid\",\n // CDK Type Section\n \"cdkTypeSection\",\n \"cdkTypeSectionHeading\",\n \"cdkTypeSectionDescription\",\n \"cdkTypeTab\",\n \"cdkTypeGrid\",\n \"cdkTypeSeeAllButton\",\n \"categoriesContainer\",\n \"categoriesHeader\",\n \"categoriesDescription\",\n] as const);\n","import { Flex, Heading, Text, Button, Wrap, WrapItem } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Category } from \"../../api/config\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\n/**\n * Categories used if config does not have specific categories\n */\nconst DEFAULT_CATEGORIES: Category[] = [\n { title: \"Monitoring\", url: getSearchPath({ keywords: [\"monitoring\"] }) },\n { title: \"Containers\", url: getSearchPath({ keywords: [\"containers\"] }) },\n { title: \"Serverless\", url: getSearchPath({ keywords: [\"serverless\"] }) },\n { title: \"Databases\", url: getSearchPath({ keywords: [\"databases\"] }) },\n { title: \"Utilities\", url: getSearchPath({ keywords: [\"utilities\"] }) },\n { title: \"Deployment\", url: getSearchPath({ keywords: [\"deployment\"] }) },\n { title: \"Websites\", url: getSearchPath({ keywords: [\"web\"] }) },\n { title: \"Security\", url: getSearchPath({ keywords: [\"security\"] }) },\n { title: \"Compliance\", url: getSearchPath({ keywords: [\"compliance\"] }) },\n { title: \"Network\", url: getSearchPath({ keywords: [\"network\"] }) },\n {\n title: \"Artificial Intelligence (AI)\",\n url: getSearchPath({ keywords: [\"artificial intelligence (ai)\"] }),\n },\n {\n title: \"Cloud Services Integrations\",\n url: getSearchPath({ keywords: [\"cloud services integrations\"] }),\n },\n];\n\nexport const Categories: FunctionComponent = () => {\n const categories = useConfigValue(\"categories\") ?? DEFAULT_CATEGORIES;\n\n return (\n <Flex\n data-testid={testIds.categoriesContainer}\n direction=\"column\"\n my={4}\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n color=\"white\"\n data-testid={testIds.categoriesHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={1}\n >\n Find constructs by use case\n </Heading>\n <Text\n color=\"white\"\n data-testid={testIds.categoriesDescription}\n lineHeight=\"md\"\n mb={5}\n >\n With hundreds of constructs available, there may already be one (or\n more!) that that can serve as a building block for your solution.\n </Text>\n\n <Wrap>\n {categories.map((category) => (\n <WrapItem key={category.title}>\n <Button\n _hover={{ backgroundColor: \"white\" }}\n as={NavLink}\n color=\"blue.800\"\n colorScheme=\"gray\"\n size=\"md\"\n style={{ boxShadow: \"0px 4px 4px rgba(73, 73, 73, 0.63)\" }}\n to={category.url}\n >\n {category.title}\n </Button>\n </WrapItem>\n ))}\n </Wrap>\n </Flex>\n );\n};\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport testIds from \"./testIds\";\n\nexport const PackageGrid: FunctionComponent<{ packages: CatalogPackage[] }> = ({\n packages,\n}) => {\n return (\n <Grid\n data-testid={testIds.packageGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {packages.map((pkg) => (\n <PackageCard key={`${pkg.name}-${pkg.version}`} pkg={pkg} />\n ))}\n </Grid>\n );\n};\n","import {\n Button,\n Flex,\n forwardRef,\n Heading,\n Tab,\n TabList,\n TabPanelProps,\n TabPanel,\n TabPanels,\n Tabs,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { ROUTES } from \"../../constants/url\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\nimport { useHistoryState } from \"../../hooks/useHistoryState\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { PackageGrid } from \"./PackageGrid\";\nimport testIds from \"./testIds\";\n\ninterface PackageTabProps {\n data: ReturnType<typeof useCatalogResults>;\n label: string;\n}\n\ninterface PackageTabPanelProps extends PackageTabProps, TabPanelProps {\n tag: string;\n}\n\nconst tabs = {\n community: {\n label: \"Community\",\n tag: \"community\",\n },\n aws: {\n label: \"AWS\",\n tag: \"aws-official\",\n },\n hashicorp: {\n label: \"HashiCorp\",\n tag: \"hashicorp-official\",\n },\n};\n\nconst PackageTab: FunctionComponent<PackageTabProps> = ({ data, label }) => {\n return (\n <Tab\n data-testid={testIds.cdkTypeTab}\n data-value={label}\n isDisabled={data.page.length < 1}\n >\n {label}\n </Tab>\n );\n};\n\nconst PackageTabPanel = forwardRef<PackageTabPanelProps, \"div\">(\n ({ label, data, tag, ...props }, ref) => {\n return (\n <TabPanel data-testid={testIds.cdkTypeGrid} ref={ref} {...props} p={0}>\n <PackageGrid packages={data.page} />\n\n <Flex justify=\"center\" w=\"full\">\n <NavLink\n data-testid={testIds.cdkTypeSeeAllButton}\n onClick={() => window.scrollTo(0, 0)}\n to={getSearchPath({\n tags: tag ? [tag] : undefined,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n >\n <Button colorScheme=\"blue\" my={8}>\n See all {label} constructs\n </Button>\n </NavLink>\n </Flex>\n </TabPanel>\n );\n }\n);\n\nexport const CDKTypeTabs: FunctionComponent = () => {\n const community = useCatalogResults({\n tags: [tabs.community.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const aws = useCatalogResults({\n tags: [tabs.aws.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n const hashicorp = useCatalogResults({\n tags: [tabs.hashicorp.tag],\n limit: 4,\n sort: CatalogSearchSort.DownloadsDesc,\n });\n\n const [tabIndex, setTabIndex] = useHistoryState(\"cdkTypeTab\", 0);\n\n return (\n <Flex\n bg=\"white\"\n color=\"blue.800\"\n data-testid={testIds.cdkTypeSection}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.cdkTypeSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n Find constructs by publisher\n </Heading>\n <Text\n data-testid={testIds.cdkTypeSectionDescription}\n lineHeight=\"md\"\n mb={5}\n >\n Find constructs published by the open-source community, AWS, and\n HashiCorp in one location. You can also have your own construct\n libraries listed on Construct Hub by publishing them on npm registry.\n More concrete guidance can be found in the{\" \"}\n <NavLink color=\"blue.500\" to={ROUTES.CONTRIBUTE}>\n Contribute\n </NavLink>{\" \"}\n page.\n </Text>\n <Tabs\n defaultIndex={tabIndex}\n onChange={(index) => setTabIndex(index)}\n variant=\"line\"\n >\n <TabList>\n <PackageTab data={community} label={tabs.community.label} />\n\n <PackageTab data={aws} label={tabs.aws.label} />\n\n <PackageTab data={hashicorp} label={tabs.hashicorp.label} />\n </TabList>\n <TabPanels minH=\"28.5rem\">\n <PackageTabPanel\n data={community}\n label={tabs.community.label.toLowerCase()}\n tag={tabs.community.tag}\n />\n\n <PackageTabPanel\n data={aws}\n label={tabs.aws.label}\n tag={tabs.aws.tag}\n />\n\n <PackageTabPanel\n data={hashicorp}\n label={tabs.hashicorp.label}\n tag={tabs.hashicorp.tag}\n />\n </TabPanels>\n </Tabs>\n </Flex>\n );\n};\n","import { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nexport const useHistoryState = <T>(\n key: string,\n initialValue: T\n): [T, (t: T) => void] => {\n const history = useHistory();\n const [rawState, rawSetState] = useState<T>(() => {\n const value = (history.location.state as any)?.[key];\n return value ?? initialValue;\n });\n const setState = (value: T) => {\n history.replace({\n ...history.location,\n state: {\n ...(history.location.state as any),\n [key]: value,\n },\n });\n rawSetState(value);\n };\n return [rawState, setState];\n};\n","import { Flex, Grid, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { DEFAULT_FEATURED_PACKAGES } from \"../../api/config\";\nimport { PackageCard } from \"../../components/PackageCard\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\nimport { useSection } from \"./useSection\";\n\nexport const Featured: FunctionComponent = () => {\n const homePackages = useConfigValue(\"featuredPackages\");\n const [featured = { name: \"Recently Updated\", showLastUpdated: 4 }] = (\n homePackages ?? DEFAULT_FEATURED_PACKAGES\n ).sections;\n\n const section = useSection(featured);\n\n if (!section) {\n return null;\n }\n\n return (\n <Flex\n color=\"white\"\n data-testid={testIds.featuredContainer}\n direction=\"column\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n zIndex=\"0\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.featuredHeader}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n >\n {featured.name}\n </Heading>\n <Grid\n data-testid={testIds.featuredGrid}\n gap={4}\n mt={8}\n templateColumns={{ base: \"1fr\", xl: \"1fr 1fr\" }}\n >\n {section?.slice(0, 4).map((pkg) => (\n <PackageCard key={pkg.name} pkg={pkg} />\n ))}\n </Grid>\n </Flex>\n );\n};\n","import { useMemo } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { FeaturedPackagesDetail } from \"../../api/config\";\nimport { CatalogPackage } from \"../../api/package/packages\";\nimport { findPackage } from \"../../api/package/util\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useCatalogResults } from \"../../hooks/useCatalogResults\";\n\nexport const useSection = ({\n showLastUpdated,\n showPackages,\n}: {\n showLastUpdated?: number;\n showPackages?: FeaturedPackagesDetail[];\n}) => {\n const { loading, error } = useCatalog();\n const { results } = useCatalogResults({\n limit: 25,\n sort: CatalogSearchSort.PublishDateDesc,\n });\n\n return useMemo(() => {\n if (loading || error || !results) return [];\n\n if (showLastUpdated) {\n return results.slice(0, showLastUpdated);\n } else if (showPackages) {\n return showPackages\n .map((p) => {\n const pkg = findPackage({ packages: results }, p.name);\n if (pkg) {\n return {\n ...pkg,\n comment: p.comment,\n };\n }\n return undefined;\n })\n .filter((pkg) => pkg !== undefined) as CatalogPackage[];\n } else {\n return undefined;\n }\n }, [results, error, loading, showLastUpdated, showPackages]);\n};\n","import { Box, BoxProps, forwardRef, keyframes } from \"@chakra-ui/react\";\n\nconst gradient = \"linear-gradient(274.2deg, #143870 20.69%, #1F50A1 84.17%)\";\n\nconst animation = keyframes`\n 0% {\n background-position:0% 50%;\n }\n\n 50% {\n background-position:100% 50%;\n }\n\n 100% {\n background-position:0% 50%;\n }\n`;\n\nexport const GradientContainer = forwardRef<BoxProps, \"div\">((props, ref) => (\n <Box\n animation={`${animation} 10s linear infinite`}\n bg={gradient}\n bgSize=\"200% 200%\"\n ref={ref}\n {...props}\n />\n));\n","import { Box, Flex, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n SearchBar,\n SearchOverlay,\n SearchSuggestions,\n} from \"../../components/SearchBar\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport const Hero: FunctionComponent = () => {\n return (\n <Flex\n align=\"center\"\n color=\"white\"\n direction=\"column\"\n h=\"20rem\"\n justify=\"center\"\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n textAlign=\"center\"\n zIndex=\"1\"\n >\n <Heading as=\"h1\" data-testid={testIds.heroHeader} size=\"xl\">\n Simplify cloud development with constructs\n </Heading>\n <Heading\n as=\"h2\"\n data-testid={testIds.heroSubtitle}\n fontWeight=\"normal\"\n mt={4}\n size=\"md\"\n >\n Find and use open-source Cloud Development Kit (CDK) libraries\n </Heading>\n <Box color=\"initial\" maxW=\"36rem\" mt={8} mx=\"auto\" w=\"full\">\n <SearchBar hasButton>\n <SearchOverlay />\n <SearchSuggestions />\n </SearchBar>\n </Box>\n </Flex>\n );\n};\n","import { Grid, Heading, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactNode } from \"react\";\nimport { SECTION_PADDING } from \"./constants\";\nimport testIds from \"./testIds\";\n\nexport interface InfoSectionProps {\n title: string;\n description: ReactNode;\n}\n\nexport const InfoSection: FunctionComponent<InfoSectionProps> = ({\n title,\n description,\n children,\n}) => (\n <Grid\n color=\"blue.800\"\n data-testid={testIds.infoSection}\n px={SECTION_PADDING.X}\n py={SECTION_PADDING.Y}\n templateColumns=\"1fr\"\n templateRows=\"auto 1fr auto\"\n >\n <Heading\n as=\"h3\"\n data-testid={testIds.infoSectionHeading}\n fontSize=\"1.5rem\"\n fontWeight=\"semibold\"\n lineHeight=\"lg\"\n mb={2}\n >\n {title}\n </Heading>\n <Text data-testid={testIds.infoSectionDescription} fontSize=\"lg\" mb={4}>\n {description}\n </Text>\n {children}\n </Grid>\n);\n","import { Box, Divider, Flex, Grid, Image, Stack, Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { CatalogSearchSort } from \"../../api/catalog-search/constants\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { CDKType, CDKTYPE_RENDER_MAP } from \"../../constants/constructs\";\nimport {\n Language,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getSearchPath } from \"../../util/url\";\nimport { SECTION_PADDING } from \"./constants\";\nimport { InfoSection } from \"./InfoSection\";\nimport testIds from \"./testIds\";\n\nexport const Info: FunctionComponent = () => (\n <Flex bg=\"white\" direction=\"column\">\n <Box px={SECTION_PADDING.X} py={SECTION_PADDING.Y}>\n <Text\n color=\"blue.800\"\n fontSize=\"1.25rem\"\n lineHeight=\"1.5\"\n textAlign=\"center\"\n >\n Construct Hub is a place to discover Cloud Development Kit (CDK)\n construct libraries, building blocks for cloud applications published by\n the open-source community, AWS, and partners. CDK is a software\n development framework for defining cloud infrastructure using familiar\n programming languages.\n </Text>\n </Box>\n\n <Divider mx={SECTION_PADDING.X} w=\"auto\" />\n\n <Grid\n data-testid={testIds.infoContainer}\n templateColumns={{ base: \"1fr\", lg: \"1fr auto 1fr\" }}\n templateRows={{ base: \"1fr auto 1fr\", lg: \"1fr\" }}\n textAlign=\"left\"\n >\n <InfoSection\n description=\" For all three CDKs: AWS CDK, which generates CloudFormation templates, CDK for Terraform (CDKtf), which generates HashiCorp Terraform configuration, and CDK for Kubernetes (CDK8s), which generates Kubernetes manifests.\"\n title=\"A single home for all CDKs\"\n >\n <Flex align=\"center\" pt={4} sx={{ gap: \"4rem\" }} wrap=\"wrap\">\n {Object.entries(CDKTYPE_RENDER_MAP).map(\n ([cdktype, { name, imgsrc }]) => (\n <NavLink\n color=\"blue.500\"\n data-testid={testIds.infoSectionIcon}\n fontWeight=\"bold\"\n key={cdktype}\n to={getSearchPath({\n cdkType: cdktype as CDKType,\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n >\n <Stack align=\"center\" spacing={2}>\n <Image aria-label={name} h={8} src={imgsrc} />\n <span>{name}</span>\n </Stack>\n </NavLink>\n )\n )}\n </Flex>\n </InfoSection>\n\n <Divider\n display={{ base: \"none\", lg: \"initial\" }}\n h=\"auto\"\n my={10}\n orientation=\"vertical\"\n />\n <Divider display={{ lg: \"none\" }} mx={10} w=\"auto\" />\n\n <InfoSection\n description=\"Find documentation, API reference, and code samples in CDK-supported languages, such as Java, .NET, TypeScript, and Python. Define, test, and deploy cloud infrastructure using loops, conditionals, unit testing, and data structures.\"\n title=\"Support across languages\"\n >\n <Flex align=\"center\" pt={4} sx={{ gap: \"4rem\" }} wrap=\"wrap\">\n {Object.entries(LANGUAGE_RENDER_MAP)\n .filter(([language]) =>\n TEMP_SUPPORTED_LANGUAGES.has(language as Language)\n )\n .map(([language, { icon: Icon, name }]) => (\n <NavLink\n color=\"blue.500\"\n data-testid={testIds.infoSectionIcon}\n fontWeight=\"bold\"\n key={language}\n to={getSearchPath({\n languages: [language as Language],\n sort: CatalogSearchSort.DownloadsDesc,\n })}\n >\n <Stack align=\"center\" key={language} spacing={2}>\n <Icon aria-label={name} h={8} w={8} />\n <span>{name}</span>\n </Stack>\n </NavLink>\n ))}\n </Flex>\n </InfoSection>\n </Grid>\n </Flex>\n);\n","import { Flex } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { DevPreviewBanner } from \"../../components/DevPreviewBanner\";\nimport { Page } from \"../../components/Page\";\nimport { useCatalog } from \"../../contexts/Catalog\";\nimport { useConfig } from \"../../contexts/Config\";\nimport { Categories } from \"./Categories\";\nimport { CDKTypeTabs } from \"./CDKTypeTabs\";\nimport { Featured } from \"./Featured\";\nimport { GradientContainer } from \"./GradientContainer\";\nimport { Hero } from \"./Hero\";\nimport { Info } from \"./Info\";\nimport testIds from \"./testIds\";\n\nexport const Home: FunctionComponent = () => {\n const { data: config } = useConfig();\n const { data: catalog } = useCatalog();\n const fullSite = config?.featureFlags?.fullSite ?? false;\n const hasPackages = (catalog?.packages.length ?? 0) > 0;\n\n return (\n <Page\n meta={{\n title: \"Construct Hub\",\n description:\n \"Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTf and other construct-based tools.\",\n suffix: false,\n }}\n pageName=\"home\"\n >\n <GradientContainer\n as={Flex}\n data-testid={testIds.page}\n direction=\"column\"\n >\n <DevPreviewBanner />\n\n <Hero />\n\n <Info />\n\n {hasPackages && fullSite ? (\n <>\n <Categories />\n <CDKTypeTabs />\n <Featured />\n </>\n ) : null}\n </GradientContainer>\n </Page>\n );\n};\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[2],{107:function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"a",(function(){return p}));var a=n(6),r=n(5),c=n(209),o=n(0),i="prefersWarnOnExternalLinkClick",s=n(30),l=n(52),u=n(207),d=n(229),b=n(158),j=n(231),f=n(51),O=n(1),h=function(e){var t=e.href,n=e.isOpen,a=e.onClick,c=e.onClose,h=e.setShouldWarn,v=Object(o.useState)(!0),m=Object(r.a)(v,2),p=m[0],g=m[1];return Object(O.jsx)(l.a,{closeOnOverlayClick:!1,isOpen:n,onClose:c,children:Object(O.jsx)(l.h,{children:Object(O.jsxs)(l.d,{color:"blue.800",children:[Object(O.jsx)(l.g,{children:"Confirm"}),Object(O.jsxs)(l.b,{children:[Object(O.jsx)(u.a,{fontSize:"lg",mb:2,children:"This link is taking you to an external site"}),Object(O.jsx)(u.a,{bg:"gray.100",borderRadius:"sm",color:"blue.500",fontSize:"sm",mb:4,p:1,children:t}),Object(O.jsx)(d.a,{onChange:function(e){var t=!e.target.checked;g(t)},children:"Do not show this warning again."})]}),Object(O.jsxs)(l.f,{children:[Object(O.jsx)(b.a,{onClick:function(){g(!0),c()},variant:"ghost",children:"Cancel"}),Object(O.jsx)(j.a,{hasArrow:!0,label:t,placement:"top",children:Object(O.jsx)(f.a,{hasIcon:!1,hasWarning:!1,href:t,noFollow:!0,onClick:function(e){if(!p){h(p);try{localStorage.setItem(i,JSON.stringify(p))}catch(t){}}null===a||void 0===a||a(e),c()},children:Object(O.jsx)(b.a,{colorScheme:"blue",ml:4,rightIcon:Object(O.jsx)(s.k,{}),tabIndex:0,variant:"ghost",children:"Proceed"})})})]})]})})})},v=Object(o.createContext)((function(e){return e.onClick})),m=function(){return Object(o.useContext)(v)},p=function(e){var t=e.children,n=Object(o.useState)(null),s=Object(r.a)(n,2),l=s[0],u=s[1],d=Object(c.a)({onClose:function(){u(null)}}),b=d.isOpen,j=d.onOpen,f=d.onClose,m=Object(o.useState)((function(){try{var e,t=null!==(e=localStorage.getItem(i))&&void 0!==e?e:"true";return JSON.parse(t)}catch(n){return!0}})),p=Object(r.a)(m,2),g=p[0],x=p[1],y=Object(o.useCallback)((function(e){var t=e.href,n=e.onClick;if(!g)return n;return function(e){u({href:t,onClick:n}),e.preventDefault(),j()}}),[j,g]);return Object(O.jsxs)(v.Provider,{value:y,children:[t,Object(O.jsx)(h,Object(a.a)({isOpen:b,onClose:f,setShouldWarn:x},l))]})}},121:function(e,t,n){"use strict";n.d(t,"d",(function(){return o})),n.d(t,"f",(function(){return d})),n.d(t,"a",(function(){return b})),n.d(t,"b",(function(){return j})),n.d(t,"e",(function(){return f})),n.d(t,"c",(function(){return O}));var a,r,c,o,i=n(4),s=n(6),l=n(159),u=n(1);!function(e){e.DotNet="dotnet",e.TypeScript="typescript",e.Python="python",e.Go="golang",e.Java="java"}(o||(o={}));var d=(a={},Object(i.a)(a,o.TypeScript,o.TypeScript),Object(i.a)(a,o.Python,o.Python),Object(i.a)(a,o.Go,o.Go),Object(i.a)(a,o.Java,o.Java),Object(i.a)(a,o.DotNet,"csharp"),a),b=[o.TypeScript,o.Python,o.Java,o.Go,o.DotNet],j=(r={},Object(i.a)(r,o.TypeScript,"TypeScript"),Object(i.a)(r,o.Python,"Python"),Object(i.a)(r,o.Java,"Java"),Object(i.a)(r,o.Go,"Go"),Object(i.a)(r,o.DotNet,".NET"),r),f=new Set([o.Python,o.TypeScript,o.Java,o.DotNet]),O=(c={},Object(i.a)(c,o.TypeScript,{name:j.typescript,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 256",children:[Object(u.jsx)("path",{d:"M0 128v128h256V0H0z",fill:"#007ACC"}),Object(u.jsx)("path",{d:"M56.611 128.85l-.081 10.483h33.32v94.68h23.57v-94.68h33.32v-10.28c0-5.69-.122-10.444-.284-10.566-.122-.162-20.399-.244-44.983-.203l-44.739.122-.122 10.443zM206.567 118.108c6.501 1.626 11.459 4.51 16.01 9.224 2.357 2.52 5.851 7.112 6.136 8.209.08.325-11.053 7.802-17.798 11.987-.244.163-1.22-.894-2.317-2.52-3.291-4.794-6.745-6.867-12.028-7.232-7.76-.529-12.759 3.535-12.718 10.32 0 1.992.284 3.17 1.097 4.796 1.707 3.535 4.876 5.648 14.832 9.955 18.326 7.884 26.168 13.085 31.045 20.48 5.445 8.25 6.664 21.415 2.966 31.208-4.063 10.646-14.14 17.88-28.323 20.277-4.388.772-14.79.65-19.504-.203-10.28-1.829-20.033-6.908-26.047-13.572-2.357-2.601-6.949-9.387-6.664-9.875.122-.162 1.178-.812 2.356-1.503 1.138-.65 5.446-3.13 9.509-5.486l7.355-4.267 1.544 2.276c2.154 3.291 6.867 7.802 9.712 9.305 8.167 4.308 19.383 3.698 24.909-1.26 2.357-2.153 3.332-4.388 3.332-7.68 0-2.966-.366-4.266-1.91-6.5-1.99-2.845-6.054-5.243-17.595-10.24-13.206-5.69-18.895-9.225-24.096-14.833-3.007-3.25-5.852-8.452-7.03-12.8-.975-3.616-1.22-12.678-.447-16.335 2.723-12.76 12.353-21.658 26.25-24.3 4.51-.853 14.994-.528 19.424.57z",fill:"#FFF"})]}))}}),Object(i.a)(c,o.Python,{name:j.python,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{version:"1.0",viewBox:"0 0 110.421 109.846",children:[Object(u.jsxs)("defs",{children:[Object(u.jsxs)("linearGradient",{id:"a",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#ffe052"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#ffc331"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"d",x1:"89.137",x2:"147.777",xlinkHref:"#a",y1:"111.921",y2:"168.101"}),Object(u.jsxs)("linearGradient",{id:"b",children:[Object(u.jsx)("stop",{offset:"0",stopColor:"#387eb8"}),Object(u.jsx)("stop",{offset:"1",stopColor:"#366994"})]}),Object(u.jsx)("linearGradient",{gradientUnits:"userSpaceOnUse",id:"c",x1:"55.549",x2:"110.149",xlinkHref:"#b",y1:"77.07",y2:"131.853"})]}),Object(u.jsxs)("g",{color:"#000",children:[Object(u.jsx)("path",{d:"M99.75 67.469c-28.032 0-26.281 12.156-26.281 12.156l.031 12.594h26.75V96H62.875s-17.938-2.034-17.938 26.25 15.657 27.281 15.657 27.281h9.343v-13.125s-.503-15.656 15.407-15.656h26.531s14.906.241 14.906-14.406V82.125s2.263-14.656-27.031-14.656zM85 75.938a4.808 4.808 0 014.813 4.812A4.808 4.808 0 0185 85.563a4.808 4.808 0 01-4.813-4.813A4.808 4.808 0 0185 75.937z",fill:"url(#c)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"}),Object(u.jsx)("path",{d:"M100.546 177.315c28.032 0 26.281-12.156 26.281-12.156l-.03-12.594h-26.75v-3.781h37.374s17.938 2.034 17.938-26.25c0-28.285-15.657-27.282-15.657-27.282h-9.343v13.125s.503 15.657-15.407 15.657h-26.53s-14.907-.241-14.907 14.406v24.219s-2.263 14.656 27.031 14.656zm14.75-8.469a4.808 4.808 0 01-4.812-4.812 4.808 4.808 0 014.812-4.813 4.808 4.808 0 014.813 4.813 4.808 4.808 0 01-4.813 4.812z",fill:"url(#d)",overflow:"visible",style:{marker:"none"},transform:"translate(-44.938 -67.469)"})]})]}))}}),Object(i.a)(c,o.Java,{name:j.java,icon:function(e){return Object(u.jsxs)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 256 346",children:[Object(u.jsx)("path",{d:"M82.554 267.473s-13.198 7.675 9.393 10.272c27.369 3.122 41.356 2.675 71.517-3.034 0 0 7.93 4.972 19.003 9.279-67.611 28.977-153.019-1.679-99.913-16.517M74.292 229.659s-14.803 10.958 7.805 13.296c29.236 3.016 52.324 3.263 92.276-4.43 0 0 5.526 5.602 14.215 8.666-81.747 23.904-172.798 1.885-114.296-17.532",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M143.942 165.515c16.66 19.18-4.377 36.44-4.377 36.44s42.301-21.837 22.874-49.183c-18.144-25.5-32.059-38.172 43.268-81.858 0 0-118.238 29.53-61.765 94.6",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M233.364 295.442s9.767 8.047-10.757 14.273c-39.026 11.823-162.432 15.393-196.714.471-12.323-5.36 10.787-12.8 18.056-14.362 7.581-1.644 11.914-1.337 11.914-1.337-13.705-9.655-88.583 18.957-38.034 27.15 137.853 22.356 251.292-10.066 215.535-26.195M88.9 190.48s-62.771 14.91-22.228 20.323c17.118 2.292 51.243 1.774 83.03-.89 25.978-2.19 52.063-6.85 52.063-6.85s-9.16 3.923-15.787 8.448c-63.744 16.765-186.886 8.966-151.435-8.183 29.981-14.492 54.358-12.848 54.358-12.848M201.506 253.422c64.8-33.672 34.839-66.03 13.927-61.67-5.126 1.066-7.411 1.99-7.411 1.99s1.903-2.98 5.537-4.27c41.37-14.545 73.187 42.897-13.355 65.647 0 .001 1.003-.895 1.302-1.697",fill:"#5382A1"}),Object(u.jsx)("path",{d:"M162.439.371s35.887 35.9-34.037 91.101c-56.071 44.282-12.786 69.53-.023 98.377-32.73-29.53-56.75-55.526-40.635-79.72C111.395 74.612 176.918 57.393 162.439.37",fill:"#E76F00"}),Object(u.jsx)("path",{d:"M95.268 344.665c62.199 3.982 157.712-2.209 159.974-31.64 0 0-4.348 11.158-51.404 20.018-53.088 9.99-118.564 8.824-157.399 2.421.001 0 7.95 6.58 48.83 9.201",fill:"#5382A1"})]}))}}),Object(i.a)(c,o.Go,{name:j.golang,icon:function(e){return Object(u.jsx)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 512 192",children:Object(u.jsx)("path",{d:"M292.533 13.295l1.124.75c13.212 8.725 22.685 20.691 28.917 35.15 1.496 2.243.499 3.49-2.493 4.237l-5.063 1.296c-11.447 2.949-20.53 5.429-31.827 8.378l-6.443 1.678c-2.32.574-2.96.333-5.428-2.477l-.348-.399c-3.519-3.988-6.155-6.652-10.817-9.03l-.899-.443c-15.705-7.727-30.911-5.484-45.12 3.74-16.952 10.968-25.677 27.172-25.428 47.364.25 19.942 13.96 36.395 33.654 39.137 16.951 2.244 31.16-3.739 42.378-16.452 2.244-2.743 4.238-5.734 6.73-9.224h-48.11c-5.235 0-6.481-3.24-4.736-7.478l.864-2.035c3.204-7.454 8.173-18.168 11.4-24.294l.704-1.319c.862-1.494 2.612-3.513 5.977-3.513h80.224c3.603-11.415 9.449-22.201 17.246-32.407 18.198-23.931 40.135-36.396 69.8-41.63 25.427-4.488 49.359-1.995 71.046 12.713 19.694 13.461 31.909 31.66 35.15 55.59 4.237 33.654-5.485 61.075-28.668 84.508-16.453 16.702-36.645 27.172-59.829 31.908-6.73 1.247-13.461 1.496-19.942 2.244-22.685-.499-43.376-6.98-60.826-21.937-12.273-10.61-20.727-23.648-24.928-38.828a104.937 104.937 0 01-10.47 16.89c-17.949 23.683-41.381 38.39-71.046 42.38-24.43 3.24-47.115-1.497-67.058-16.454-18.447-13.96-28.917-32.407-31.66-55.34-3.24-27.173 4.737-51.603 21.19-73.041 17.7-23.184 41.132-37.891 69.8-43.126 22.999-4.16 45.037-1.595 64.936 11.464zM411.12 49.017l-.798.178c-23.183 5.235-38.14 19.942-43.624 43.375-4.488 19.444 4.985 39.138 22.934 47.115 13.71 5.983 27.421 5.235 40.633-1.496 19.694-10.22 30.413-26.175 31.66-47.613-.25-3.24-.25-5.734-.749-8.227-4.436-24.401-26.664-38.324-50.056-33.332zM116.416 94.564c.997 0 1.496.748 1.496 1.745l-.499 5.983c0 .997-.997 1.745-1.745 1.745l-54.344-.249c-.997 0-1.246-.748-.748-1.496l3.49-6.232c.499-.748 1.496-1.496 2.493-1.496h49.857zM121.9 71.63c.997 0 1.496.748 1.247 1.496l-1.995 5.983c-.249.997-1.246 1.495-2.243 1.495l-117.912.25c-.997 0-1.246-.499-.748-1.247l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247H121.9zm12.963-22.934c.997 0 1.246.748.748 1.496l-4.238 6.481c-.499.748-1.745 1.496-2.493 1.496l-90.24-.25c-.998 0-1.247-.498-.749-1.246l5.235-6.73c.499-.748 1.745-1.247 2.742-1.247h88.995z",fill:"#00ACD7"})}))}}),Object(i.a)(c,o.DotNet,{name:j.dotnet,icon:function(e){return Object(u.jsx)(l.a,Object(s.a)(Object(s.a)({},e),{},{"aria-hidden":"true",transform:"rotate(360)",viewBox:"0 0 32 32",children:Object(u.jsx)("path",{d:"M4.224 10.089v11.667h1.365v-8.438a12.58 12.58 0 00-.068-1.599h.052c.099.255.224.5.37.729l6 9.302h1.672V10.089h-1.359v8.203c-.016.573.016 1.146.083 1.714h-.031a13.986 13.986 0 00-.474-.781L5.995 10.09zm12.417 0v11.667h6.203l.005-1.281h-4.813v-4.047h4.214v-1.229h-4.214v-3.875h4.521V10.09zm7.25 0v1.234h3.354v10.432h1.365V11.323h3.391v-1.234zm-23.021 10a.86.86 0 00-.609.276.91.91 0 00-.26.641.901.901 0 001.542.641c.172-.167.271-.401.271-.641s-.099-.474-.271-.641a.876.876 0 00-.641-.276H.871z",fill:"#626262"})}))}}),c)},122:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return l}));var a=n(0),r=n(22),c=n(1),o=Object(a.createContext)({trackPageView:function(){}}),i=function(e){var t=e.children,n=Object(r.h)().pathname,i=Object(a.useRef)(null),s=Object(a.useCallback)((function(e){var t,a,r;i.current!==n&&(null===(t=window)||void 0===t||null===(a=t.AWSMA)||void 0===a||null===(r=a.ready)||void 0===r||r.call(a,(function(){document.dispatchEvent(new CustomEvent(window.AWSMA.TRIGGER_EVENT,{detail:e})),i.current=n})))}),[n]);return Object(c.jsx)(o.Provider,{value:{trackPageView:s},children:t})},s=n(6),l=function(e){var t=Object(a.useContext)(o).trackPageView,n=Object(r.h)().pathname,c=Object(a.useMemo)((function(){return{page:Object(s.a)({pageURL:window.location.href.replace("://localhost:3000","://constructs.local.dev")},e.page),event:{type:"pageview",name:e.event.name,description:e.event.description}}}),[n,e]);return Object(a.useCallback)((function(){return t(c)}),[t,c])}},126:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=new Set(["aws-cdk","aws","awscdk","cdk-construct","cdk","cdktf","cdk8s","construct","constructs"].map((function(e){return e.toLocaleLowerCase()})))},127:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(0),r=function(e,t){var n=t.limit,a=t.offset*n,r=a+n;return e.slice(a,r)},c=n(14),o=n(90),i=function(e){var t=e.cdkMajor,n=e.cdkType,i=e.keywords,s=e.limit,l=e.offset,u=void 0===l?0:l,d=e.query,b=void 0===d?"":d,j=e.language,f=void 0===j?null:j,O=e.languages,h=e.sort,v=e.tags,m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.query,n=e.filters,r=e.sort,i=Object(o.b)();if(!i)throw new Error("This hook can only be called within a descendant of a <SearchProvider />");return Object(a.useMemo)((function(){return Object(c.a)(i.search({query:t,filters:n,sort:r}).values())}),[i,t,n,r])}({filters:Object(a.useMemo)((function(){return{cdkMajor:t,cdkType:n,keywords:i,language:null!==f&&void 0!==f?f:void 0,languages:O,tags:v}}),[t,n,i,f,O,v]),query:b,sort:h}),p=function(e,t){var n=null!==t&&void 0!==t?t:{},c=n.limit,o=void 0===c?25:c,i=n.offset,s=void 0===i?0:i,l=e?Math.floor(e.length/o):0;return Object(a.useMemo)((function(){return{page:r(e,{limit:o,offset:s>l?l:s}),pageLimit:l}}),[e,o,s,l])}(m,{offset:u,limit:s}),g=p.page,x=p.pageLimit;return Object(a.useMemo)((function(){return{results:m,page:g,pageLimit:x}}),[g,x,m])}},128:function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var a,r=n(4),c=n(6),o=n(24),i=n(17),s=n(235),l=n(207),u=n(221),d=n(48),b=n(1),j=["name","majorVersion"],f=["name","majorVersion"],O=["name","majorVersion"],h=(Object(i.a)((function(e,t){var n=e.name,a=(e.majorVersion,Object(o.a)(e,j));return n?Object(b.jsx)(s.a,Object(c.a)({alt:"".concat(d.b[n].name," Logo"),h:5,ref:t,src:d.b[n].imgsrc,w:5},a)):null})),Object(i.a)((function(e,t){var n=e.name,a=e.majorVersion,r=Object(o.a)(e,f);return n?Object(b.jsxs)(l.a,Object(c.a)(Object(c.a)({ref:t},r),{},{children:[d.b[n].name,void 0!==a?" v".concat(a):""]})):null}))),v=(a={},Object(r.a)(a,d.c.awscdk,"#CF4A02"),Object(r.a)(a,d.c.cdk8s,"#005797"),Object(r.a)(a,d.c.cdktf,"#5C4EE5"),a),m=Object(i.a)((function(e){var t=e.name,n=e.majorVersion,a=Object(o.a)(e,O);if(!t)return null;var r=v[t];return Object(b.jsx)(u.a,Object(c.a)(Object(c.a)({alignItems:"center",bg:r,borderRadius:"md",color:"white",display:"flex",h:"1.5rem",maxW:"5.5rem",px:1.5,textTransform:"none"},a),{},{children:Object(b.jsx)(h,{majorVersion:n,name:t})}))}))},13:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return c}));var a={PACKAGES_PREFIX:"/data",CATALOG_SUFFIX:"/catalog.json",ASSEMBLY_SUFFIX:"/assembly.json",METADATA_SUFFIX:"/metadata.json",CONFIG:"/config.json",STATS:"/stats.json"},r={CDK_TYPE:"cdk",KEYWORDS:"keywords",LANGUAGE:"lang",LANGUAGES:"langs",OFFSET:"offset",SEARCH_QUERY:"q",SORT:"sort",SUBMODULE:"submodule",CDK_MAJOR:"cdkver",TAGS:"tags"},c={CONTRIBUTE:"/contribute",FAQ:"/faq",HOME:"/",PACKAGES:"/packages",SEARCH:"/search",SITE_TERMS:"/terms"}},135:function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return l}));var a=n(28),r=n.n(a),c=n(45),o=n(13),i={sections:[{name:"Recently updated",showLastUpdated:10}]},s={featureFlags:{},packageLinks:[],featuredPackages:i},l=function(){var e=Object(c.a)(r.a.mark((function e(){var t;return r.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!window.configOverride){e.next=2;break}return e.abrupt("return",window.configOverride);case 2:return e.next=4,fetch(o.a.CONFIG);case 4:if((t=e.sent).ok){e.next=9;break}return console.error(t.statusText),console.warn("Failed to fetch application config, using default values"),e.abrupt("return",s);case 9:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Invalid config response, using default values"),s})));case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}()},143:function(e,t,n){"use strict";n.d(t,"a",(function(){return O}));var a=n(30),r=n(209),c=n(203),o=n(211),i=n(207),s=n(212),l=n(58),u=n(74),d=n(94),b=n(51),j=n(1),f="showing-dev-preview-banner",O=function(){var e,t,n=Object(u.b)().data,O=Object(r.a)({defaultIsOpen:JSON.parse(null!==(e=window.sessionStorage.getItem(f))&&void 0!==e?e:"true"),onClose:function(){return window.sessionStorage.setItem(f,"false")}}),h=O.isOpen,v=O.onClose;return(null===n||void 0===n||null===(t=n.featureFlags)||void 0===t?void 0:t.fullSite)?Object(j.jsx)(c.a,{h:"max-content"}):Object(j.jsx)(c.a,{h:"max-content",children:Object(j.jsx)(o.a,{in:h,children:Object(j.jsxs)(d.a,{"aria-label":"Preview Banner",bg:"blue.500",border:"none",boxShadow:"none",color:"white",mt:4,mx:4,p:4,position:"relative",role:"alertdialog",children:[Object(j.jsx)(a.m,{h:5,left:4,position:"absolute",top:4,w:5}),Object(j.jsxs)(i.a,{fontSize:"md",mx:8,textAlign:"center",children:["This application is in Dev Preview. Some features may change. If you find any issues, please report them"," ",Object(j.jsx)(b.a,{color:"inherit",hasWarning:!1,href:"".concat(l.a,"/issues"),textDecoration:"underline",children:"here"})]}),Object(j.jsx)(s.a,{"aria-label":"Dismiss banner",colorScheme:"white",icon:Object(j.jsx)(a.g,{}),onClick:v,position:"absolute",right:4,size:"xs",top:3,variant:"ghost"})]})})})}},145:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(17),c=n(21),o=n(1),i=Object(r.a)((function(e,t){return Object(o.jsx)(c.a.form,Object(a.a)(Object(a.a)({},e),{},{ref:t}))}));i.displayName="Form"},146:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var a=n(5),r=n(0),c=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(r.useState)(e),c=Object(a.a)(n,2),o=c[0],i=c[1],s=t.delay,l=void 0===s?250:s,u=t.onChange;return Object(r.useEffect)((function(){var t=setTimeout((function(){i(e),null===u||void 0===u||u(e)}),l);return function(){clearTimeout(t)}}),[e,l,u]),o}},147:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n(6),r=n(24),c=n(17),o=n(222),i=n(1),s=["name","onClick"],l=Object(c.a)((function(e,t){var n=e.name,c=e.onClick,l=Object(r.a)(e,s);return Object(i.jsx)(o.a,Object(a.a)(Object(a.a)({_hover:{cursor:"pointer"},alignItems:"center",display:"flex",fontSize:"md",lineHeight:"base",listStyleType:"none",minH:8,onClick:c,onKeyDown:function(e){["Enter"," "].includes(e.key)&&(e.preventDefault(),c())},px:4,ref:t,role:"option",sx:{":hover, :focus":{bg:"gray.100"}},tabIndex:0},l),{},{children:n}))}));l.displayName="SearchItem"},175:function(e,t,n){},182:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"initialize",(function(){return C})),n.d(a,"access",(function(){return E})),n.d(a,"checkForCookieConsent",(function(){return A})),n.d(a,"customizeCookies",(function(){return M})),n.d(a,"getConsentCookie",(function(){return z})),n.d(a,"hasConsent",(function(){return I}));var r,c,o=n(0),i=n.n(o),s=n(86),l=n.n(s),u=n(34),d=(n(175),n(153)),b=n(22),j=n(143),f=n(5),O=n(213),h=n(214),v=n(203),m=n(215),p=n(207),g=n(158),x=n(24),y=n(28),k=n.n(y),w=n(45),S=function(){new URLSearchParams(window.location.search).get("sb")},C=function(){var e=Object(w.a)(k.a.mark((function e(){return k.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,t){window.addEventListener("load",Object(w.a)(k.a.mark((function a(){var c,o,i;return k.a.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,c={domain:window.location.hostname,language:navigator.language,__storeWriter:S()},a.next=4,n.e(15).then(n.t.bind(null,644,7));case 4:o=a.sent,i=o.AWSCShortbread,r=i(c),e(),a.next=13;break;case 10:a.prev=10,a.t0=a.catch(0),t(a.t0);case 13:case"end":return a.stop()}}),a,null,[[0,10]])}))))})));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),T=function(e){return function(){var t;if(!r)throw new Error("shortbread has not been initialized");return(t=r)[e].apply(t,arguments)}},E=T("access"),A=T("checkForCookieConsent"),M=T("customizeCookies"),z=T("getConsentCookie"),I=T("hasConsent"),F=n(1),P=C,D=Object(x.a)(a,["initialize"]),R=Object(o.createContext)({}),L=function(e){var t=e.children,n=Object(o.useState)(!1),a=Object(f.a)(n,2),r=a[0],c=a[1];return Object(o.useEffect)((function(){var e=!1;return P().then((function(){e||(D.checkForCookieConsent(),c(!0))})).catch((function(t){console.error(t),e||c(!1)})),function(){e=!0,c(!1)}}),[]),Object(F.jsx)(R.Provider,{value:r?D:{},children:t})},N=n(51),_=n(49),G=n(13),W={SERVICE_TERMS:{display:"AWS Service Terms",url:"https://aws.amazon.com/service-terms/",testId:"service-terms"},PRIVACY:{display:"Privacy",url:"https://aws.amazon.com/privacy/",testId:"privacy"},SITE_TERMS:{display:"Construct Hub Site Terms",url:G.c.SITE_TERMS,testId:"site-terms",isExternal:!1},LEGAL:{display:"Legal",url:"https://aws.amazon.com/legal/",testId:"legal"}},U=n(14),H=n(63),B=Object(H.a)("footer",["container","links","disclaimer","manageCookies"].concat(Object(U.a)(Object.values(W).map((function(e){return e.testId}))))),V=function(){var e=Object(o.useContext)(R).customizeCookies;return Object(F.jsxs)(O.a,{align:"center",as:"footer",bg:"blue.800",color:"white","data-testid":B.container,direction:"column",justify:"center",py:4,children:[Object(F.jsx)(h.a,{columnGap:6,columns:[1,2,4],"data-testid":B.links,children:Object.entries(W).map((function(e,t){var n=Object(f.a)(e,2),a=n[0],r=n[1],c=r.display,o=r.isExternal,i=void 0===o||o,s=r.testId,l=r.url;return Object(F.jsxs)(O.a,{align:"center",direction:{base:"column",md:"row"},children:[Object(F.jsx)(v.a,{display:{base:"none",md:0!==t?"initial":"none"},h:5,children:Object(F.jsx)(m.a,{borderColor:"white",mr:6,orientation:"vertical"})}),i?Object(F.jsx)(N.a,{color:"currentcolor","data-testid":B[s],hasWarning:!1,href:l,lineHeight:10,mx:"auto",children:c}):Object(F.jsx)(_.a,{color:"currentcolor","data-testid":B[s],lineHeight:10,mx:"auto",to:l,children:c}),Object(F.jsx)(v.a,{display:{base:"none",sm:t<2?"initial":"none",md:"none"},w:"100%",children:Object(F.jsx)(m.a,{borderColor:"white"})})]},a)}))}),Object(F.jsx)(p.a,{"data-testid":B.disclaimer,fontSize:"xs",mt:4,children:"2021 Amazon Web Services, Inc. All rights reserved."}),Object(F.jsx)(g.a,{color:"white","data-testid":B.manageCookies,fontSize:"xs",fontWeight:"normal",mt:4,onClick:e,variant:"link",children:"Manage Cookies"})]})},K=n(6),q=n(58),J=n(230),Q=["children"],Y=function(e){var t=e.children,n=Object(x.a)(e,Q);return Object(F.jsx)(J.a,Object(K.a)(Object(K.a)({colorScheme:"blue.800",strategy:"fixed"},n),{},{children:t}))},X=n(17),Z=["items"],$=function(e){var t=e.display,n=e.isNavLink,a=e.url;return n?Object(F.jsx)(_.a,{color:"blue.500",to:a,w:"100%",children:t}):Object(F.jsx)(N.a,{alignItems:"center",display:"flex",hasWarning:!1,href:a,justifyContent:"space-between",w:"100%",children:t})},ee=Object(X.a)((function(e,t){var n=e.items,a=Object(x.a)(e,Z);return Object(F.jsx)(J.f,Object(K.a)(Object(K.a)({},a),{},{ref:t,children:n.map((function(e,t){return"links"in e?Object(F.jsxs)(o.Fragment,{children:[Object(F.jsx)(J.d,{align:"left",title:e.display,children:e.links.map((function(e,t){return Object(F.jsx)(J.e,{children:Object(F.jsx)($,Object(K.a)({},e))},"".concat(e.display,"-").concat(t))}))}),t!==n.length-1&&Object(F.jsx)(J.c,{})]},"".concat(e.display,"-").concat(t)):Object(F.jsx)(J.e,{children:Object(F.jsx)($,Object(K.a)({},e))},"".concat(e.display,"-").concat(t))}))}))})),te=n(30),ne=["children"],ae=Object(X.a)((function(e,t){var n=e.children,a=Object(x.a)(e,ne);return Object(F.jsx)(J.b,Object(K.a)(Object(K.a)({as:g.a,color:"blue.800",fontWeight:"500",ref:t,rightIcon:Object(F.jsx)(te.c,{h:6,w:6}),size:"md",variant:"link"},a),{},{children:n}))})),re=Object(H.a)("header",["container","title","gettingStartedTrigger","gettingStartedMenu","documentationTrigger","documentationMenu","navOpen","navClose","searchInput","searchIcon","mobileNav"]),ce=function(){return Object(F.jsxs)(Y,{children:[Object(F.jsx)(ae,{"data-testid":re.documentationTrigger,children:"Documentation"}),Object(F.jsx)(ee,{"data-testid":re.documentationMenu,items:q.b})]})},oe=function(){return Object(F.jsxs)(Y,{children:[Object(F.jsx)(ae,{"data-testid":re.gettingStartedTrigger,children:"Getting Started"}),Object(F.jsx)(ee,{"data-testid":re.gettingStartedMenu,items:q.c})]})},ie=n(209),se=n(212),le=n(76),ue=n(233),de=n(52),be=n(236),je=n(95),fe=Object(H.a)("searchModal",["container"]),Oe=function(e){var t=e.isOpen,n=e.onClose,a=Object(je.a)(),r=a.query,c=a.onQueryChange,o=a.onSubmit,i=a.onSearch;return Object(F.jsx)(ue.a,{children:Object(F.jsx)(de.a,{isOpen:t,onClose:n,children:Object(F.jsx)(de.h,{children:Object(F.jsxs)(de.d,{"data-testid":fe.container,children:[Object(F.jsx)(de.c,{}),Object(F.jsx)(de.g,{children:"Search"}),Object(F.jsx)(de.b,{children:Object(F.jsxs)(be.a,{pb:4,spacing:4,children:[Object(F.jsx)(le.a,{onChange:c,onSubmit:o,value:r}),Object(F.jsx)(g.a,{colorScheme:"blue",onClick:function(){return i()},children:"Find Constructs"})]})})]})})})})},he=function(){var e=Object(ie.a)();return Object(F.jsxs)(b.d,{children:[Object(F.jsx)(b.b,{exact:!0,path:[G.c.HOME,G.c.SEARCH]}),Object(F.jsxs)(b.b,{path:"*",children:[Object(F.jsx)(v.a,{"data-testid":re.searchInput,display:{base:"none",lg:"initial"},children:Object(F.jsxs)(le.a,{bg:"gray.50",children:[Object(F.jsx)(le.b,{}),Object(F.jsx)(le.c,{})]})}),Object(F.jsxs)(v.a,{display:{base:"initial",lg:"none"},children:[Object(F.jsx)(se.a,{"aria-label":"Search Icon",borderRadius:"md","data-testid":re.searchIcon,icon:Object(F.jsx)(te.o,{color:"gray.600"}),onClick:e.onOpen,variant:"ghost"}),Object(F.jsx)(Oe,Object(K.a)({},e))]})]})]})},ve=n(238),me=n(237),pe=n(223),ge={color:"blue.500",py:2,w:"full"},xe=function(e){var t=e.display,n=e.isNavLink,a=e.url;return n?Object(F.jsx)(_.a,Object(K.a)(Object(K.a)({to:a},ge),{},{children:t})):Object(F.jsx)(N.a,Object(K.a)(Object(K.a)({alignItems:"center",display:"flex",hasWarning:!1,href:a,justifyContent:"space-between"},ge),{},{children:t}))},ye=function(e){var t=e.title,n=e.items,a=e.testId;return Object(F.jsxs)(me.d,{"data-testid":a,w:"full",children:[Object(F.jsxs)(me.b,{px:0,py:4,children:[Object(F.jsx)(v.a,{flex:"1",textAlign:"left",children:Object(F.jsx)(pe.a,{as:"h3",color:"blue.800",size:"sm",children:t})}),Object(F.jsx)(me.c,{})]}),Object(F.jsx)(me.e,{p:0,w:"full",children:Object(F.jsx)(O.a,{direction:"column",w:"full",children:n.map((function(e,t){return"links"in e?Object(F.jsxs)(o.Fragment,{children:[Object(F.jsx)(pe.a,{as:"h4",borderBottom:"base",pb:2,pt:4,size:"xs",children:e.display}),e.links.map((function(e,t){return Object(o.createElement)(xe,Object(K.a)(Object(K.a)({},e),{},{key:"".concat(e.display,"-").concat(t)}))}))]},"".concat(e.display,"-").concat(t)):Object(o.createElement)(xe,Object(K.a)(Object(K.a)({},e),{},{key:"".concat(e.display,"-").concat(t)}))}))})})]})},ke=function(e){var t=e.sections;return Object(F.jsx)(me.a,{allowMultiple:!0,allowToggle:!0,w:"full",children:t.map((function(e,t){return Object(F.jsx)(ye,Object(K.a)({},e),"section-".concat(t))}))})},we=function(){return Object(F.jsx)(pe.a,{as:"h1",color:"blue.800","data-testid":re.title,size:"lg",children:Object(F.jsxs)(u.b,{to:"/",children:[Object(F.jsx)(v.a,{as:"span",color:"blue.500",children:"Construct"})," ","Hub"]})})},Se=function(e){var t=e.isOpen,n=e.onClose;return Object(F.jsx)(ue.a,{children:Object(F.jsxs)(ve.a,{isOpen:t,onClose:n,placement:"left",size:"xs",children:[Object(F.jsx)(de.h,{}),Object(F.jsxs)(ve.b,{"data-testid":re.mobileNav,children:[Object(F.jsx)(de.c,{}),Object(F.jsx)(de.g,{display:"flex",justifyContent:"start",children:Object(F.jsx)(we,{})}),Object(F.jsx)(de.b,{children:Object(F.jsxs)(be.a,{align:"start",justify:"start",spacing:0,children:[Object(F.jsx)(ke,{sections:[{title:"Getting Started",items:q.c,testId:re.gettingStartedMenu},{title:"Documentation",items:q.b,testId:re.documentationMenu}]}),Object(F.jsx)(_.a,{_hover:{bg:"blackAlpha.50"},borderBottom:"1px solid",borderBottomColor:"gray.200",color:"blue.800",fontSize:"1rem",fontWeight:"bold",h:"3.25rem",lineHeight:"3.25rem",to:G.c.CONTRIBUTE,w:"full",children:"Contribute"})]})})]})]})})},Ce=function(){var e=Object(ie.a)();return Object(F.jsxs)(F.Fragment,{children:[Object(F.jsx)(se.a,{"aria-label":"Navigation Menu",borderRadius:"md","data-testid":re.navOpen,display:{lg:"none"},icon:Object(F.jsx)(te.l,{}),onClick:e.onOpen,variant:"ghost"}),Object(F.jsx)(Se,Object(K.a)({},e))]})},Te=function(e){return Object(F.jsx)(d.b,Object(K.a)({align:"center",justify:"center",rowStart:1},e))},Ee=function(){return Object(F.jsxs)(d.a,{alignItems:"center",as:"header",bg:"white",boxShadow:"base","data-testid":re.container,gap:6,gridTemplateColumns:{base:"1fr max-content 1fr",lg:"max-content minmax(12rem, 31rem) auto"},gridTemplateRows:"1fr",maxW:"100vw",position:"sticky",px:4,py:4,top:0,w:"100%",zIndex:"sticky",children:[Object(F.jsx)(Te,{colStart:{base:2,lg:1},justifySelf:{base:"center",lg:"start"},children:Object(F.jsx)(we,{})}),Object(F.jsx)(Te,{colStart:{base:3,lg:2},justifySelf:{base:"end",lg:"stretch"},children:Object(F.jsx)(he,{})}),Object(F.jsxs)(Te,{colStart:{base:1,lg:3},justifySelf:{base:"start",lg:"end"},children:[Object(F.jsxs)(d.a,{display:{base:"none",lg:"grid"},gap:4,gridTemplateRows:"1fr",placeItems:"center",templateColumns:"1fr 1fr auto",w:"100%",children:[Object(F.jsx)(v.a,{children:Object(F.jsx)(oe,{})}),Object(F.jsx)(v.a,{children:Object(F.jsx)(ce,{})}),Object(F.jsx)(_.a,{color:"blue.800",fontWeight:"500",to:G.c.CONTRIBUTE,children:"Contribute"})]}),Object(F.jsx)(Ce,{})]})]})},Ae=n(77),Me=["component"],ze=function(e){var t=e.component,n=Object(x.a)(e,Me);return Object(F.jsx)(b.b,Object(K.a)(Object(K.a)({},n),{},{children:Object(F.jsx)(o.Suspense,{fallback:Object(F.jsx)(Ae.a,{}),children:Object(F.jsx)(t,{})})}))},Ie=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(11)]).then(n.bind(null,651))})),Fe=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(12)]).then(n.bind(null,652))})),Pe=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(9),n.e(6)]).then(n.bind(null,649))})),De=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(13)]).then(n.bind(null,304))})),Re=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(4),n.e(7)]).then(n.bind(null,646))})),Le=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(10),n.e(8)]).then(n.bind(null,647))})),Ne=Object(o.lazy)((function(){return Promise.all([n.e(0),n.e(14)]).then(n.bind(null,653))})),_e=function(){var e="/"!==Object(b.h)().pathname;return Object(F.jsxs)(d.a,{as:"main",bg:"bgPrimary",gridTemplateColumns:"1fr",gridTemplateRows:"auto auto 1fr auto",h:"100%",maxW:"100%",minH:"100vh",children:[Object(F.jsx)(Ee,{}),e?Object(F.jsx)(j.a,{}):Object(F.jsx)("div",{}),Object(F.jsxs)(b.d,{children:[Object(F.jsx)(ze,{component:Ie,exact:!0,path:G.c.CONTRIBUTE}),Object(F.jsx)(ze,{component:Fe,exact:!0,path:G.c.FAQ}),Object(F.jsx)(ze,{component:Pe,exact:!0,path:G.c.HOME}),Object(F.jsx)(ze,{component:Ne,exact:!0,path:G.c.SITE_TERMS}),Object(F.jsx)(ze,{component:Re,path:G.c.PACKAGES}),Object(F.jsx)(ze,{component:Le,exact:!0,path:G.c.SEARCH}),Object(F.jsx)(ze,{component:De,path:"*"})]}),Object(F.jsx)(V,{})]})},Ge=n(122),We=n(75),Ue=n(74),He=n(107),Be=n(90),Ve=n(91),Ke=n(228),qe=n(226),Je=n(103),Qe=n(102),Ye=n(9),Xe=function(e){var t=e.colorScheme;return{w:"100%",transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),borderColor:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),color:Object(Ye.b)("white","gray.900")(e),_hover:{bg:Object(Ye.b)("".concat(t,".600"),"".concat(t,".300"))(e),borderColor:Object(Ye.b)("".concat(t,".600"),"".concat(t,".300"))(e)},_disabled:{borderColor:Object(Ye.b)("gray.200","transparent")(e),bg:Object(Ye.b)("gray.200","whiteAlpha.300")(e),color:Object(Ye.b)("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),borderColor:Object(Ye.b)("".concat(t,".500"),"".concat(t,".200"))(e),color:Object(Ye.b)("white","gray.900")(e)},_disabled:{bg:Object(Ye.b)("gray.100","whiteAlpha.100")(e),borderColor:Object(Ye.b)("gray.100","transparent")(e)},_focus:{boxShadow:"outline"},_invalid:{borderColor:Object(Ye.b)("red.500","red.300")(e)}}},Ze={userSelect:"none",_disabled:{opacity:.4}},$e={transitionProperty:"transform",transitionDuration:"normal"},et={parts:Qe.a.keys,baseStyle:function(e){return{icon:$e,control:Xe(e),label:Ze}},sizes:{sm:{control:{h:3,w:3},label:{fontSize:"sm"},icon:{fontSize:"0.45rem"}},base:{control:{h:3.5,w:3.5},label:{fontSize:"sm"},icon:{fontSize:"0.5rem"}},md:{control:{w:4,h:4},label:{fontSize:"md"},icon:{fontSize:"0.625rem"}},lg:{control:{w:5,h:5},label:{fontSize:"lg"},icon:{fontSize:"0.625rem"}}},defaultProps:{size:"base",colorScheme:"blue"}},tt=Je.theme.components.Code,nt=Object(K.a)(Object(K.a)({},tt),{},{variants:Object(K.a)(Object(K.a)({},tt.variants),{},{"code-block":Object(K.a)(Object(K.a)({},tt.variants.subtle),{},{display:"block",whiteSpace:"pre"})})}),at={defaultProps:{borderColor:"rgba(0, 124, 253, 0.15)"}},rt=function(e){var t=et.baseStyle(e).control,n=void 0===t?{}:t;return Object(K.a)(Object(K.a)({},n),{},{borderRadius:"full",pos:"relative",_checked:Object(K.a)(Object(K.a)({},n._checked),{},{_before:{content:'""',display:"inline-block",pos:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}})})},ct={parts:Qe.b.keys,baseStyle:function(e){return{label:et.baseStyle(e).label,control:rt(e)}},sizes:{sm:{control:{h:3,w:3},label:{fontSize:"sm"}},base:{control:{h:3.5,w:3.5},label:{fontSize:"sm"}},md:{control:{h:4,w:4},label:{fontSize:"md"}},lg:{control:{h:5,w:5},label:{fontSize:"lg"}}},defaultProps:{size:"base",colorScheme:"blue"}},ot=n(4),it=Je.theme.components.Tabs,st=Object(K.a)(Object(K.a)({},it.variants),{},{line:function(e){var t,n,a=e.colorScheme,r=e.orientation,c="vertical"===r?"borderStart":"borderBottom",o="vertical"===r?"marginStart":"marginBottom";return{tablist:(t={},Object(ot.a)(t,c,"none"),Object(ot.a)(t,"borderColor","inherit"),t),tab:(n={},Object(ot.a)(n,c,"4px solid"),Object(ot.a)(n,"borderColor","transparent"),Object(ot.a)(n,o,"0"),Object(ot.a)(n,"_selected",{color:Object(Ye.b)("".concat(a,".500"),"".concat(a,".300"))(e),borderColor:"currentColor",fontWeight:"semibold"}),Object(ot.a)(n,"_active",{bg:Object(Ye.b)("gray.200","whiteAlpha.300")(e)}),Object(ot.a)(n,"_disabled",{opacity:.4,cursor:"not-allowed"}),n)}}}),lt=Object(K.a)(Object(K.a)({},it),{},{variants:st}),ut=function(e,t){return function(n){var a="function"===typeof e?e(n):e;return Object(K.a)(Object(K.a)({},a),{},{container:Object(K.a)(Object(K.a)({},a.container),t)})}},dt=Je.theme.components.Tag,bt=function(e){var t=e.reduce((function(e,t){var n=t.keyword;return(null===n||void 0===n?void 0:n.color)?Object(K.a)(Object(K.a)({},e),{},Object(ot.a)({},n.color,ut(dt.variants.subtle,{background:Object(Ye.c)(n.color,.1),color:n.color}))):e}),{});return Object(K.a)(Object(K.a)({},dt),{},{baseStyle:{container:{fontWeight:"normal"}},variants:Object(K.a)(Object(K.a)({},dt.variants),{},{subtle:ut(dt.variants.subtle,{background:"#F2F2F2",color:"blue.800"})},t)})},jt=function(e){return Object(K.a)(Object(K.a)({},Je.theme.components),{},{Checkbox:et,Code:nt,Divider:at,Radio:ct,Tag:bt(e.Tag),Tabs:lt})},ft={borders:{base:"1px solid rgba(0, 124, 253, 0.15)"},colors:Object(K.a)(Object(K.a)({},Je.theme.colors),{},{blue:{50:"#dcf3ff",100:"#aed9ff",200:"#7dbeff",300:"#4aa4ff",400:"#1a8aff",500:"#0070e6",600:"#0057b4",700:"#003e82",800:"#002551",900:"#000d21"},bgPrimary:"#F8F8F8"}),radii:{card:"0.75rem"},sizes:{container:{"2xl":"120rem"}},shadows:{base:"0px 4px 15px rgba(40, 132, 178, 0.15)"}},Ot=function(e){var t,n={Tag:null!==(t=e.packageTags)&&void 0!==t?t:[]};return Object(qe.a)(Object(K.a)(Object(K.a)({},ft),{},{components:jt(n),config:{initialColorMode:"light",useSystemColorMode:!1}}))},ht=function(e){var t=e.children,n=Object(Ue.b)(),a=n.loading,r=n.data;return a?Object(F.jsx)(Ae.a,{}):Object(F.jsx)(Ke.a,{resetCSS:!0,theme:Ot(r),children:t})};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));l.a.render(Object(F.jsx)(i.a.StrictMode,{children:Object(F.jsx)(u.a,{children:Object(F.jsx)(L,{children:Object(F.jsx)(Ge.a,{children:Object(F.jsx)(Ue.a,{children:Object(F.jsx)(We.a,{children:Object(F.jsx)(Ve.a,{children:Object(F.jsx)(Be.a,{children:Object(F.jsx)(ht,{children:Object(F.jsx)(He.a,{children:Object(F.jsx)(_e,{})})})})})})})})})})}),document.getElementById("root")),c&&c instanceof Function&&n.e(16).then(n.bind(null,645)).then((function(e){var t=e.getCLS,n=e.getFID,a=e.getFCP,r=e.getLCP,o=e.getTTFB;t(c),n(c),a(c),r(c),o(c)}),(function(){})),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))},48:function(e,t,n){"use strict";n.d(t,"c",(function(){return c})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return s}));var a,r,c,o=n(4);!function(e){e.awscdk="aws-cdk",e.cdktf="cdktf",e.cdk8s="cdk8s"}(c||(c={}));var i=(a={},Object(o.a)(a,c.awscdk,"AWS CDK"),Object(o.a)(a,c.cdktf,"CDKtf"),Object(o.a)(a,c.cdk8s,"CDK8s"),a),s=(r={},Object(o.a)(r,c.awscdk,{name:i[c.awscdk],imgsrc:"/assets/awscdk-icon-v2.png"}),Object(o.a)(r,c.cdk8s,{name:i[c.cdk8s],imgsrc:"/assets/cdk8s-icon-v2.png"}),Object(o.a)(r,c.cdktf,{name:i[c.cdktf],imgsrc:"/assets/cdktf-icon.png"}),r)},49:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(210),c=n(34),o=n(1),i=function(e){return Object(o.jsx)(r.a,Object(a.a)({as:c.b},e))}},51:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),r=n(24),c=n(30),o=n(17),i=n(210),s=n(107),l=n(1),u=["children","hasIcon","hasWarning","href","onClick","noFollow"],d=Object(o.a)((function(e,t){var n=e.children,o=e.hasIcon,d=void 0===o||o,b=e.hasWarning,j=void 0===b||b,f=e.href,O=e.onClick,h=e.noFollow,v=Object(r.a)(e,u),m=Object(s.b)(),p="noopener noreferrer";return(j||h)&&(p+=" nofollow"),Object(l.jsxs)(i.a,Object(a.a)(Object(a.a)({color:"blue.500",href:f,isExternal:!0,onClick:j?m({href:f,onClick:O}):O,ref:t,rel:p},v),{},{children:[n," ",d&&Object(l.jsx)(c.k,{mb:1,ml:0})]}))}));d.displayName="ExternalLink"},58:function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return r})),n.d(t,"b",(function(){return c}));var a="https://github.com/cdklabs/construct-hub",r=[{display:"FAQ",isNavLink:!0,url:"/faq"},{display:"Construct Hub on GitHub",url:a},{display:"Issues on GitHub",url:"".concat(a,"/issues")},{display:"Community",links:[{display:"Slack",url:"https://join.slack.com/t/cdk-dev/shared_invite/zt-xtpfmrqt-6ormYTA0hLdpMSAtTkM_2A"}]}],c=[{display:"AWS CDK",links:[{display:"Home",url:"https://aws.amazon.com/cdk/"},{display:"Getting Started",url:"https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html"},{display:"Workshop",url:"https://cdkworkshop.com/"},{display:"Best Practices",url:"https://docs.aws.amazon.com/cdk/latest/guide/best-practices.html"}]},{display:"CDK for Terraform",links:[{display:"Getting Started",url:"https://learn.hashicorp.com/tutorials/terraform/cdktf"},{display:"Tutorials",url:"https://learn.hashicorp.com/collections/terraform/cdktf"}]},{display:"CDK for Kubernetes",links:[{display:"Home",url:"https://cdk8s.io"},{display:"Getting Started",url:"https://cdk8s.io/docs/latest/getting-started"},{display:"Documentation",url:"https://cdk8s.io/docs/latest"},{display:"API Reference",url:"https://cdk8s.io/docs/latest/reference/index.html"}]},{display:"Community",links:[{display:"Community Hub",url:"https://cdk.dev"}]}]},59:function(e,t,n){"use strict";var a;n.d(t,"a",(function(){return a})),function(e){e.NameAsc="asc",e.NameDesc="desc",e.PublishDateAsc="oldest",e.PublishDateDesc="newest",e.DownloadsAsc="downloadsAsc",e.DownloadsDesc="downloadsDesc"}(a||(a={}))},63:function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var a=function(e,t){return t.reduce((function(t,n){return t[n]="".concat(e,"-").concat(n),t}),{})}},74:function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return j}));var a=n(6),r=n(37),c=n(5),o=n(0),i=n(22),s=n(135),l=n(78),u=n(1),d=Object(o.createContext)({loading:!1,data:void 0,error:void 0}),b="construct-hub-config",j=function(){return Object(o.useContext)(d)},f=function(e){var t,n=e.children,j=Object(i.h)().search,f=Object(o.useState)((function(){try{var e=localStorage.getItem(b);return e?JSON.parse(e):void 0}catch(t){console.error(t)}})),O=Object(c.a)(f,2),h=O[0],v=O[1],m=Object(l.a)(s.b,{onSuccess:function(e){v(e);try{localStorage.setItem(b,JSON.stringify(e))}catch(t){console.error(t)}}}),p=Object(c.a)(m,2),g=p[0],x=p[1];Object(o.useEffect)((function(){g()}),[]);var y=null!==h&&void 0!==h?h:{},k=new URLSearchParams(j),w=null!==(t=y.featureFlags)&&void 0!==t?t:{};y.featureFlags=w;var S,C=Object(r.a)(k.keys());try{for(C.s();!(S=C.n()).done;){var T=S.value;if(T.startsWith("ff-"))w[T.slice(3)]=!0}}catch(E){C.e(E)}finally{C.f()}return Object(u.jsx)(d.Provider,{value:Object(a.a)(Object(a.a)({},x),{},{data:y}),children:n})}},75:function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return O}));var a=n(5),r=n(0),c=n(28),o=n.n(c),i=n(45),s=n(13),l={packages:[]},u=function(){var e=Object(i.a)(o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(s.a.CATALOG_SUFFIX);case 2:if((t=e.sent).ok){e.next=7;break}return console.error(t.statusText),console.warn("Failed to fetch package catalog. Falling back to empty package list."),e.abrupt("return",l);case 7:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Invalid package catalog response. Falling back to empty package list."),l})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=n(78),b=n(1),j=Object(r.createContext)({loading:!1,data:void 0,error:void 0}),f=function(){return Object(r.useContext)(j)},O=function(e){var t=e.children,n=Object(d.a)(u),c=Object(a.a)(n,2),o=c[0],i=c[1];return Object(r.useEffect)((function(){o()}),[o]),Object(b.jsx)(j.Provider,{value:i,children:t})}},76:function(e,t,n){"use strict";n.d(t,"a",(function(){return y})),n.d(t,"b",(function(){return S})),n.d(t,"c",(function(){return L}));var a=n(6),r=n(24),c=n(30),o=n(209),i=n(218),s=n(219),l=n(234),u=n(158),d=n(212),b=n(0),j=n(75),f=n(95),O=n(145),h=n(63),v=Object(h.a)("searchBar",["input","searchIcon","searchButton","overlay","suggestionsList","suggestion"]),m=n(1),p=["children","hasButton","onSubmit","value","onChange"],g=Object(b.createContext)(void 0),x=function(){var e=Object(b.useContext)(g);if(!e)throw new Error("This component must be a child of a <SearchBar />");return e},y=function(e){var t,n,h,x=e.children,y=e.hasButton,k=e.onSubmit,w=e.value,S=e.onChange,C=Object(r.a)(e,p),T=Object(o.a)(),E=Object(b.useRef)(null),A=Object(f.a)(),M=Object(j.b)(),z=100*Math.floor((null!==(t=null===M||void 0===M||null===(n=M.data)||void 0===n||null===(h=n.packages)||void 0===h?void 0:h.length)&&void 0!==t?t:0)/100),I="Search ".concat(z>0?"".concat(z,"+ "):"","construct libraries");return Object(b.useEffect)((function(){var e=function(e){E.current&&e.target&&(E.current.contains(e.target)||T.onClose())},t=function(e){var t,n;"Escape"===e.key&&(null===(t=E.current)||void 0===t||null===(n=t.blur)||void 0===n||n.call(t),T.onClose())};return window.addEventListener("keyup",t),window.addEventListener("click",e),function(){window.removeEventListener("keyup",t),window.removeEventListener("click",e)}}),[]),Object(m.jsx)(g.Provider,{value:{query:null!==w&&void 0!==w?w:A.query,isOpen:T.isOpen},children:Object(m.jsxs)(O.a,{color:"initial",onSubmit:null!==k&&void 0!==k?k:A.onSubmit,pos:"relative",children:[Object(m.jsxs)(i.a,{pos:"relative",zIndex:T.isOpen?3:"initial",children:[y&&Object(m.jsx)(s.a,{children:Object(m.jsx)(c.o,{"data-testid":v.searchIcon})}),Object(m.jsx)(l.a,Object(a.a)({_focus:{boxShadow:"base",borderColor:"inherit"},bg:"white",boxShadow:T.isOpen?"base":"none","data-testid":v.input,onChange:null!==S&&void 0!==S?S:A.onQueryChange,onFocus:T.onOpen,placeholder:I,ref:E,value:null!==w&&void 0!==w?w:A.query},C)),y?Object(m.jsx)(s.b,{display:{base:"none",md:"initial"},w:"9rem",children:Object(m.jsx)(u.a,{borderLeftRadius:"0",colorScheme:"blue","data-testid":v.searchButton,type:"submit",children:"Find Constructs"})}):Object(m.jsx)(s.b,{children:Object(m.jsx)(d.a,{"aria-label":"Run search","data-testid":v.searchIcon,icon:Object(m.jsx)(c.o,{}),type:"submit",variant:"ghost"})})]}),x]})})},k=n(17),w=n(203),S=Object(k.a)((function(e,t){var n=x().isOpen;return Object(m.jsx)(w.a,Object(a.a)({bg:"gray.700","data-testid":v.overlay,display:n?"initial":"none",inset:"0",opacity:"0.5",pos:"fixed",ref:t,zIndex:"1"},e))})),C=n(222),T=n(215),E=n(236),A=n(207),M=n(22),z=n(127),I=n(146),F=n(89),P=n(94),D=n(128),R=n(147),L=Object(k.a)((function(e,t){var n=x(),r=n.query,c=n.isOpen,o=Object(I.a)(r),i=Object(M.g)().push,s=Object(z.a)({limit:5,offset:0,query:o}).page;return!c||s.length<1||!o?null:Object(m.jsx)(P.a,Object(a.a)(Object(a.a)({as:C.c,"data-testid":v.suggestionsList,left:0,ml:0,pos:"absolute",pt:10,px:0,ref:t,right:0,top:0,zIndex:2},e),{},{children:s.map((function(e,t){var n,r,c=null!==(n=null===(r=e.metadata)||void 0===r?void 0:r.constructFramework)&&void 0!==n?n:{};return Object(m.jsxs)(m.Fragment,{children:[t>0&&Object(m.jsx)(T.a,{mx:4,w:"auto"}),Object(m.jsx)(R.a,{"data-testid":v.suggestion,name:Object(m.jsxs)(E.a,{align:"center",direction:"row",spacing:4,children:[Object(m.jsx)(w.a,{w:"5.5rem",children:Object(m.jsx)(D.a,Object(a.a)({w:"min-content"},c))}),Object(m.jsx)(A.a,{children:e.name})]}),onClick:function(){return i(Object(F.a)(e))},py:2,textAlign:"left"},e.id)]})}))}))}))},77:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(220),r=n(208),c=n(1),o=function(){return Object(c.jsx)(a.a,{children:Object(c.jsx)(r.a,{size:"xl"})})}},78:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n(28),r=n.n(a),c=n(45),o=n(5),i=n(0),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.initialValue,a=t.onSuccess,s=t.onError,l=Object(i.useState)(!1),u=Object(o.a)(l,2),d=u[0],b=u[1],j=Object(i.useState)(n),f=Object(o.a)(j,2),O=f[0],h=f[1],v=Object(i.useState)(),m=Object(o.a)(v,2),p=m[0],g=m[1],x=Object(i.useRef)(!1);Object(i.useEffect)((function(){return x.current=!0,function(){x.current=!1}}),[]);var y=Object(i.useCallback)(Object(c.a)(r.a.mark((function t(){var c,o=arguments;return r.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(x.current){t.next=2;break}return t.abrupt("return");case 2:return b(!0),g(void 0),t.prev=4,t.next=7,e.apply(void 0,o);case 7:c=t.sent,null===a||void 0===a||a(c),x.current&&(h(c),b(!1)),t.next=17;break;case 12:t.prev=12,t.t0=t.catch(4),console.error(t.t0),null===s||void 0===s||s(t.t0),x.current&&(h(n),g(t.t0),b(!1));case 17:case"end":return t.stop()}}),t,null,[[4,12]])}))),[s,a]);return Object(i.useMemo)((function(){return[y,{data:O,loading:d,error:p}]}),[y,O,d,p])}},89:function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return l})),n.d(t,"a",(function(){return u}));var a=n(4),r=n(5),c=n(13),o=new RegExp(/git@github\.com:([a-zA-Z-]+)+\/?([a-zA-Z-]+)*(\.git)?/),i=function(e){try{var t=e,n=e.match(o);if(n){var a=Object(r.a)(n,3),c=a[1],i=a[2];t="https://github.com/".concat(c,"/").concat(i)}return{hostname:new URL(t).hostname,url:t}}catch(s){return}},s=function(e,t){var n=e;if(t){var a=function(e,t){var n=new URLSearchParams(t);return Object.entries(e).filter((function(e){return null!=Object(r.a)(e,2)[1]})).forEach((function(e){var t=Object(r.a)(e,2),a=t[0],c=t[1];n.set(a,"".concat(c))})),n.toString()}(t);a&&(n+="?".concat(a))}return n},l=function(e){var t,n=e.cdkMajor,r=e.cdkType,o=e.keywords,i=e.query,l=e.offset,u=e.languages,d=e.sort,b=e.tags;return s(c.c.SEARCH,(t={},Object(a.a)(t,c.b.SEARCH_QUERY,i),Object(a.a)(t,c.b.CDK_TYPE,r),Object(a.a)(t,c.b.CDK_MAJOR,n),Object(a.a)(t,c.b.KEYWORDS,(null===o||void 0===o?void 0:o.length)?o.join(","):null),Object(a.a)(t,c.b.LANGUAGES,(null===u||void 0===u?void 0:u.length)?u.join(","):null),Object(a.a)(t,c.b.SORT,d),Object(a.a)(t,c.b.OFFSET,null!==l&&void 0!==l?l:0),Object(a.a)(t,c.b.TAGS,(null===b||void 0===b?void 0:b.length)?b.join(","):null),t))},u=function(e){var t,n=e.name,r=e.version,o=e.language,i=e.submodule;return s("".concat(c.c.PACKAGES,"/").concat(n,"/v/").concat(r),(t={},Object(a.a)(t,c.b.SUBMODULE,i),Object(a.a)(t,c.b.LANGUAGE,o),t))}},90:function(e,t,n){"use strict";n.d(t,"b",(function(){return D})),n.d(t,"a",(function(){return R}));var a,r=n(0),c=n(4),o=n(37),i=n(14),s=n(6),l=n(5),u=n(68),d=n(79),b=n(118),j=n.n(b),f=n(48),O=n(59),h=n(126),v=n(121),m=function(e){return function(t,n){return t.name.localeCompare(n.name)*(e?1:-1)}},p=function(e){return function(t,n){var a=new Date(t.metadata.date).getTime(),r=new Date(n.metadata.date).getTime();return a===r?m(!0)(t,n):e?r<a?1:-1:a<r?1:-1}},g=function(e){return function(t,n){return t.downloads!==n.downloads?(t.downloads-n.downloads)*(e?1:-1):m(!e)(t,n)}},x=(a={},Object(c.a)(a,O.a.NameAsc,m(!0)),Object(c.a)(a,O.a.NameDesc,m(!1)),Object(c.a)(a,O.a.PublishDateAsc,p(!0)),Object(c.a)(a,O.a.PublishDateDesc,p(!1)),Object(c.a)(a,O.a.DownloadsAsc,g(!0)),Object(c.a)(a,O.a.DownloadsDesc,g(!1)),a),y=function(e){if(e)return function(t){var n,a;return(null===(n=t.metadata)||void 0===n||null===(a=n.constructFramework)||void 0===a?void 0:a.name)===e}},k=function(e){if("number"===typeof e)return function(t){var n,a;return(null===(n=t.metadata)||void 0===n||null===(a=n.constructFramework)||void 0===a?void 0:a.majorVersion)===e}},w=function(e){if(null===e||void 0===e?void 0:e.length)return function(t){var n,a,r,c,i=new Set,s=Object(o.a)(null!==(n=t.keywords)&&void 0!==n?n:[]);try{for(s.s();!(c=s.n()).done;){var l=c.value;i.add(l.toLocaleLowerCase())}}catch(v){s.e(v)}finally{s.f()}var u,d=Object(o.a)(null!==(a=null===(r=t.metadata)||void 0===r?void 0:r.packageTags)&&void 0!==a?a:[]);try{for(d.s();!(u=d.n()).done;){var b,j=null===(b=u.value.keyword)||void 0===b?void 0:b.label;j&&i.add(j.toLocaleLowerCase())}}catch(v){d.e(v)}finally{d.f()}var f,O=Object(o.a)(e);try{for(O.s();!(f=O.n()).done;){var h=f.value;if(i.has(h.toLocaleLowerCase()))return!0}}catch(v){O.e(v)}finally{O.f()}return!1}},S=function(e){var t,n=(null!==(t=null===e||void 0===e?void 0:e.length)&&void 0!==t?t:0)>0?new Set(e):void 0;if(n&&!n.has(v.d.TypeScript))return function(e){var t;return Object.keys(null!==(t=e.languages)&&void 0!==t?t:{}).some((function(e){return n.has(e)}))}},C=function(e){if(e&&e.length)return function(t){var n,a,r;return null!==(n=null===(a=t.metadata)||void 0===a||null===(r=a.packageTags)||void 0===r?void 0:r.some((function(t){return e.includes(t.id)})))&&void 0!==n&&n}},T=function(e){for(var t,n,a,r=new Set,c=null!==(t=e.keywords)&&void 0!==t?t:[],o=(null!==(n=null===(a=e.metadata)||void 0===a?void 0:a.packageTags)&&void 0!==n?n:[]).filter((function(e){return e.keyword})).map((function(e){return e.keyword.label})),s=0,l=[].concat(Object(i.a)(c),Object(i.a)(o));s<l.length;s++){var u=l[s];h.a.has(u)||r.add(u.toLocaleLowerCase())}return Array.from(r)},E={AUTHOR_EMAIL:{name:"authorEmail",boost:1},AUTHOR_NAME:{name:"authorName",boost:3},DESCRIPTION:{name:"description",boost:2},KEYWORDS:{name:"keywords",boost:2},NAME:{name:"name",boost:5},PACKAGE_NAME:{name:"packageName",boost:5},SCOPE:{name:"scope",boost:5},TAG_NAMES:{name:"tagNames",boost:2}},A=function(){function e(t,n){Object(u.a)(this,e),this.map=void 0,this.index=void 0,this.keywords=void 0,this.constructFrameworks=void 0;var a=t.filter((function(e){var t;return!(null===(t=e.keywords)||void 0===t?void 0:t.includes("construct-hub/hide-from-search"))})).reduce((function(e,t){var a,r,c,o,i,u,d=t.author,b=t.name,j=[b,t.version].join("@"),f=null!==(a=null===(r=n.packages[b])||void 0===r||null===(c=r.downloads)||void 0===c?void 0:c.npm)&&void 0!==a?a:0,O=b.split("/"),h=Object(l.a)(O,2),v=h[0],m=h[1];return m||(m=v),"string"===typeof d?i=d:((null===d||void 0===d?void 0:d.name)&&(i=d.name),(null===d||void 0===d?void 0:d.email)&&(u=d.email)),e.set(j,Object(s.a)(Object(s.a)({},t),{},{authorName:i,authorEmail:u,keywords:T(t),downloads:f,id:j,packageName:m,scope:v,tagNames:(null!==(o=t.metadata.packageTags)&&void 0!==o?o:[]).map((function(e){return e.id}))})),e}),new Map);this.map=this.sort(a,O.a.PublishDateDesc),this.constructFrameworks=this.detectConstructFrameworks(),this.keywords=this.detectKeywords(),this.index=j()((function(){var e=this;for(var t in this.tokenizer.separator=/[\s\-/@]+/,this.ref("id"),E){var n=E[t];this.field(n.name,{boost:n.boost})}Object(i.a)(a.values()).forEach((function(t){var n=Math.log(Math.max(t.downloads,1));e.add(t,{boost:n})}))}))}return Object(d.a)(e,[{key:"search",value:function(e){var t=null!==e&&void 0!==e?e:{},n=t.query,a=t.filters,r=t.sort,c=n?this.query(n):new Map(this.map);return a&&(c=this.filter(c,a)),c=this.dedup(c),r&&(c=this.sort(c,r)),c}},{key:"query",value:function(e){var t=this,n=[];try{var a=j.a.tokenizer(e);a.length>1&&(a=a.filter((function(e){return"cdk"!==e.toString()}))),n=this.index.query((function(e){e.term(a,{})}))}catch(r){console.error(r)}return n.reduce((function(e,n){var a=n.ref,r=t.map.get(a);return r&&e.set(a,r),e}),new Map)}},{key:"findByName",value:function(e){var t,n=Object(i.a)(this.map.values()).filter((function(t){return t.name===e})),a=new Array,r=Object(o.a)(n.values());try{for(r.s();!(t=r.n()).done;){var c=t.value;c.name===e&&a.push(c)}}catch(s){r.e(s)}finally{r.f()}return a}},{key:"filter",value:function(e,t){var n=t.cdkType,a=t.cdkMajor,r=t.keywords,c=t.languages,o=t.tags,i=new Map(e),s=[y(n),k(n?a:void 0),w(r),S(c),C(o)].filter(Boolean);return i.forEach((function(e){var t=!1;s.forEach((function(n){t||n(e)||(t=!0)})),t&&i.delete(e.id)})),i}},{key:"sort",value:function(e,t){return t?new Map(Object(i.a)(e.entries()).sort((function(e,n){var a=Object(l.a)(e,2)[1],r=Object(l.a)(n,2)[1];return x[t](a,r)}))):e}},{key:"dedup",value:function(e){var t,n=new Map,a=Object(o.a)(e);try{for(a.s();!(t=a.n()).done;){var r=Object(l.a)(t.value,2),c=(r[0],r[1]),i=n.get(c.name);(!i||new Date(i.metadata.date)<new Date(c.metadata.date))&&n.set(c.name,c)}}catch(s){a.e(s)}finally{a.f()}return n}},{key:"detectKeywords",value:function(){return Object(i.a)(this.map.values()).reduce((function(e,t){var n,a=Object(o.a)(T(t));try{for(a.s();!(n=a.n()).done;){var r=n.value,c=e.get(r);e.set(r,(null!==c&&void 0!==c?c:0)+1)}}catch(i){a.e(i)}finally{a.f()}return e}),new Map)}},{key:"detectConstructFrameworks",value:function(){var e;return Object(i.a)(this.map.values()).reduce((function(e,t){var n,a,r=t.metadata,c=null===r||void 0===r||null===(n=r.constructFramework)||void 0===n?void 0:n.name,o=null===r||void 0===r||null===(a=r.constructFramework)||void 0===a?void 0:a.majorVersion;if(c){var i=e[c];void 0===o||i.majorVersions.includes(o)||i.majorVersions.push(o),i.pkgCount+=1}return e}),(e={},Object(c.a)(e,f.c.awscdk,{majorVersions:[],pkgCount:0}),Object(c.a)(e,f.c.cdk8s,{majorVersions:[],pkgCount:0}),Object(c.a)(e,f.c.cdktf,{majorVersions:[],pkgCount:0}),e))}}]),e}(),M=n(77),z=n(75),I=n(91),F=n(1),P=Object(r.createContext)(void 0),D=function(){return Object(r.useContext)(P)},R=function(e){var t=e.children,n=Object(z.b)(),a=n.data,c=n.loading,o=Object(I.b)(),i=o.data,s=o.loading,l=Object(r.useMemo)((function(){if(void 0!==(null===a||void 0===a?void 0:a.packages)&&!c&&(void 0!==i&&!s))return new A(a.packages,i)}),[a,c,i,s]);return l?Object(F.jsx)(P.Provider,{value:l,children:t}):Object(F.jsx)(M.a,{})}},91:function(e,t,n){"use strict";n.d(t,"b",(function(){return f})),n.d(t,"a",(function(){return O}));var a=n(5),r=n(0),c=n(28),o=n.n(c),i=n(45),s=n(13),l={packages:{},updated:"NOT_FOUND"},u=function(){var e=Object(i.a)(o.a.mark((function e(){var t;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(s.a.STATS);case 2:if((t=e.sent).ok){e.next=7;break}return console.error(t.statusText),console.warn("Could not retrieve package stats. Using empty stats."),e.abrupt("return",l);case 7:return e.abrupt("return",t.json().catch((function(e){return console.error(e),console.warn("Error in package stats response. Using empty stats."),l})));case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),d=n(78),b=n(1),j=Object(r.createContext)({loading:!1,data:void 0,error:void 0}),f=function(){return Object(r.useContext)(j)},O=function(e){var t=e.children,n=Object(d.a)(u),c=Object(a.a)(n,2),o=c[0],i=c[1];return Object(r.useEffect)((function(){o()}),[o]),Object(b.jsx)(j.Provider,{value:i,children:t})}},94:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(6),r=n(17),c=n(203),o=n(1),i=Object(r.a)((function(e,t){return Object(o.jsx)(c.a,Object(a.a)({bg:"white",border:"base",borderRadius:"card",boxShadow:"base",p:2,ref:t},e))}));i.displayName="Card"},95:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(5),r=n(0),c=n(22),o=n(89),i=function(){var e,t,n,i,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},l=Object(r.useState)(null!==(e=s.defaultQuery)&&void 0!==e?e:""),u=Object(a.a)(l,2),d=u[0],b=u[1],j=Object(r.useState)(s.defaultCdkType),f=Object(a.a)(j,2),O=f[0],h=f[1],v=Object(r.useState)(s.defaultCdkMajor),m=Object(a.a)(v,2),p=m[0],g=m[1],x=Object(r.useState)(null!==(t=s.defaultLanguages)&&void 0!==t?t:[]),y=Object(a.a)(x,2),k=y[0],w=y[1],S=Object(r.useState)(null!==(n=s.defaultTags)&&void 0!==n?n:[]),C=Object(a.a)(S,2),T=C[0],E=C[1],A=Object(r.useState)(null!==(i=s.defaultKeywords)&&void 0!==i?i:[]),M=Object(a.a)(A,2),z=M[0],I=M[1],F=Object(r.useState)(s.defaultSort),P=Object(a.a)(F,2),D=P[0],R=P[1],L=Object(c.g)(),N=L.push,_=L.replace,G=function(e){e.preventDefault(),b(e.target.value)},W=Object(r.useCallback)((function(e){((null===e||void 0===e?void 0:e.replace)?_:N)(Object(o.c)({cdkType:O,cdkMajor:p,keywords:z,languages:k,query:d,sort:D,tags:T}))}),[_,N,O,p,z,k,d,D,T]),U=Object(r.useCallback)((function(e){null===e||void 0===e||e.preventDefault(),W()}),[W]);return Object(r.useMemo)((function(){return{cdkMajor:p,cdkType:O,keywords:z,languages:k,onQueryChange:G,onSearch:W,onSubmit:U,query:d,setCdkMajor:g,setCdkType:h,setKeywords:I,setLanguages:w,setTags:E,setQuery:b,setSort:R,sort:D,tags:T}}),[p,O,z,k,W,U,d,D,T])}}},[[182,3,5]]]);
2
+ //# sourceMappingURL=main.abd99000.chunk.js.map