construct-hub 0.3.139 → 0.3.140

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. package/.jsii +2 -2
  2. package/lib/construct-hub.js +1 -1
  3. package/lib/package-sources/code-artifact.js +1 -1
  4. package/lib/package-sources/npmjs.js +1 -1
  5. package/lib/package-tag/index.js +2 -2
  6. package/lib/spdx-license.js +1 -1
  7. package/package.json +2 -2
  8. package/website/asset-manifest.json +40 -40
  9. package/website/assets/aqua-security.png +0 -0
  10. package/website/index.html +1 -1
  11. package/website/static/js/{0.75bd4211.chunk.js → 0.740a33f8.chunk.js} +2 -2
  12. package/website/static/js/{0.75bd4211.chunk.js.map → 0.740a33f8.chunk.js.map} +1 -1
  13. package/website/static/js/{1.de94dd4f.chunk.js → 1.64a9b795.chunk.js} +2 -2
  14. package/website/static/js/{1.de94dd4f.chunk.js.map → 1.64a9b795.chunk.js.map} +1 -1
  15. package/website/static/js/{10.63153bb8.chunk.js → 10.30ecd71a.chunk.js} +2 -2
  16. package/website/static/js/{10.63153bb8.chunk.js.map → 10.30ecd71a.chunk.js.map} +1 -1
  17. package/website/static/js/11.9e53aff3.chunk.js +2 -0
  18. package/website/static/js/11.9e53aff3.chunk.js.map +1 -0
  19. package/website/static/js/12.7d44c985.chunk.js +2 -0
  20. package/website/static/js/12.7d44c985.chunk.js.map +1 -0
  21. package/website/static/js/{13.d3fce156.chunk.js → 13.9c0ba67b.chunk.js} +2 -2
  22. package/website/static/js/{13.d3fce156.chunk.js.map → 13.9c0ba67b.chunk.js.map} +1 -1
  23. package/website/static/js/{14.e783508a.chunk.js → 14.924c14cb.chunk.js} +2 -2
  24. package/website/static/js/{14.e783508a.chunk.js.map → 14.924c14cb.chunk.js.map} +1 -1
  25. package/website/static/js/{15.06217ace.chunk.js → 15.c3f18810.chunk.js} +3 -3
  26. package/website/static/js/{15.06217ace.chunk.js.LICENSE.txt → 15.c3f18810.chunk.js.LICENSE.txt} +0 -0
  27. package/website/static/js/{15.06217ace.chunk.js.map → 15.c3f18810.chunk.js.map} +1 -1
  28. package/website/static/js/{16.0b2ec5e5.chunk.js → 16.84214b0e.chunk.js} +2 -2
  29. package/website/static/js/{16.0b2ec5e5.chunk.js.map → 16.84214b0e.chunk.js.map} +1 -1
  30. package/website/static/js/{4.91a3f4bb.chunk.js → 4.e051c405.chunk.js} +3 -3
  31. package/website/static/js/{4.91a3f4bb.chunk.js.LICENSE.txt → 4.e051c405.chunk.js.LICENSE.txt} +0 -0
  32. package/website/static/js/4.e051c405.chunk.js.map +1 -0
  33. package/website/static/js/5.05213cd1.chunk.js +3 -0
  34. package/website/static/js/{5.fb19ba3d.chunk.js.LICENSE.txt → 5.05213cd1.chunk.js.LICENSE.txt} +0 -0
  35. package/website/static/js/5.05213cd1.chunk.js.map +1 -0
  36. package/website/static/js/6.4a34e978.chunk.js +2 -0
  37. package/website/static/js/6.4a34e978.chunk.js.map +1 -0
  38. package/website/static/js/7.ebf6a179.chunk.js +2 -0
  39. package/website/static/js/7.ebf6a179.chunk.js.map +1 -0
  40. package/website/static/js/{8.73c2c7f3.chunk.js → 8.8e96ad43.chunk.js} +2 -2
  41. package/website/static/js/{8.73c2c7f3.chunk.js.map → 8.8e96ad43.chunk.js.map} +1 -1
  42. package/website/static/js/{9.8b744886.chunk.js → 9.174f64fc.chunk.js} +2 -2
  43. package/website/static/js/{9.8b744886.chunk.js.map → 9.174f64fc.chunk.js.map} +1 -1
  44. package/website/static/js/main.8038c15f.chunk.js +2 -0
  45. package/website/static/js/main.8038c15f.chunk.js.map +1 -0
  46. package/website/static/js/{runtime-main.b8868b3c.js → runtime-main.6f10a9e2.js} +2 -2
  47. package/website/static/js/{runtime-main.b8868b3c.js.map → runtime-main.6f10a9e2.js.map} +1 -1
  48. package/website/static/js/11.95a7aff0.chunk.js +0 -2
  49. package/website/static/js/11.95a7aff0.chunk.js.map +0 -1
  50. package/website/static/js/12.755ea3fc.chunk.js +0 -2
  51. package/website/static/js/12.755ea3fc.chunk.js.map +0 -1
  52. package/website/static/js/4.91a3f4bb.chunk.js.map +0 -1
  53. package/website/static/js/5.fb19ba3d.chunk.js +0 -3
  54. package/website/static/js/5.fb19ba3d.chunk.js.map +0 -1
  55. package/website/static/js/6.ca3456ca.chunk.js +0 -2
  56. package/website/static/js/6.ca3456ca.chunk.js.map +0 -1
  57. package/website/static/js/7.f1806927.chunk.js +0 -2
  58. package/website/static/js/7.f1806927.chunk.js.map +0 -1
  59. package/website/static/js/main.40e21094.chunk.js +0 -2
  60. package/website/static/js/main.40e21094.chunk.js.map +0 -1
@@ -1,2 +0,0 @@
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 +0,0 @@
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","Flex","DevPreviewBanner"],"mappings":"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","file":"static/js/6.ca3456ca.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 { 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 fullSite = config?.featureFlags?.fullSite ?? false;\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 {fullSite ? <Categories /> : <></>}\n\n {fullSite ? <CDKTypeTabs /> : <></>}\n\n {fullSite ? <Featured /> : <></>}\n </GradientContainer>\n </Page>\n );\n};\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (this["webpackJsonpconstruct-hub-webapp"]=this["webpackJsonpconstruct-hub-webapp"]||[]).push([[7,13],{246:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));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"}}},o=n(122),i=n(1),l=function(e){var t=e.children,n=e.meta,l=e.pageName,s=Object(o.b)(r[l]);Object(a.useEffect)((function(){s()}),[s]);var d=n.suffix,u=void 0===d||d,b=n.title,j=n.description,h=u?"".concat(b," - Construct Hub"):b;return Object(i.jsxs)(i.Fragment,{children:[Object(i.jsxs)(c.a,{children:[!1,Object(i.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),Object(i.jsx)("meta",{charSet:"utf-8"}),Object(i.jsx)("title",{children:h}),Object(i.jsx)("meta",{content:h,property:"og:title"}),Object(i.jsx)("meta",{content:h,name:"twitter:title"}),Object(i.jsx)("meta",{content:"summary",name:"twitter:card"}),Object(i.jsx)("meta",{content:j,name:"description"}),Object(i.jsx)("meta",{content:j,property:"og:description"}),Object(i.jsx)("meta",{content:j,name:"twitter:description"})]}),t]})}},256:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return i}));var a=n(6),c=n(14),r=n(126),o=function(e){return!e||e.length<1?[]:e.reduce((function(e,t){return t.highlight?[].concat(Object(c.a)(e),[t.highlight]):e}),[])},i=function(e){for(var t=e.packageTags,n=e.keywords,o=new Array,i=new Set,l=0,s=[].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)));l<s.length;l++){var d=s[l],u=d.keyword.label.toLowerCase();i.has(u)||(o.push(d),i.add(u))}return o}},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 o})),n.d(t,"a",(function(){return i}));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,"/"),o=c(e,n),i="/v".concat(t);return"".concat(r).concat(o).concat(i)},o=function(e){var t=e;return(t.startsWith("~")||t.startsWith("^"))&&(t=t.substring(1)),t},i=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),o=n(121),i=n(13),l=n(262),s=o.d.TypeScript,d="preferred-language",u=function(e){return null!=e&&o.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 s},j=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.updateUrl,n=e.updateSaved,o=Object(r.h)(),s=o.pathname,j=o.hash,h=Object(r.g)(),O=h.replace,p=Object(l.a)(),f=p.get(i.b.LANGUAGE),v=Object(c.useState)((function(){return b(f)})),m=Object(a.a)(v,2),g=m[0],x=m[1];Object(c.useEffect)((function(){u(f)&&f!==g&&x(f)}),[f]),Object(c.useEffect)((function(){f!==g&&t&&(p.set(i.b.LANGUAGE,g),O({pathname:s,hash:j,search:p.toString()}))}),[g,t]);var y=Object(c.useCallback)((function(e){if(x(e),n)try{localStorage.setItem(d,e)}catch(t){}}),[n]);return Object(c.useMemo)((function(){return[g,y]}),[g,y])}},282:function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var a=n(6),c=n(24),r=n(17),o=n(203),i=n(648),l=n(1),s=["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,s);return Object(l.jsx)(o.a,Object(a.a)(Object(a.a)({as:"time",dateTime:n.toISOString(),ref:t},u),{},{children:null!==d&&void 0!==d?d:Object(i.a)(n,null!==r&&void 0!==r?r:"")}))}));d.displayName="Time"},283:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n(236),c=n(235),r=n(207),o=n(1),i=function(e){var t=e.label,n=e.color,i=e.icon;return Object(o.jsxs)(a.a,{align:"center",direction:"row",spacing:2,children:[Object(o.jsx)(c.a,{alt:"".concat(t," icon"),src:i,w:4}),Object(o.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),o=n(89),i=n(49),l=n(1),s=["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,s);return Object(l.jsx)(i.a,{"aria-label":"Tag: ".concat(u),to:Object(o.c)({keywords:[n]}),zIndex:b,children:Object(l.jsx)(r.a,Object(a.a)(Object(a.a)({_hover:{textDecoration:"underline"}},j),{},{children:Object(l.jsx)(r.b,{children:t})}))})}},285:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var a=n(231),c=n(121),r=n(1),o=function(e){var t=e.children,n=e.language,o=c.e.has(n),i=c.b[n],l=o?"Click to view documentation in ".concat(i):"Documentation support for ".concat(i," is coming soon!");return Object(r.jsx)(a.a,{hasArrow:!0,label:l,placement:"top-start",children:Object(r.jsx)("span",{children:t})})}},304:function(e,t,n){"use strict";n.r(t),n.d(t,"NotFound",(function(){return f})),n.d(t,"default",(function(){return f}));var a=n(220),c=n(213),r=n(158),o=n(34),i=n(246),l=n(6),s=n(24),d=n(17),u=n(203),b=n(235),j=n(1),h=["sources"],O=Object(d.a)((function(e,t){var n=e.sources,a=Object(s.a)(e,h);return Object(j.jsxs)(u.a,{as:"picture",children:[null===n||void 0===n?void 0:n.map((function(e,t){return Object(j.jsx)("source",{media:e.media,srcSet:e.srcSet},t)})),Object(j.jsx)(b.a,Object(l.a)({ref:t},a))]})}));O.displayName="Picture";var p={optimal:[{media:"(max-width:1024px)",srcSet:"/assets/404-hive@50.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.webp"},{media:"(min-width:1024px)",srcSet:"/assets/404-hive@100.png"}],fallback:"/assets/404-hive@50.png"},f=function(){return Object(j.jsx)(i.a,{meta:{title:"Not Found",description:"Oops! The page you were looking for does not exist"},pageName:"notFound",children:Object(j.jsxs)(a.a,{h:"100%",position:"relative",w:"100%",children:[Object(j.jsx)(O,{alt:"",inset:0,position:"absolute",sources:p.optimal,src:p.fallback,zIndex:"hide"}),Object(j.jsxs)(c.a,{align:"center",direction:"column",justify:"center",children:[Object(j.jsx)(O,{alt:"404 Image",sources:[{srcSet:"/assets/robot.webp"}],src:"/assets/robot.png"}),Object(j.jsx)(r.a,{as:o.b,colorScheme:"blue",to:"/",children:"Take Me Home"})]})]})})}},646:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return on}));var a=n(22),c=n(304),r=n(5),o=n(153),i=n(638),l=n(0),s=n(246),d=n(220),u=n(236),b=n(257),j=n(49),h=n(77),O=n(89),p=n(6),f=n(28),v=n.n(f),m=n(45),g=n(13),x=function(){var e=Object(m.a)(v.a.mark((function e(t,n,a){var c,r;return v.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c="".concat(Object(b.b)(t,n,a)).concat(g.a.ASSEMBLY_SUFFIX),e.next=3,fetch(c);case 3:if((r=e.sent).ok){e.next=6;break}throw new Error("Failed fetching assembly for ".concat(c,": ").concat(r.statusText));case 6:return e.abrupt("return",r.json());case 7:case"end":return e.stop()}}),e)})));return function(t,n,a){return e.apply(this,arguments)}}(),y=function(){var e=Object(m.a)(v.a.mark((function e(t,n,a,c,r){var o,i,l,s,d;return v.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o="/docs-".concat(r?"".concat(r,"-"):"").concat(a,".md"),i="".concat(Object(b.b)(t,n,c)).concat(o),e.next=4,fetch(i);case 4:if((l=e.sent).ok){e.next=7;break}throw new Error("Failed fetching documentation for ".concat(i,": ").concat(l.statusText));case 7:if(s="text/markdown",(d=l.headers.get("Content-Type"))&&d.includes(s)){e.next=11;break}throw new Error("Invalid content type: ".concat(d,". Expected ").concat(s,'"'));case 11:return e.abrupt("return",l.text());case 12:case"end":return e.stop()}}),e)})));return function(t,n,a,c,r){return e.apply(this,arguments)}}(),w=function(){var e=Object(m.a)(v.a.mark((function e(t,n,a){var c,r,o;return v.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(c=n).startsWith("^")&&(c=c.substring(1,c.length)),r="".concat(Object(b.b)(t,n,a)).concat(g.a.METADATA_SUFFIX),e.next=5,fetch(r);case 5:if((o=e.sent).ok){e.next=8;break}throw new Error("Failed fetching metadata for ".concat(r,": ").concat(o.statusText));case 8:return e.abrupt("return",o.json());case 9:case"end":return e.stop()}}),e)})));return function(t,n,a){return e.apply(this,arguments)}}(),k=n(121),C=n(270),S=n(262),T=n(78),L=n(4),I=n(14),A=n(336),R=n.n(A),E=function(e){return e.toLowerCase().replace(/[^a-zA-Z0-9 ]/g,"").replace(/ /g,"-")},W=function e(t,n){var a=t[t.length-1];return a&&a.level<n.level?(a.children=e(a.children,n),t):(t.push(n),t)},F=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,n=new RegExp("(`{3}[\\s\\S]*?(?:`{3})|^#{1,".concat(t,"}[^#].*)"),"gm");return e.split(n).reduce((function(e,t){var n=e[e.length-1];return t.startsWith("#")||(null===n||void 0===n?void 0:n.startsWith("#"))?[].concat(Object(I.a)(e),[t]):(e[e.length-1]+=t,e)}),[])},D=function(e){var t,n,a,c,o=(null!==(t=e.match(/(\S+)\s*=\s*(\"?)([^"]*)(\2|\s|$)/g))&&void 0!==t?t:[]).reduce((function(e,t){var n,a=t.split("="),c=Object(r.a)(a,2),o=c[0],i=c[1],l=null!==(n=/['"](.*?)['"]/.exec(i))&&void 0!==n?n:[],s=Object(r.a)(l,2),d=(s[0],s[1]);return Object(p.a)(Object(p.a)({},e),{},Object(L.a)({},o,d))}),{}),i=null!==(n=/^#*\s*(?:<a\s.*?(?:\/>|<\/a>))?\s*([^<]+?)\s*(?:<|$)/.exec(e))&&void 0!==n?n:[e,e],l=Object(r.a)(i,2),s=(l[0],l[1].replace(/\[([^\]]+)\](?:\([^)]+\)|\[[^\]]+\])/g,"$1").replace(/:\+1:|:-1:|:[\w-]+:/g,(function(e){var t;return null!==(t=R.a.get(e))&&void 0!==t?t:e}))),d=null!==(a=o["data-heading-title"])&&void 0!==a?a:s;return{id:null!==(c=o["data-heading-id"])&&void 0!==c?c:encodeURIComponent(E(d)),title:d}},z=function(e,t){var n=t.scope,a=t.language,c=t.name,r=t.version,o=t.submodule,i=n?"".concat(n,"/").concat(c):"".concat(c),l="/packages/".concat(i,"/v/").concat(r),s="?".concat(g.b.LANGUAGE,"=").concat(a);o&&(s+="&submodule=".concat(o));var d='# API Reference <span data-heading-title="API Reference" data-heading-id="api-reference"></span>',u=e.split(d),b=u.length>1?u.pop():"",j=u.join(d),h=F(b,3),O=F(j),f=[d.trim()].concat(Object(I.a)(null!==h&&void 0!==h?h:[])),v="".concat(l).concat(s),m=O.reduce((function(e,t){if(t.startsWith("#")){var n,a,c=D(t),r=c.id,o=c.title,i=null!==(n=null===(a=t.match(/(#)/gm))||void 0===a?void 0:a.length)&&void 0!==n?n:1,l=function(e){return(e.endsWith(".")||e.endsWith(":"))&&(e=e.slice(0,-1)),e}(o),s={level:i,id:r,title:l,path:"".concat(v,"#").concat(r),children:[]};return W(e,s)}return e}),[]);1===m.length&&(m=m[0].children);var x,y,w=[].concat([{level:1,id:"Readme",title:"Readme",path:v,children:m}]),k={};return null===f||void 0===f||f.forEach((function(e){var t,n,a,c=e.match(/(^#{1,3}[^#].*)/g),r=null!==(t=null===(n=e.match(/(#)/gm))||void 0===n?void 0:n.length)&&void 0!==t?t:1;if(null===c||void 0===c?void 0:c.length){var o=D(e),i=o.id,d=o.title,u=3===r?(a=i,"".concat(l,"/api/").concat(a).concat(s)):void 0,b=Object(p.a)({level:r,id:i,title:d,children:[]},u?{path:u}:{});w=W(w,b),x={id:i,title:d},y=r}else 3===y&&(k[x.id]={title:x.title,content:e})})),{readme:j,apiReference:k,menuItems:w}},B=n(1),P=Object(l.createContext)(void 0),M=function(){var e=Object(l.useContext)(P);if(!e)throw new Error("This component must be a child of a <PackageStateProvider />");return e},N=function(e){var t,n,o,i,s,d=e.children,u=Object(a.i)(),b=u.name,j=u.scope,h=u.version,O=Object(T.a)(y),f=Object(r.a)(O,2),v=f[0],m=f[1],L=Object(T.a)(x),I=Object(r.a)(L,2),A=I[0],R=I[1],E=Object(T.a)(w),W=Object(r.a)(E,2),F=W[0],D=W[1],M=Object(S.a)(),N=Object(C.a)(),U=Object(r.a)(N,1)[0],H=null!==(t=M.get(g.b.SUBMODULE))&&void 0!==t?t:"";Object(l.useEffect)((function(){F(b,h,j),A(b,h,j)}),[b,A,F,j,h]),Object(l.useEffect)((function(){v(b,h,k.f[U],j,H)}),[b,j,h,U,H,v]);var G="".concat(j?"".concat(j,"/").concat(b):b," ").concat(h),V=null!==(n=null===(o=R.data)||void 0===o?void 0:o.description)&&void 0!==n?n:"",q=Boolean(m.error||R.error),Z=Boolean(!m.loading&&!R.loading&&m.data&&R.data),X=Boolean(U===k.d.TypeScript||R.loading||R.error||null!=(null===(i=R.data)||void 0===i||null===(s=i.targets)||void 0===s?void 0:s[U.toString()])),_=Boolean(!D.loading&&(R.loading||m.loading)),$=Object(l.useMemo)((function(){return m.data?z(m.data,{scope:j,name:b,version:h,language:U,submodule:H}):{menuItems:[]}}),[m.data,b,j,h,U,H]);return R.error?Object(B.jsx)(c.NotFound,{}):Object(B.jsx)(P.Provider,{value:Object(p.a)({assembly:R,hasDocs:Z,hasError:q,isLoadingDocs:_,isSupported:X,language:U,markdown:m,metadata:D,name:b,pageDescription:V,pageTitle:G,scope:j,version:h},$),children:d})},U=n(63),H=Object(U.a)("package-page",["page","feedbackLinks","reportLink","githubLink","dependenciesTab","dependenciesList","dependenciesLink","description","markdown","selectVersionButton","selectVersionDropdown","selectVersionItem"]),G=function(){var e,t=M().assembly.data;if(!t)return Object(B.jsx)(h.a,{});var n=Object.entries(null!==(e=t.dependencies)&&void 0!==e?e:{});return n.length?Object(B.jsx)(u.a,{"data-testid":H.dependenciesList,direction:"row",justify:"center",mx:"auto",spacing:4,wrap:"wrap",children:n.map((function(e){var t=Object(r.a)(e,2),n=t[0],a=t[1];return Object(B.jsxs)(j.a,{_first:{ml:4},"data-testid":H.dependenciesLink,fontWeight:"semibold",p:2,to:Object(O.a)({name:n,version:Object(b.d)(a)}),children:[n," - ",a]},"".concat(n,"-").concat(a))}))}):Object(B.jsx)(d.a,{children:"This library does not have any known dependencies"})},V=n(30),q=n(158),Z=n(210),X=n(51),_=n(159),$=function(e){return Object(B.jsxs)(_.a,Object(p.a)(Object(p.a)({},e),{},{children:[Object(B.jsx)("path",{clipRule:"evenodd",d:"M10.2532 0C4.59124 0 0 4.59022 0 10.2532C0 14.7835 2.93785 18.6266 7.01174 19.9825C7.524 20.0776 7.71212 19.7601 7.71212 19.4893C7.71212 19.2448 7.70261 18.4371 7.6982 17.5804C4.84576 18.2006 4.24386 16.3706 4.24386 16.3706C3.77745 15.1855 3.10543 14.8704 3.10543 14.8704C2.17499 14.234 3.17555 14.2473 3.17555 14.2473C4.20498 14.3194 4.74728 15.3039 4.74728 15.3039C5.66176 16.871 7.14588 16.418 7.73097 16.1562C7.82299 15.4935 8.08871 15.041 8.38194 14.785C6.10457 14.5261 3.71038 13.6467 3.71038 9.718C3.71038 8.59859 4.11108 7.68394 4.76697 6.96573C4.66035 6.70765 4.30939 5.66481 4.86613 4.25252C4.86613 4.25252 5.72696 3.97695 7.68631 5.3035C8.50435 5.07616 9.38165 4.96189 10.2532 4.95799C11.1242 4.96189 12.002 5.07582 12.8216 5.30317C14.7785 3.97661 15.6383 4.25218 15.6383 4.25218C16.1964 5.6643 15.8455 6.70731 15.739 6.96539C16.3964 7.6836 16.7943 8.59825 16.7943 9.71766C16.7943 13.6557 14.3957 14.5227 12.1125 14.7767C12.4805 15.0949 12.8081 15.719 12.8081 16.6754C12.8081 18.0473 12.7963 19.1514 12.7963 19.4891C12.7963 19.762 12.981 20.0817 13.5005 19.981C17.5721 18.6237 20.5065 14.7818 20.5065 10.2532C20.5063 4.59056 15.9156 0.000169776 10.2532 0.000169776V0Z",fill:"#002954",fillRule:"evenodd"}),Object(B.jsx)("path",{d:"M3.88318 14.7214C3.86059 14.7724 3.78045 14.7876 3.70744 14.7528C3.63274 14.7195 3.59114 14.6501 3.61525 14.599C3.63732 14.5464 3.71763 14.5319 3.79183 14.5671C3.86654 14.6005 3.90898 14.6706 3.88301 14.7216L3.88318 14.7214ZM4.29848 15.1848C4.24975 15.2301 4.15416 15.209 4.0893 15.1372C4.02206 15.0659 4.0095 14.9703 4.05925 14.9243C4.10984 14.8791 4.20255 14.9005 4.26978 14.9719C4.33668 15.0442 4.34992 15.1389 4.29865 15.1849L4.29848 15.1848ZM4.70291 15.7751C4.64009 15.8189 4.5372 15.778 4.4737 15.6868C4.41088 15.5955 4.41088 15.486 4.4754 15.4423C4.53873 15.3985 4.64009 15.4381 4.70461 15.5284C4.76709 15.621 4.76709 15.7305 4.70291 15.775V15.7751ZM5.25659 16.3458C5.20056 16.4078 5.08069 16.3911 4.99308 16.3067C4.9036 16.224 4.87864 16.1064 4.93484 16.0446C4.99189 15.9824 5.11227 15.9998 5.20039 16.0836C5.28987 16.1661 5.31687 16.284 5.25693 16.3456L5.25659 16.3458ZM6.02064 16.677C5.99568 16.7573 5.88056 16.7939 5.76426 16.7596C5.64829 16.7244 5.5724 16.6305 5.59617 16.5494C5.61994 16.4684 5.7359 16.4305 5.85289 16.467C5.96885 16.502 6.04475 16.5954 6.02064 16.677ZM6.8599 16.7383C6.86279 16.8229 6.76431 16.8928 6.64257 16.8945C6.51982 16.8974 6.42049 16.8288 6.4193 16.7456C6.4193 16.6602 6.51574 16.5911 6.63833 16.5887C6.76007 16.5865 6.86007 16.6545 6.86007 16.7382L6.8599 16.7383ZM7.64059 16.6056C7.65519 16.6879 7.57047 16.7726 7.44941 16.7952C7.33056 16.8173 7.22019 16.766 7.20491 16.6843C7.19031 16.5998 7.27656 16.5151 7.39541 16.4932C7.51664 16.4723 7.62531 16.522 7.64059 16.6057V16.6056Z",fill:"#181616"})]}))},J={h:5,ml:2,w:5},K=function(){var e,t=M(),n=t.metadata.data,a=t.assembly.data;if(!a||!n)return null;var c=null!==(e=null===a||void 0===a?void 0:a.repository)&&void 0!==e?e:{},r=null;if("git"===c.type){var o,i=(null===(o=c.url)||void 0===o?void 0:o.endsWith(".git"))?c.url.replace(".git",""):c.url;i.endsWith("/")&&(i=i.slice(0,i.length-1)),r=Object(B.jsx)(q.a,{as:X.a,color:"black","data-testid":H.githubLink,hasIcon:!1,href:"".concat(i,"/issues"),rightIcon:Object(B.jsx)($,Object(p.a)({},J)),variant:"solid",children:"Provide Feedback"})}return Object(B.jsxs)(u.a,{align:"center",borderTop:"1px solid",borderTopColor:"blue.50",color:"blue.500","data-testid":H.feedbackLinks,direction:{base:"column",md:"row"},justify:"space-evenly",mx:8,py:10,spacing:4,children:[Object(B.jsx)(q.a,{as:Z.a,colorScheme:"blue","data-testid":H.reportLink,href:"mailto:abuse@amazonaws.com?subject=".concat(encodeURIComponent("ConstructHub - Report of abusive package: ".concat(null===a||void 0===a?void 0:a.name))),rightIcon:Object(B.jsx)(V.j,Object(p.a)({},J)),children:"Report this package"}),r]})},Y=n(213),Q=n(203),ee=n(207),te=n(209),ne=n(212),ae={color:"gray.900",h:4,w:4},ce=function(e){var t=e.children,n=e.path,a=e.title,c=e.showToggle,r={_hover:{bg:"rgba(0, 124, 253, 0.05)"},overflow:"hidden",pl:1,py:c?2:1,marginLeft:c?0:1,fontWeight:c?"bold":void 0,textOverflow:"ellipsis",w:"100%"};return n?Object(B.jsx)(j.a,Object(p.a)(Object(p.a)({title:a,to:n},r),{},{children:t})):Object(B.jsx)(ee.a,Object(p.a)(Object(p.a)({},r),{},{children:t}))},re=function e(t){var n,a=t.children,c=t.title,r=t.path,o=t.level,i=t.onOpen,s=o<2,d=Object(te.a)({onOpen:i,defaultIsOpen:s}),u=(null!==(n=null===a||void 0===a?void 0:a.length)&&void 0!==n?n:0)>0,b=d.isOpen&&u,j=Object(l.useMemo)((function(){return null===a||void 0===a?void 0:a.map((function(t,n){return Object(l.createElement)(e,Object(p.a)(Object(p.a)({},t),{},{key:n,level:o+1,onOpen:d.onOpen}))}))}),[a,d.onOpen,o]);return Object(B.jsxs)(Y.a,{direction:"column",children:[Object(B.jsxs)(Y.a,{align:"center",color:"gray.800",children:[u&&Object(B.jsx)(ne.a,{"aria-label":"expand-toggle",borderRadius:"md",h:4,icon:d.isOpen?Object(B.jsx)(V.c,Object(p.a)({},ae)):Object(B.jsx)(V.e,Object(p.a)({},ae)),ml:-1,onClick:d.onToggle,size:"xs",variant:"link",w:0}),Object(B.jsx)(ce,{path:r,showToggle:u,title:c,children:c})]}),Object(B.jsx)(Q.a,{_before:{bg:"gray.100",bottom:0,content:'""',left:0,position:"absolute",top:0,w:"1px"},display:b?"initial":"none",ml:2,mr:2,pl:2,position:"relative",children:j})]})},oe=function(e){var t=e.items;return Object(B.jsx)(Y.a,{direction:"column",maxWidth:"100%",children:t.map((function(e,t){return Object(l.createElement)(re,Object(p.a)(Object(p.a)({},e),{},{key:t,level:0,onOpen:void 0}))}))})},ie=n(215),le=n(52),se=n(222),de=n(147),ue=n(17),be=n(218),je=n(219),he=n(234),Oe=n(145),pe=n(146),fe=Object(ue.a)((function(e,t){var n=e.value,a=e.onChange,c=e.onSubmit,o=Object(l.useState)(n),i=Object(r.a)(o,2),s=i[0],d=i[1];return Object(pe.a)(s,{onChange:a}),Object(B.jsx)(Oe.a,{"data-testid":"choose-submodule-search-form",onSubmit:c,children:Object(B.jsxs)(be.a,{children:[Object(B.jsx)(je.a,{children:Object(B.jsx)(V.o,{color:"gray.400"})}),Object(B.jsx)(he.a,{"data-testid":"choose-submodule-search-input",onChange:function(e){return d(e.target.value)},placeholder:"Search",ref:t,value:s,variant:"filled"})]})})}));fe.displayName="SearchInput";var ve=function(e){var t=e.inputValue,n=e.isOpen,c=e.onClose,r=e.onInputChange,o=e.submodules,i=Object(l.useRef)(null),s=Object(a.g)().push,d=Object(l.useCallback)((function(e){c(),s(e)}),[c,s]),u=Object(l.useCallback)((function(e){if(e.preventDefault(),o.length){var t=o[0].to;d(t)}}),[d,o]);return Object(B.jsx)(le.a,{initialFocusRef:i,isOpen:n,onClose:c,children:Object(B.jsx)(le.h,{children:Object(B.jsxs)(le.d,{mx:4,children:[Object(B.jsx)(le.c,{"data-testid":"choose-submodule-modal-close"}),Object(B.jsx)(le.g,{"data-testid":"choose-submodule-modal-header",fontSize:"lg",fontWeight:"bold",children:"Choose a submodule"}),Object(B.jsxs)(le.b,{"data-testid":"choose-submodule-modal-body",p:0,children:[Object(B.jsx)(Q.a,{pb:4,px:4,children:Object(B.jsx)(fe,{onChange:r,onSubmit:u,ref:i,value:t})}),Object(B.jsx)(ie.a,{}),Object(B.jsx)(se.c,{"data-testid":"choose-submodule-modal-results",m:0,maxH:"50vh",overflow:"hidden auto",p:0,role:"listbox",tabIndex:-1,children:o.map((function(e){var t=e.name,n=e.to;return Object(B.jsx)(de.a,{"data-testid":"choose-submodule-result",name:t,onClick:function(){return d(n)}},t)}))})]})]})})})},me=function(e){var t,n=e.assembly,c=Object(a.h)().pathname,o=Object(a.g)().push,i=Object(S.a)(),s=Object.keys(null!==(t=null===n||void 0===n?void 0:n.submodules)&&void 0!==t?t:{}),d=Object(te.a)(),b=d.isOpen,j=d.onOpen,h=d.onClose,O=i.get(g.b.SUBMODULE),p=O?"Submodule: ".concat(O):"Choose Submodule",f=Object(l.useState)(""),v=Object(r.a)(f,2),m=v[0],x=v[1],y=Object(l.useCallback)((function(e){var t=new URLSearchParams(i.toString());return t.set("submodule",e),"".concat(c,"?").concat(t)}),[c,i]),w=Object(l.useMemo)((function(){var e=s;return m&&(e=e.filter((function(e){return e.toLowerCase().includes(m.toLowerCase())}))),e.map((function(e){var t=e.split(".")[1];return{name:t,to:y(t)}}))}),[s,m,y]);return 0===s.length?null:Object(B.jsxs)(u.a,{spacing:4,w:"100%",children:[O&&Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(q.a,{borderRadius:"none","data-testid":"choose-submodule-go-back",leftIcon:Object(B.jsx)(V.a,{"aria-label":"Back to construct root"}),onClick:function(){var e=i.get(g.b.LANGUAGE);o("".concat(c).concat(e?"?".concat(g.b.LANGUAGE,"=").concat(e):""))},title:"Back to construct root",variant:"link",children:null===n||void 0===n?void 0:n.name}),Object(B.jsx)(ie.a,{})]}),Object(B.jsx)(q.a,{borderRadius:"none",color:"blue.500","data-testid":"choose-submodule-search-trigger",flexGrow:1,onClick:j,rightIcon:Object(B.jsx)(V.c,{}),title:"Choose Submodule",variant:"link",children:p}),Object(B.jsx)(ve,{inputValue:m,isOpen:b,onClose:h,onInputChange:x,submodules:w})]})},ge=n(344),xe=n(435),ye=n.n(xe),we=n(529),ke=n.n(we),Ce=n(562),Se=n.n(Ce),Te=n(635),Le=n(565),Ie=n.n(Le),Ae=n(642),Re=n(24),Ee=n(637),We=n(599),Fe=n(641),De=["value"],ze=Object(ue.a)((function(e,t){var n=e.value,a=Object(Re.a)(e,De),c=Object(Fe.a)(n),r=c.hasCopied,o=c.onCopy;return Object(B.jsx)(ne.a,Object(p.a)({"aria-label":"Copy Button",color:"blue.500",colorScheme:"blue",h:6,icon:r?Object(B.jsx)(V.b,{color:"green.300"}):Object(B.jsx)(V.h,{}),minW:"auto",ml:1,onClick:o,ref:t,variant:"ghost",w:6},a))}));ze.displayName="CopyButton";var Be,Pe=function(e){var t=e.code,n=e.tokens,a=e.getLineProps,c=e.getTokenProps;return Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(Y.a,{align:"center",bg:"rgba(0, 124, 253, 0.15)",borderTopRadius:"md",justify:"flex-end",px:2,py:1,children:Object(B.jsx)(ze,{value:t})}),Object(B.jsx)(Q.a,{overflowX:"auto",p:2,children:n.map((function(e,t){return Object(B.jsx)("div",Object(p.a)(Object(p.a)({},a({line:e,key:t})),{},{children:e.map((function(e,t){return Object(B.jsx)("span",Object(p.a)({},c({token:e,key:t})),t)}))}),t)}))})]})},Me=function(e){var t=e.code,n=e.tokens,a=e.getLineProps,c=e.getTokenProps;return Object(B.jsxs)(o.a,{p:3,templateColumns:"1fr min-content",w:"full",children:[Object(B.jsx)(Q.a,{m:-3,maxW:"full",overflow:"auto",p:3,children:n.map((function(e,t){return Object(B.jsx)("div",Object(p.a)(Object(p.a)({},a({line:e,key:t})),{},{children:e.map((function(e,t){return Object(B.jsx)("span",Object(p.a)({},c({token:e,key:t})),t)}))}),t)}))}),Object(B.jsx)(Y.a,{align:"center",ml:1,children:Object(B.jsx)(ze,{value:t})})]})},Ne=["code","language"],Ue=function(e){var t=e.code,n=e.language,a=Object(Re.a)(e,Ne);return Object(B.jsx)(Ee.a,Object(p.a)(Object(p.a)({},Ee.b),{},{code:t,language:n,theme:We.a,children:function(e){return Object(B.jsx)(Q.a,Object(p.a)(Object(p.a)({as:"pre",border:"base",borderRadius:"md",boxShadow:"base",className:e.className,style:e.style},a),{},{children:e.tokens.length>1?Object(B.jsx)(Pe,Object(p.a)(Object(p.a)({},e),{},{code:t})):Object(B.jsx)(Me,Object(p.a)(Object(p.a)({},e),{},{code:t}))}))}}))},He=n(223),Ge=n(600),Ve=n.n(Ge),qe=function e(t){return l.Children.toArray(t).reduce((function(t,n){return"string"===typeof n?t+n:"object"===typeof n&&"props"in n?t+e(n.props.children):t}),"").trim()},Ze=function(e){var t,n,a=e.level,c=e.children,r=["2xl","xl","lg","md","sm","xs"][a-1],o="h".concat(a),i=(new DOMParser).parseFromString(Ve.a.renderToStaticMarkup(c),"text/html").querySelector("span[data-heading-title][data-heading-id]"),l=null!==(t=null===i||void 0===i?void 0:i.dataset.headingTitle)&&void 0!==t?t:qe(c),s=null!==(n=null===i||void 0===i?void 0:i.dataset.headingId)&&void 0!==n?n:E(l);return Object(B.jsx)(B.Fragment,{children:Object(B.jsx)(He.a,{as:o,backgroundColor:5===a?"gray.50":void 0,borderBottom:"1px solid",borderBottomColor:"gray.100",color:"gray.800",level:a,marginBottom:4,marginTop:a>=4?"1.5em":4,paddingBottom:2,paddingTop:2,paddingX:a>=4?2:void 0,size:r,children:Object(B.jsx)(j.a,{"data-heading-id":s,"data-heading-level":a,"data-heading-title":l,id:s,replace:!0,sx:{"> code":{color:"blue.800",fontSize:"inherit"}},to:"#".concat(s),children:c})})})},Xe=n(235),_e=n(643),$e=Object(U.a)("markdown",["container"]),Je=["children","href"],Ke={a:function(e){var t=e.children,n=e.href,a=Object(Re.a)(e,Je),c=Z.a;try{if(n&&n.startsWith("http"))if(new URL(n).hostname!==window.location.hostname){c=function(e){return Object(B.jsx)(X.a,Object(p.a)({},e))}}}catch(r){c=Z.a}return Object(B.jsx)(c,Object(p.a)(Object(p.a)({color:"blue.500",href:n,sx:{"> img + svg":{display:"none"}}},a),{},{children:t}))},blockquote:function(e){var t=e.children;return Object(B.jsx)(Q.a,{as:"blockquote",borderLeft:"5px solid",borderLeftColor:"gray.100",marginX:"2",px:"2",wordBreak:"break-word",children:t})},caption:_e.b,code:function(e){var t=e.inline,n=e.children,a=e.language,c=void 0===a?"typescript":a;if(t)return Object(B.jsx)(Ae.a,{bg:"gray.50",border:"1px solid",borderColor:"gray.50",borderRadius:"md",marginTop:"md",mx:2,px:2,py:0,children:n});var r=l.Children.toArray(n).reduce((function(e,t){return"string"===typeof t?"".concat(e).concat(t):e}),"").trim();return Object(B.jsx)(Ue,{code:r,fontSize:"0.9rem",language:c})},em:function(e){var t=e.children;return Object(B.jsx)(Q.a,{as:"em",fontStyle:"normal",fontWeight:"bold",children:t})},h1:Ze,h2:Ze,h3:Ze,h4:Ze,h5:Ze,h6:Ze,hr:function(){return Object(B.jsx)(B.Fragment,{})},img:function(e){return Object(B.jsx)(Xe.a,Object(p.a)({display:"inline-block"},e))},li:function(e){var t=e.children;return Object(B.jsx)(se.a,{lineHeight:"tall",marginX:2,sx:{"em:first-of-type":{fontSize:"small"},"&::marker":{color:"gray.400"},code:{fontSize:"small"}},children:t})},ol:function(e){var t=e.children;return Object(B.jsx)(se.b,{children:t})},p:function(e){var t=e.children;return Object(B.jsx)(ee.a,{lineHeight:"1.5",mx:2,my:4,children:t})},pre:function(e){var t=e.children;return Object(B.jsx)(Q.a,{as:"pre",children:t})},sup:function(e){var t=e.children,n=void 0,a="";if(Array.isArray(t)){var c=Object(r.a)(t,1)[0];"string"===typeof c&&(a=c)}return"Required"===a?n="orange.700":"Optional"===a&&(n="green.700"),Object(B.jsx)(Q.a,{as:"sup",color:n,fontSize:"xs",ml:-1,top:-1,children:t})},table:function(e){var t=e.children;return Object(B.jsx)(Q.a,{maxW:"100%",overflowX:"auto",children:Object(B.jsx)(_e.a,{variant:"striped",children:t})})},tbody:_e.c,td:_e.d,tfoot:_e.e,th:_e.f,thead:_e.g,tr:_e.h,ul:function(e){var t=e.children;return Object(B.jsx)(se.c,{marginTop:2,padding:0,children:t})}},Ye=Object(p.a)({},ge);Ye.attributes.span=(null!==(Be=Ye.attributes.span)&&void 0!==Be?Be:[]).concat(["dataHeadingTitle","dataHeadingId"]);var Qe=[[ke.a],[Se.a,Ye]],et=[Ie.a,Te.a],tt=/^(?:(?:git@)?github\.com:|(?:https?:\/\/)github\.com\/)([^/]+)\/([^/]+)(?:\.git)?$/,nt=function(e){var t=e.children,n=function(e){var t=e.type,n=e.url,a=e.directory;if("git"===t){var c=tt.exec(n);if(null!=c){var o=Object(r.a)(c,3);return{owner:o[1],repo:o[2],directory:a}}}}(e.repository),a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"HEAD";return null==n?ye.a.uriTransformer:function(a){var c=ye.a.uriTransformer(a),o=Object(r.a)(c,1)[0];if("#"===o||"/"===o)return c;if(c.includes("://"))return c;var i=n.owner,l=n.repo.replace(/\.git$/,""),s=n.directory?"".concat(n.directory,"/"):"";return"https://".concat(e,"/").concat(i,"/").concat(l,"/").concat(t,"/").concat(s).concat(c)}};return Object(B.jsx)(Q.a,{"data-testid":$e.container,px:8,children:Object(B.jsx)(ye.a,{components:Ke,rehypePlugins:Qe,remarkPlugins:et,transformImageUri:a("raw.githubusercontent.com"),transformLinkUri:a("github.com","blob/HEAD"),children:t})})},at=function(){var e=M(),t=e.isLoadingDocs,n=e.readme,a=e.assembly.data;return!t&&n&&a?Object(B.jsx)(nt,{repository:a.repository,children:n}):null},ct=n(34),rt=n(58),ot=function(){var e=M().language,t=Object(B.jsx)(X.a,{href:"".concat(rt.a,"/issues/new"),children:"issue"});return Object(B.jsxs)(ee.a,{align:"center",fontSize:"xl",fontStyle:"oblique",px:4,wordBreak:"break-word",children:["Documentation in ",e," is still not ready for this package. Come back soon. If this issue persists, please let us know by creating an"," ",t,"."]})},it=function(e){var t=e.rootId,n=Object(a.h)(),c=n.pathname,r=n.hash,o=n.search,i=M(),l=i.isLoadingDocs,s=i.assembly.data,d=function(){var e=Object(a.i)().typeId,t=M().apiReference;if(e)return null===t||void 0===t?void 0:t[e]}();if(l)return null;if(!d||!s)return Object(B.jsx)(ot,{});var u=d.title,b=d.content,j="".concat(c).concat(o,"#").concat(r);return Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(He.a,{as:"h2",p:8,size:"2xl",children:Object(B.jsx)(ct.c,{id:t,to:j,children:u})}),Object(B.jsx)(nt,{repository:s.repository,children:b})]})},lt="4.5rem",st="apidocs_header",dt="api",ut=function(){var e,t=M().assembly.data;return Object.keys(null!==(e=null===t||void 0===t?void 0:t.submodules)&&void 0!==e?e:{}).length>0?Object(B.jsx)(Y.a,{borderBottom:"1px solid",borderColor:"blue.50",justify:"center",py:4,children:Object(B.jsx)(me,{assembly:t})}):null},bt=function(){var e=Object(a.j)().path,t=M().menuItems,n=Object(a.h)(),c=n.hash,r=n.pathname,i=n.search;return Object(l.useEffect)((function(){if(c){var e=document.querySelector("".concat(c));null===e||void 0===e||e.scrollIntoView(!0)}else if(function(e){var t=e.split("/");return t[t.length-2]===dt}(r)){var t=document.getElementById(st);null===t||void 0===t||t.scrollIntoView(!0)}else window.scrollTo(0,0)})),Object(B.jsxs)(o.a,{bg:"white",columnGap:4,h:"100%",templateColumns:{base:"1fr",md:"1fr 3fr"},width:"100%",children:[Object(B.jsxs)(Y.a,{alignSelf:"stretch",borderRight:"1px solid",borderRightColor:"blue.50",direction:"column",display:{base:"none",md:"flex"},maxHeight:"calc(100vh - ".concat(lt,")"),overflow:"hidden auto",pl:6,position:"sticky",pr:4,top:lt,children:[Object(B.jsx)(ut,{}),Object(B.jsx)(Q.a,{overflowY:"auto",py:4,children:Object(B.jsx)(oe,{items:t})})]}),Object(B.jsx)(Q.a,{h:"max-content",maxWidth:"100%",overflow:"hidden",py:4,sx:{a:{scrollMarginTop:lt}},children:Object(B.jsxs)(a.d,{children:[Object(B.jsx)(a.a,{exact:!0,from:"".concat(e,"/").concat(dt),to:{pathname:e,search:i}}),Object(B.jsx)(a.b,{exact:!0,path:e,children:Object(B.jsx)(at,{})}),Object(B.jsx)(a.b,{exact:!0,path:"".concat(e,"/").concat(dt,"/:typeId"),children:Object(B.jsx)(it,{rootId:st})})]})})]})},jt=n(208),ht=n(285),Ot=function(e){var t=e.targetLanguages,n=e.selectedLanguage,c=M(),r=c.name,o=c.scope,i=c.version,l=Object(a.g)().push;return Object(B.jsx)(u.a,{align:"center","data-testid":"language-bar",direction:"row",spacing:2,children:Object(I.a)(t).sort((function(e,t){return k.a.indexOf(e)-k.a.indexOf(t)})).map((function(e){var t=!k.e.has(e),a=e===n,c=k.c[e].icon;return Object(B.jsx)(ht.a,{language:e,children:Object(B.jsx)(ne.a,{"aria-label":"Select ".concat(e," icon"),border:a?"1px solid":"none",borderColor:"blue.500",borderRadius:"lg",boxShadow:"base",colorScheme:"blue",cursor:t?"not-allowed":"pointer","data-testid":"language-".concat(e),disabled:t,icon:Object(B.jsx)(c,{"aria-label":"".concat(e,"-icon"),borderRadius:"sm",height:[4,5,6],width:[4,5,6]}),onClick:function(){a||l(Object(O.a)({name:Object(b.c)(r,o),version:i,language:e}))},p:1,variant:"outline",w:"max-content"})},e)}))})},pt=new Set(k.a),ft=function(){var e,t=M(),n=t.assembly.data,a=t.language,c=Object(C.a)({updateSaved:!0,updateUrl:!0}),o=Object(r.a)(c,2)[1],i=Object(C.a)({updateUrl:!0}),s=Object(r.a)(i,2)[1],d=[].concat(Object(I.a)(Object.keys(null!==(e=null===n||void 0===n?void 0:n.targets)&&void 0!==e?e:{})),[k.d.TypeScript]),u=d.includes(a);Object(l.useEffect)((function(){u||s(k.d.TypeScript)}),[u]);var b={selectedLanguage:u?a:k.d.TypeScript,setSelectedLanguage:o,targetLanguages:d.filter((function(e){return pt.has(e)}))};return Object(B.jsx)(Ot,Object(p.a)({},b))},vt=n(231),mt=n(211),gt=n(385),xt=n.n(gt),yt=n(283),wt=["license"],kt=Object(ue.a)((function(e,t){var n=e.license,a=Object(Re.a)(e,wt),c=xt.a[n].url;return Object(B.jsx)(X.a,Object(p.a)(Object(p.a)({href:c,ref:t},a),{},{children:n}))}));kt.displayName="LicenseLink";var Ct=n(282),St="MMM dd, yyyy 'at' h:mmaaa",Tt=n(91),Lt=n(269),It=n(256),At=["openText","closeText","isOpen"],Rt=function(e){var t=e.openText,n=e.closeText,a=e.isOpen,c=Object(Re.a)(e,At);return Object(B.jsx)(q.a,Object(p.a)(Object(p.a)({colorScheme:"blue",leftIcon:a?Object(B.jsx)(V.f,{}):Object(B.jsx)(V.c,{}),variant:"link"},c),{},{children:a?n:t}))},Et=function(e){var t=e.children,n=e.label,a=e.tooltip;return Object(B.jsx)(vt.a,{hasArrow:!0,isDisabled:!a,label:a,placement:"left",children:Object(B.jsxs)(ee.a,{fontWeight:"bold",children:[n," ",Object(B.jsx)(Q.a,{as:"span",fontWeight:"normal",children:t})]})})},Wt=function(e){var t=e.downloads;return Object(B.jsx)(Et,{label:Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(Q.a,{as:"span",mr:1,children:Object(B.jsx)(V.i,{})}),t.toLocaleString()]}),tooltip:"Download numbers are periodically sourced from the NPM registry",children:"Weekly downloads"})},Ft=function(e){var t=M(),n=Object(Tt.b)().data,a=Object(te.a)({defaultIsOpen:!0}),c=Object(Lt.a)("packageLinks"),o=t.assembly.data,i=t.metadata.data,s=t.scope?"".concat(t.scope,"/").concat(t.name):t.name,d=Object(It.a)(null===i||void 0===i?void 0:i.packageTags),b=Object(r.a)(d,1)[0],h=function(e){var t=e.assembly,n=e.metadata,a=e.name,c=e.packageLinks,r=e.stats,o=[];if(t||n||r||c){var i,s,d,u,b,h=null===r||void 0===r||null===(i=r.packages)||void 0===i||null===(s=i[a])||void 0===s||null===(d=s.downloads)||void 0===d?void 0:d.npm;void 0!==h&&o.push(Object(B.jsx)(Wt,{downloads:h}));var p=null===t||void 0===t?void 0:t.author.name,f=null===t||void 0===t?void 0:t.repository,v=null===t||void 0===t?void 0:t.license;if(p){var m=Object(B.jsx)(j.a,{color:"blue.500",to:Object(O.c)({query:p}),children:p});o.push(Object(B.jsx)(Et,{label:"Author",children:m}))}var g=null===n||void 0===n?void 0:n.date;if(g){var x=Object(B.jsx)(Ct.a,{date:new Date(g),fontWeight:"normal",format:St});o.push(Object(B.jsx)(Et,{label:"Published",children:x}))}if(f){var y=Object(O.b)(f.url);if(y){var w=Object(B.jsx)(X.a,{href:y.url,children:y.hostname});o.push(Object(B.jsx)(Et,{label:"Repository",children:w}))}}if(v&&v in xt.a){var k=Object(B.jsx)(kt,{license:v});o.push(Object(B.jsx)(Et,{label:"License",children:k}))}(null===c||void 0===c?void 0:c.length)&&c.forEach((function(e){var t,a=e.linkLabel,c=e.configKey,r=e.linkText,i=(null!==(t=null===n||void 0===n?void 0:n.packageLinks)&&void 0!==t?t:{})[c];if(i){var l=Object(B.jsx)(X.a,{href:i,children:null!==r&&void 0!==r?r:i});o.push(Object(B.jsxs)(Et,{label:a,children:[a,": ",l]}))}}));var C=null!==(u=null===n||void 0===n||null===(b=n.links)||void 0===b?void 0:b.npm)&&void 0!==u?u:"https://www.npmjs.com/package/".concat(null===t||void 0===t?void 0:t.name,"/v/").concat(null===t||void 0===t?void 0:t.version);if(C){var S=Object(B.jsx)(X.a,{href:C,children:new URL(C).hostname});o.push(Object(B.jsx)(Et,{label:"Registry",children:S}))}}return o.map((function(e,t){return Object(B.jsx)(l.Fragment,{children:e},t)}))}({assembly:o,metadata:i,name:s,packageLinks:c,stats:n});if(!h.length)return null;var f=h.slice(0,2),v=h.slice(2,h.length);return Object(B.jsxs)(u.a,Object(p.a)(Object(p.a)({align:"start",color:"gray.600",fontSize:".75rem",mt:2,spacing:2},e),{},{children:[b&&Object(B.jsx)(yt.a,Object(p.a)({},b)),f,v.length>0&&Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(mt.a,{animateOpacity:!0,in:a.isOpen,children:Object(B.jsx)(u.a,{spacing:2,children:v})}),Object(B.jsx)(Rt,{closeText:"See less details (".concat(f.length,")"),fontSize:"inherit",isOpen:a.isOpen,onClick:a.onToggle,openText:"See more details (".concat(v.length,")")})]})]}))},Dt=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.map((function(e){return'"'.concat(e.map((function(e){return null!==e&&void 0!==e?e:"."})).join(" "),'"')})).join(" ")},zt="heading",Bt="install",Pt="languages",Mt="meta",Nt=Dt([zt],[Mt],[Pt],[Bt]),Ut=Dt([zt,Pt,Bt],[zt,null,Mt]),Ht=function(e){var t=e.children;return Object(B.jsx)(o.a,{columnGap:{md:6,lg:10},pt:{base:3,lg:6},px:{base:5,md:6,lg:10},rowGap:{base:4,lg:0},templateAreas:{base:Nt,lg:Ut},templateColumns:{base:"1fr",lg:"1fr auto 15rem"},templateRows:{lg:"auto 1fr"},children:t})},Gt=n(128),Vt=n(284),qt=n(230),Zt=n(603),Xt=n.n(Zt),_t=n(90),$t=function(){var e=M(),t=e.scope,n=e.name,c=e.version,r=e.language,o=t?"".concat(t,"/").concat(n):n,i=Object(_t.b)(),s=Object(a.g)().push,d=i.findByName(o),u=Object(l.useMemo)((function(){var e=d.map((function(e){return e.version})),t=Object(I.a)(new Set([].concat(Object(I.a)(e),[c])));return t.sort(Xt.a.compare),t}),[d,c]);return Object(B.jsxs)(qt.a,{children:[Object(B.jsx)(qt.b,{as:q.a,color:"blue.500","data-testid":H.selectVersionButton,mt:1,py:1,rightIcon:Object(B.jsx)(V.c,{}),variant:"link",children:"v".concat(c)}),Object(B.jsx)(qt.f,{"data-testid":H.selectVersionDropdown,minW:"180",zIndex:"sticky",children:u.map((function(e){return Object(B.jsx)(qt.e,{"data-testid":H.selectVersionItem,"data-value":e,onClick:function(){return t=e,void s(Object(O.a)({name:o,version:t,language:r}));var t},children:"v".concat(e)},e)}))})]})},Jt=["assembly","name","description","metadata","version"],Kt=function(e){var t,n,a,c=e.assembly,r=e.name,o=e.description,i=e.metadata,l=(e.version,Object(Re.a)(e,Jt)),s=Object(It.b)({packageTags:null!==(t=null===i||void 0===i?void 0:i.packageTags)&&void 0!==t?t:[],keywords:null!==(n=null===c||void 0===c?void 0:c.keywords)&&void 0!==n?n:[]}),d=null!==(a=i.constructFramework)&&void 0!==a?a:{};return Object(B.jsxs)(u.a,Object(p.a)(Object(p.a)({lineHeight:"1.5",maxW:"full",overflow:"hidden",spacing:2},l),{},{children:[Object(B.jsxs)(Y.a,{align:"center",wrap:"wrap",children:[Object(B.jsx)(He.a,{color:"blue.800",flexShrink:1,fontSize:"1.5rem",isTruncated:!0,mr:4,children:r}),Object(B.jsx)($t,{})]}),Object(B.jsx)(ee.a,{"data-testid":H.description,fontSize:"1rem",children:o}),Object(B.jsxs)(Y.a,{align:"center",direction:"row",pt:1,sx:{gap:"0.5rem"},wrap:"wrap",children:[Object(B.jsx)(Gt.a,Object(p.a)({},d)),s.map((function(e){var t=e.id,n=e.keyword,a=(n=void 0===n?{}:n).label,c=n.color;return Object(B.jsx)(Vt.a,{value:t,variant:c,children:a},t)}))]})]}))},Yt=function(e){var t=M(),n=t.language,a=t.assembly.data,c=Object(te.a)();if(!a)return null;var r=function(e){var t=e.language,n=e.assembly,a=n.version;if(t===k.d.TypeScript){var c=n.name;return"npm install ".concat(c,"@").concat(a)}if(t===k.d.Python){var r,o,i=null===(r=n.targets)||void 0===r||null===(o=r.python)||void 0===o?void 0:o.distName;if(!i)return;return"pip install ".concat(i,"==").concat(a)}if(t===k.d.Java){var l,s,d,u,b,j,h=null===(l=n.targets)||void 0===l||null===(s=l.java)||void 0===s||null===(d=s.maven)||void 0===d?void 0:d.groupId,O=null===(u=n.targets)||void 0===u||null===(b=u.java)||void 0===b||null===(j=b.maven)||void 0===j?void 0:j.artifactId;if(!h||!O)return;return["// add this to your pom.xml","<dependency>"," <groupId>".concat(h,"</groupId>")," <artifactId>".concat(O,"</artifactId>")," <version>".concat(a,"</version>"),"</dependency>"].join("\n")}if(t===k.d.DotNet){var p,f,v=null===(p=n.targets)||void 0===p||null===(f=p.dotnet)||void 0===f?void 0:f.packageId;if(!v)return;return"dotnet add package ".concat(v," --version ").concat(a)}}({language:n,assembly:a});return r&&n?Object(B.jsx)(Y.a,Object(p.a)(Object(p.a)({align:"start",direction:"column",fontSize:".75rem"},e),{},{children:n===k.d.Java?Object(B.jsxs)(B.Fragment,{children:[Object(B.jsx)(Rt,{closeText:"Hide",fontSize:"inherit",isOpen:c.isOpen,mt:2,onClick:c.onToggle,openText:"Install"}),Object(B.jsx)(Q.a,{maxW:"full",overflow:"hidden",children:Object(B.jsx)(mt.a,{in:c.isOpen,children:Object(B.jsx)(Ue,{boxShadow:"none",code:r,fontSize:"inherit",language:n,mt:2})})})]}):Object(B.jsx)(Ue,{boxShadow:"none",code:r,fontSize:"inherit",language:n,lineHeight:"2"})})):null},Qt=function(){var e=M(),t=e.assembly,n=e.metadata,a=e.version,c=t.data,r=n.data;return c&&r?Object(B.jsxs)(Ht,{children:[Object(B.jsx)(Kt,{assembly:c,description:c.description,gridArea:zt,metadata:r,name:c.name,version:a}),Object(B.jsx)(Y.a,{align:"start",gridArea:Pt,children:Object(B.jsx)(ft,{})}),Object(B.jsxs)(Y.a,{direction:"column",gridArea:Mt,children:[Object(B.jsx)(ie.a,{borderBottom:"base",display:{md:"none"},mb:2}),Object(B.jsx)(Ft,{}),Object(B.jsx)(ie.a,{borderBottom:"base",display:{md:"none"},mt:2})]}),Object(B.jsx)(Y.a,{align:"start",gridArea:Bt,children:Object(B.jsx)(Yt,{})})]}):Object(B.jsx)(jt.a,{mx:"auto",my:10,size:"xl"})},en=function(){var e=M(),t=e.pageDescription,n=e.pageTitle,a=Object(l.useState)(0),c=Object(r.a)(a,2),d=c[0],u=c[1];return Object(l.useEffect)((function(){u(0)}),[n]),Object(B.jsx)(s.a,{meta:{title:n,description:t},pageName:"packageProfile",children:Object(B.jsxs)(o.a,{bg:"white","data-testid":H.page,maxW:"100vw",templateColumns:"1fr",templateRows:"auto 1fr auto",children:[Object(B.jsx)(Qt,{}),Object(B.jsxs)(i.e,{index:d,onChange:u,pt:4,variant:"line",children:[Object(B.jsxs)(i.b,{borderBottom:"base",mx:{base:0,lg:6},children:[Object(B.jsx)(i.a,{children:"Documentation"}),Object(B.jsx)(i.a,{"data-testid":H.dependenciesTab,children:"Dependencies"})]}),Object(B.jsxs)(i.d,{maxW:"full",children:[Object(B.jsx)(i.c,{p:0,children:Object(B.jsx)(bt,{})}),Object(B.jsx)(i.c,{children:Object(B.jsx)(G,{})})]})]}),Object(B.jsx)(K,{})]})})},tn=function(){return Object(B.jsx)(N,{children:Object(B.jsx)(en,{})})},nn=n(75),an=function(){var e=Object(a.i)(),t=e.name,n=e.scope,r=Object(nn.b)();if(r.loading||!r.data)return Object(B.jsx)(d.a,{minH:"16rem",children:Object(B.jsx)(jt.a,{size:"xl"})});var o=function(e,t,n){var a=Object(b.c)(t,n),c=Object(b.a)(e,a);if(c){var r=c.version,o="/v/".concat(r);return"".concat("/packages/").concat(a).concat(o)}}(r.data,t,n);return o?Object(B.jsx)(a.a,{to:o}):Object(B.jsx)(c.default,{})},cn="[^@\\/]+",rn="@[^\\/]+",on=function(){var e=Object(a.j)().path;return Object(B.jsxs)(a.d,{children:[Object(B.jsx)(a.b,{exact:!0,path:"".concat(e,"/:scope(").concat(rn,")?/:name(").concat(cn,")"),children:Object(B.jsx)(an,{})}),Object(B.jsx)(a.b,{path:"".concat(e,"/:scope(").concat(rn,")?/:name(").concat(cn,")/v/:version"),children:Object(B.jsx)(tn,{})}),Object(B.jsx)(a.b,{path:"*",children:Object(B.jsx)(c.NotFound,{})})]})}}}]);
2
- //# sourceMappingURL=7.f1806927.chunk.js.map