construct-hub-webapp 0.1.1469 → 0.1.1470

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/build/asset-manifest.json +9 -9
  2. package/build/index.html +1 -1
  3. package/build/static/js/{294.61480951.chunk.js → 294.735eb9dd.chunk.js} +2 -2
  4. package/build/static/js/294.735eb9dd.chunk.js.map +1 -0
  5. package/build/static/js/323.87521e0e.chunk.js.map +1 -1
  6. package/build/static/js/332.b740638d.chunk.js.map +1 -1
  7. package/build/static/js/375.6faf5557.chunk.js.map +1 -1
  8. package/build/static/js/421.06d969b9.chunk.js +2 -0
  9. package/build/static/js/421.06d969b9.chunk.js.map +1 -0
  10. package/build/static/js/451.916d6ace.chunk.js.map +1 -1
  11. package/build/static/js/453.13ac0f49.chunk.js.map +1 -1
  12. package/build/static/js/487.c94daaad.chunk.js +3 -0
  13. package/build/static/js/487.c94daaad.chunk.js.map +1 -0
  14. package/build/static/js/496.2a6b6f6f.chunk.js.map +1 -1
  15. package/build/static/js/516.87cad50a.chunk.js.map +1 -1
  16. package/build/static/js/591.6b31b86a.chunk.js.map +1 -1
  17. package/build/static/js/619.1a7deb33.chunk.js.map +1 -1
  18. package/build/static/js/773.279948f6.chunk.js.map +1 -1
  19. package/build/static/js/8.75aab01d.chunk.js.map +1 -1
  20. package/build/static/js/857.8e026699.chunk.js.map +1 -1
  21. package/build/static/js/959.abcce3a0.chunk.js.map +1 -1
  22. package/build/static/js/main.9e6b2567.js +3 -0
  23. package/build/static/js/main.9e6b2567.js.map +1 -0
  24. package/package.json +5 -8
  25. package/build/static/js/294.61480951.chunk.js.map +0 -1
  26. package/build/static/js/421.89f85fcb.chunk.js +0 -2
  27. package/build/static/js/421.89f85fcb.chunk.js.map +0 -1
  28. package/build/static/js/487.d7ec3dbe.chunk.js +0 -3
  29. package/build/static/js/487.d7ec3dbe.chunk.js.map +0 -1
  30. package/build/static/js/main.6b38d083.js +0 -3
  31. package/build/static/js/main.6b38d083.js.map +0 -1
  32. package/coverage/clover.xml +0 -3236
  33. package/coverage/coverage-final.json +0 -293
  34. package/coverage/lcov-report/base.css +0 -224
  35. package/coverage/lcov-report/block-navigation.js +0 -87
  36. package/coverage/lcov-report/favicon.png +0 -0
  37. package/coverage/lcov-report/index.html +0 -1211
  38. package/coverage/lcov-report/prettify.css +0 -1
  39. package/coverage/lcov-report/prettify.js +0 -2
  40. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  41. package/coverage/lcov-report/sorter.js +0 -210
  42. package/coverage/lcov-report/src/App.tsx.html +0 -214
  43. package/coverage/lcov-report/src/api/catalog-search/catalog-search.ts.html +0 -1300
  44. package/coverage/lcov-report/src/api/catalog-search/constants.ts.html +0 -112
  45. package/coverage/lcov-report/src/api/catalog-search/index.html +0 -161
  46. package/coverage/lcov-report/src/api/catalog-search/index.ts.html +0 -88
  47. package/coverage/lcov-report/src/api/catalog-search/util.ts.html +0 -688
  48. package/coverage/lcov-report/src/api/config/index.html +0 -116
  49. package/coverage/lcov-report/src/api/config/index.ts.html +0 -517
  50. package/coverage/lcov-report/src/api/package/assembly.ts.html +0 -178
  51. package/coverage/lcov-report/src/api/package/docs.ts.html +0 -334
  52. package/coverage/lcov-report/src/api/package/index.html +0 -176
  53. package/coverage/lcov-report/src/api/package/metadata.ts.html +0 -265
  54. package/coverage/lcov-report/src/api/package/packages.ts.html +0 -232
  55. package/coverage/lcov-report/src/api/package/util.ts.html +0 -214
  56. package/coverage/lcov-report/src/api/stats/index.html +0 -116
  57. package/coverage/lcov-report/src/api/stats/index.ts.html +0 -193
  58. package/coverage/lcov-report/src/api/versions/index.html +0 -116
  59. package/coverage/lcov-report/src/api/versions/index.ts.html +0 -172
  60. package/coverage/lcov-report/src/components/CDKType/CDKType.tsx.html +0 -400
  61. package/coverage/lcov-report/src/components/CDKType/index.html +0 -131
  62. package/coverage/lcov-report/src/components/CDKType/index.ts.html +0 -88
  63. package/coverage/lcov-report/src/components/Card/Card.tsx.html +0 -151
  64. package/coverage/lcov-report/src/components/Card/index.html +0 -131
  65. package/coverage/lcov-report/src/components/Card/index.ts.html +0 -88
  66. package/coverage/lcov-report/src/components/Code/Code.tsx.html +0 -223
  67. package/coverage/lcov-report/src/components/Code/MultiLineRenderer.tsx.html +0 -202
  68. package/coverage/lcov-report/src/components/Code/SingleLineRenderer.tsx.html +0 -163
  69. package/coverage/lcov-report/src/components/Code/index.html +0 -176
  70. package/coverage/lcov-report/src/components/Code/index.ts.html +0 -88
  71. package/coverage/lcov-report/src/components/Code/types.ts.html +0 -112
  72. package/coverage/lcov-report/src/components/CopyButton/CopyButton.tsx.html +0 -199
  73. package/coverage/lcov-report/src/components/CopyButton/index.html +0 -131
  74. package/coverage/lcov-report/src/components/CopyButton/index.ts.html +0 -88
  75. package/coverage/lcov-report/src/components/ExternalLink/ExternalLink.tsx.html +0 -286
  76. package/coverage/lcov-report/src/components/ExternalLink/index.html +0 -131
  77. package/coverage/lcov-report/src/components/ExternalLink/index.ts.html +0 -88
  78. package/coverage/lcov-report/src/components/FAQ/FAQ.tsx.html +0 -112
  79. package/coverage/lcov-report/src/components/FAQ/FAQHeading.tsx.html +0 -115
  80. package/coverage/lcov-report/src/components/FAQ/FAQItem.tsx.html +0 -202
  81. package/coverage/lcov-report/src/components/FAQ/FAQLink.tsx.html +0 -145
  82. package/coverage/lcov-report/src/components/FAQ/FAQSection.tsx.html +0 -193
  83. package/coverage/lcov-report/src/components/FAQ/FAQSections.tsx.html +0 -118
  84. package/coverage/lcov-report/src/components/FAQ/index.html +0 -206
  85. package/coverage/lcov-report/src/components/FAQ/index.ts.html +0 -103
  86. package/coverage/lcov-report/src/components/Footer/Footer.tsx.html +0 -406
  87. package/coverage/lcov-report/src/components/Footer/constants.ts.html +0 -202
  88. package/coverage/lcov-report/src/components/Footer/index.html +0 -161
  89. package/coverage/lcov-report/src/components/Footer/index.ts.html +0 -88
  90. package/coverage/lcov-report/src/components/Footer/testIds.ts.html +0 -121
  91. package/coverage/lcov-report/src/components/Form/Form.tsx.html +0 -112
  92. package/coverage/lcov-report/src/components/Form/index.html +0 -131
  93. package/coverage/lcov-report/src/components/Form/index.ts.html +0 -88
  94. package/coverage/lcov-report/src/components/Header/DocumentationDropdown.tsx.html +0 -160
  95. package/coverage/lcov-report/src/components/Header/GettingStartedDropdown.tsx.html +0 -160
  96. package/coverage/lcov-report/src/components/Header/Header.tsx.html +0 -349
  97. package/coverage/lcov-report/src/components/Header/HeaderSearch.tsx.html +0 -229
  98. package/coverage/lcov-report/src/components/Header/MobileNav.tsx.html +0 -319
  99. package/coverage/lcov-report/src/components/Header/MobileNavLinks.tsx.html +0 -487
  100. package/coverage/lcov-report/src/components/Header/NavButton.tsx.html +0 -184
  101. package/coverage/lcov-report/src/components/Header/Title.tsx.html +0 -133
  102. package/coverage/lcov-report/src/components/Header/constants.ts.html +0 -220
  103. package/coverage/lcov-report/src/components/Header/index.html +0 -266
  104. package/coverage/lcov-report/src/components/Header/index.ts.html +0 -88
  105. package/coverage/lcov-report/src/components/Header/testIds.ts.html +0 -136
  106. package/coverage/lcov-report/src/components/Highlight/Highlight.tsx.html +0 -157
  107. package/coverage/lcov-report/src/components/Highlight/index.html +0 -131
  108. package/coverage/lcov-report/src/components/Highlight/index.ts.html +0 -88
  109. package/coverage/lcov-report/src/components/LanguageSupportTooltip/LanguageSupportTooltip.tsx.html +0 -169
  110. package/coverage/lcov-report/src/components/LanguageSupportTooltip/index.html +0 -131
  111. package/coverage/lcov-report/src/components/LanguageSupportTooltip/index.ts.html +0 -88
  112. package/coverage/lcov-report/src/components/LazyRoute/LazyRoute.tsx.html +0 -181
  113. package/coverage/lcov-report/src/components/LazyRoute/index.html +0 -131
  114. package/coverage/lcov-report/src/components/LazyRoute/index.ts.html +0 -88
  115. package/coverage/lcov-report/src/components/LicenseLink/LicenseLink.tsx.html +0 -160
  116. package/coverage/lcov-report/src/components/LicenseLink/index.html +0 -131
  117. package/coverage/lcov-report/src/components/LicenseLink/index.ts.html +0 -88
  118. package/coverage/lcov-report/src/components/Markdown/Code.tsx.html +0 -190
  119. package/coverage/lcov-report/src/components/Markdown/Headings.tsx.html +0 -427
  120. package/coverage/lcov-report/src/components/Markdown/Hr.tsx.html +0 -118
  121. package/coverage/lcov-report/src/components/Markdown/Img.tsx.html +0 -103
  122. package/coverage/lcov-report/src/components/Markdown/List.tsx.html +0 -172
  123. package/coverage/lcov-report/src/components/Markdown/Markdown.tsx.html +0 -523
  124. package/coverage/lcov-report/src/components/Markdown/Table.tsx.html +0 -145
  125. package/coverage/lcov-report/src/components/Markdown/Text.tsx.html +0 -388
  126. package/coverage/lcov-report/src/components/Markdown/index.html +0 -251
  127. package/coverage/lcov-report/src/components/Markdown/index.ts.html +0 -88
  128. package/coverage/lcov-report/src/components/Markdown/testIds.ts.html +0 -94
  129. package/coverage/lcov-report/src/components/NavLink/NavLink.tsx.html +0 -112
  130. package/coverage/lcov-report/src/components/NavLink/index.html +0 -131
  131. package/coverage/lcov-report/src/components/NavLink/index.ts.html +0 -88
  132. package/coverage/lcov-report/src/components/NavPopover/NavPopover.tsx.html +0 -130
  133. package/coverage/lcov-report/src/components/NavPopover/NavPopoverContent.tsx.html +0 -322
  134. package/coverage/lcov-report/src/components/NavPopover/NavPopoverTrigger.tsx.html +0 -163
  135. package/coverage/lcov-report/src/components/NavPopover/index.html +0 -176
  136. package/coverage/lcov-report/src/components/NavPopover/index.ts.html +0 -97
  137. package/coverage/lcov-report/src/components/NavPopover/types.ts.html +0 -121
  138. package/coverage/lcov-report/src/components/NavTree/NavItem.tsx.html +0 -481
  139. package/coverage/lcov-report/src/components/NavTree/NavItemWrapper.tsx.html +0 -232
  140. package/coverage/lcov-report/src/components/NavTree/NavTree.tsx.html +0 -211
  141. package/coverage/lcov-report/src/components/NavTree/index.html +0 -176
  142. package/coverage/lcov-report/src/components/NavTree/index.ts.html +0 -94
  143. package/coverage/lcov-report/src/components/NavTree/types.ts.html +0 -154
  144. package/coverage/lcov-report/src/components/PackageCard/Details.tsx.html +0 -331
  145. package/coverage/lcov-report/src/components/PackageCard/EditorsNote.tsx.html +0 -148
  146. package/coverage/lcov-report/src/components/PackageCard/Heading.tsx.html +0 -307
  147. package/coverage/lcov-report/src/components/PackageCard/Highlight.tsx.html +0 -139
  148. package/coverage/lcov-report/src/components/PackageCard/Languages.tsx.html +0 -109
  149. package/coverage/lcov-report/src/components/PackageCard/PackageCard.tsx.html +0 -178
  150. package/coverage/lcov-report/src/components/PackageCard/Tags.tsx.html +0 -163
  151. package/coverage/lcov-report/src/components/PackageCard/WideCard.tsx.html +0 -304
  152. package/coverage/lcov-report/src/components/PackageCard/constants.ts.html +0 -94
  153. package/coverage/lcov-report/src/components/PackageCard/index.html +0 -266
  154. package/coverage/lcov-report/src/components/PackageCard/index.ts.html +0 -94
  155. package/coverage/lcov-report/src/components/PackageCard/testIds.ts.html +0 -130
  156. package/coverage/lcov-report/src/components/PackageLanguages/PackageLanguages.tsx.html +0 -340
  157. package/coverage/lcov-report/src/components/PackageLanguages/index.html +0 -131
  158. package/coverage/lcov-report/src/components/PackageLanguages/index.ts.html +0 -88
  159. package/coverage/lcov-report/src/components/PackageList/PackageList.tsx.html +0 -214
  160. package/coverage/lcov-report/src/components/PackageList/WideCardList.tsx.html +0 -151
  161. package/coverage/lcov-report/src/components/PackageList/index.html +0 -146
  162. package/coverage/lcov-report/src/components/PackageList/index.ts.html +0 -88
  163. package/coverage/lcov-report/src/components/PackageTag/PackageTag.tsx.html +0 -190
  164. package/coverage/lcov-report/src/components/PackageTag/index.html +0 -131
  165. package/coverage/lcov-report/src/components/PackageTag/index.ts.html +0 -88
  166. package/coverage/lcov-report/src/components/Page/Page.tsx.html +0 -289
  167. package/coverage/lcov-report/src/components/Page/index.html +0 -131
  168. package/coverage/lcov-report/src/components/Page/index.ts.html +0 -88
  169. package/coverage/lcov-report/src/components/PageLoader/PageLoader.tsx.html +0 -109
  170. package/coverage/lcov-report/src/components/PageLoader/index.html +0 -131
  171. package/coverage/lcov-report/src/components/PageLoader/index.ts.html +0 -88
  172. package/coverage/lcov-report/src/components/Picture/Picture.tsx.html +0 -154
  173. package/coverage/lcov-report/src/components/Picture/index.html +0 -131
  174. package/coverage/lcov-report/src/components/Picture/index.ts.html +0 -88
  175. package/coverage/lcov-report/src/components/SearchBar/SearchBar.tsx.html +0 -706
  176. package/coverage/lcov-report/src/components/SearchBar/SearchOverlay.tsx.html +0 -184
  177. package/coverage/lcov-report/src/components/SearchBar/SearchSuggestions.tsx.html +0 -394
  178. package/coverage/lcov-report/src/components/SearchBar/index.html +0 -176
  179. package/coverage/lcov-report/src/components/SearchBar/index.ts.html +0 -97
  180. package/coverage/lcov-report/src/components/SearchBar/testIds.ts.html +0 -115
  181. package/coverage/lcov-report/src/components/SearchItem/SearchItem.tsx.html +0 -217
  182. package/coverage/lcov-report/src/components/SearchItem/index.html +0 -131
  183. package/coverage/lcov-report/src/components/SearchItem/index.ts.html +0 -88
  184. package/coverage/lcov-report/src/components/SearchModal/SearchModal.tsx.html +0 -286
  185. package/coverage/lcov-report/src/components/SearchModal/index.html +0 -146
  186. package/coverage/lcov-report/src/components/SearchModal/index.ts.html +0 -88
  187. package/coverage/lcov-report/src/components/SearchModal/testIds.ts.html +0 -100
  188. package/coverage/lcov-report/src/components/Time/Time.tsx.html +0 -151
  189. package/coverage/lcov-report/src/components/Time/index.html +0 -131
  190. package/coverage/lcov-report/src/components/Time/index.ts.html +0 -88
  191. package/coverage/lcov-report/src/constants/constructs.ts.html +0 -163
  192. package/coverage/lcov-report/src/constants/dates.ts.html +0 -94
  193. package/coverage/lcov-report/src/constants/index.html +0 -206
  194. package/coverage/lcov-report/src/constants/keywords.ts.html +0 -124
  195. package/coverage/lcov-report/src/constants/languages.ts.html +0 -319
  196. package/coverage/lcov-report/src/constants/links.ts.html +0 -310
  197. package/coverage/lcov-report/src/constants/pageInfo.ts.html +0 -205
  198. package/coverage/lcov-report/src/constants/url.ts.html +0 -193
  199. package/coverage/lcov-report/src/contexts/Analytics/Analytics.tsx.html +0 -367
  200. package/coverage/lcov-report/src/contexts/Analytics/index.html +0 -176
  201. package/coverage/lcov-report/src/contexts/Analytics/index.ts.html +0 -97
  202. package/coverage/lcov-report/src/contexts/Analytics/types.ts.html +0 -181
  203. package/coverage/lcov-report/src/contexts/Analytics/usePageView.ts.html +0 -190
  204. package/coverage/lcov-report/src/contexts/Analytics/util.ts.html +0 -121
  205. package/coverage/lcov-report/src/contexts/Config/Config.tsx.html +0 -199
  206. package/coverage/lcov-report/src/contexts/Config/index.html +0 -131
  207. package/coverage/lcov-report/src/contexts/Config/index.ts.html +0 -88
  208. package/coverage/lcov-report/src/contexts/ExternalLinkWarning/ExternalLinkWarning.tsx.html +0 -313
  209. package/coverage/lcov-report/src/contexts/ExternalLinkWarning/ExternalLinkWarningModal.tsx.html +0 -445
  210. package/coverage/lcov-report/src/contexts/ExternalLinkWarning/constants.ts.html +0 -127
  211. package/coverage/lcov-report/src/contexts/ExternalLinkWarning/index.html +0 -161
  212. package/coverage/lcov-report/src/contexts/ExternalLinkWarning/index.ts.html +0 -88
  213. package/coverage/lcov-report/src/contexts/Search/Search.tsx.html +0 -181
  214. package/coverage/lcov-report/src/contexts/Search/index.html +0 -131
  215. package/coverage/lcov-report/src/contexts/Search/index.ts.html +0 -88
  216. package/coverage/lcov-report/src/contexts/Shortbread/Shortbread.tsx.html +0 -229
  217. package/coverage/lcov-report/src/contexts/Shortbread/index.html +0 -131
  218. package/coverage/lcov-report/src/contexts/Shortbread/index.ts.html +0 -88
  219. package/coverage/lcov-report/src/contexts/Theme.tsx.html +0 -148
  220. package/coverage/lcov-report/src/contexts/index.html +0 -116
  221. package/coverage/lcov-report/src/hooks/useCatalog/index.html +0 -131
  222. package/coverage/lcov-report/src/hooks/useCatalog/index.ts.html +0 -88
  223. package/coverage/lcov-report/src/hooks/useCatalog/useCatalog.ts.html +0 -127
  224. package/coverage/lcov-report/src/hooks/useCatalogResults/index.html +0 -131
  225. package/coverage/lcov-report/src/hooks/useCatalogResults/index.ts.html +0 -88
  226. package/coverage/lcov-report/src/hooks/useCatalogResults/useCatalogResults.ts.html +0 -277
  227. package/coverage/lcov-report/src/hooks/useCatalogSearch/index.html +0 -131
  228. package/coverage/lcov-report/src/hooks/useCatalogSearch/index.ts.html +0 -88
  229. package/coverage/lcov-report/src/hooks/useCatalogSearch/useCatalogSearch.ts.html +0 -673
  230. package/coverage/lcov-report/src/hooks/useConfigValue/index.html +0 -131
  231. package/coverage/lcov-report/src/hooks/useConfigValue/index.ts.html +0 -88
  232. package/coverage/lcov-report/src/hooks/useConfigValue/useConfigValue.ts.html +0 -106
  233. package/coverage/lcov-report/src/hooks/useDebounce/index.html +0 -131
  234. package/coverage/lcov-report/src/hooks/useDebounce/index.ts.html +0 -88
  235. package/coverage/lcov-report/src/hooks/useDebounce/useDebounce.ts.html +0 -172
  236. package/coverage/lcov-report/src/hooks/useHistoryState/index.html +0 -131
  237. package/coverage/lcov-report/src/hooks/useHistoryState/index.ts.html +0 -88
  238. package/coverage/lcov-report/src/hooks/useHistoryState/useHistoryState.ts.html +0 -157
  239. package/coverage/lcov-report/src/hooks/useLanguage/index.html +0 -131
  240. package/coverage/lcov-report/src/hooks/useLanguage/index.ts.html +0 -88
  241. package/coverage/lcov-report/src/hooks/useLanguage/useLanguage.ts.html +0 -352
  242. package/coverage/lcov-report/src/hooks/usePagination/index.html +0 -131
  243. package/coverage/lcov-report/src/hooks/usePagination/index.ts.html +0 -88
  244. package/coverage/lcov-report/src/hooks/usePagination/usePagination.ts.html +0 -190
  245. package/coverage/lcov-report/src/hooks/useQueryParams/index.html +0 -131
  246. package/coverage/lcov-report/src/hooks/useQueryParams/index.ts.html +0 -88
  247. package/coverage/lcov-report/src/hooks/useQueryParams/useQueryParams.ts.html +0 -109
  248. package/coverage/lcov-report/src/hooks/useSearch/index.html +0 -131
  249. package/coverage/lcov-report/src/hooks/useSearch/index.ts.html +0 -88
  250. package/coverage/lcov-report/src/hooks/useSearch/useSearch.ts.html +0 -196
  251. package/coverage/lcov-report/src/hooks/useStats/index.html +0 -131
  252. package/coverage/lcov-report/src/hooks/useStats/index.ts.html +0 -88
  253. package/coverage/lcov-report/src/hooks/useStats/useStats.ts.html +0 -112
  254. package/coverage/lcov-report/src/hooks/useVersions/index.html +0 -131
  255. package/coverage/lcov-report/src/hooks/useVersions/index.ts.html +0 -88
  256. package/coverage/lcov-report/src/hooks/useVersions/useVersions.ts.html +0 -112
  257. package/coverage/lcov-report/src/icons/AWSIcon.tsx.html +0 -295
  258. package/coverage/lcov-report/src/icons/DatadogIcon.tsx.html +0 -412
  259. package/coverage/lcov-report/src/icons/DotNetIcon.tsx.html +0 -148
  260. package/coverage/lcov-report/src/icons/DukeIcon.tsx.html +0 -214
  261. package/coverage/lcov-report/src/icons/GithubIcon.tsx.html +0 -133
  262. package/coverage/lcov-report/src/icons/GoIcon.tsx.html +0 -139
  263. package/coverage/lcov-report/src/icons/MongoDBIcon.tsx.html +0 -139
  264. package/coverage/lcov-report/src/icons/PythonIcon.tsx.html +0 -244
  265. package/coverage/lcov-report/src/icons/TSIcon.tsx.html +0 -142
  266. package/coverage/lcov-report/src/icons/index.html +0 -236
  267. package/coverage/lcov-report/src/index.html +0 -191
  268. package/coverage/lcov-report/src/index.tsx.html +0 -250
  269. package/coverage/lcov-report/src/lib/shortbread/getLocalStoreWriter.ts.html +0 -148
  270. package/coverage/lcov-report/src/lib/shortbread/index.html +0 -161
  271. package/coverage/lcov-report/src/lib/shortbread/index.ts.html +0 -88
  272. package/coverage/lcov-report/src/lib/shortbread/shortbread.ts.html +0 -343
  273. package/coverage/lcov-report/src/lib/shortbread/source.js.html +0 -91
  274. package/coverage/lcov-report/src/no-op-sw.js.html +0 -109
  275. package/coverage/lcov-report/src/register-service-worker.ts.html +0 -520
  276. package/coverage/lcov-report/src/reportWebVitals.ts.html +0 -133
  277. package/coverage/lcov-report/src/service-worker.ts.html +0 -493
  278. package/coverage/lcov-report/src/theme/components/Checkbox.ts.html +0 -412
  279. package/coverage/lcov-report/src/theme/components/Code.ts.html +0 -136
  280. package/coverage/lcov-report/src/theme/components/Divider.ts.html +0 -103
  281. package/coverage/lcov-report/src/theme/components/Radio.ts.html +0 -289
  282. package/coverage/lcov-report/src/theme/components/Tabs.ts.html +0 -238
  283. package/coverage/lcov-report/src/theme/components/Tag.ts.html +0 -262
  284. package/coverage/lcov-report/src/theme/components/index.html +0 -206
  285. package/coverage/lcov-report/src/theme/components/index.ts.html +0 -157
  286. package/coverage/lcov-report/src/theme/foundations/borders.ts.html +0 -94
  287. package/coverage/lcov-report/src/theme/foundations/colors.ts.html +0 -196
  288. package/coverage/lcov-report/src/theme/foundations/index.html +0 -191
  289. package/coverage/lcov-report/src/theme/foundations/index.ts.html +0 -124
  290. package/coverage/lcov-report/src/theme/foundations/radius.ts.html +0 -94
  291. package/coverage/lcov-report/src/theme/foundations/shadows.ts.html +0 -94
  292. package/coverage/lcov-report/src/theme/foundations/sizes.ts.html +0 -106
  293. package/coverage/lcov-report/src/theme/index.html +0 -116
  294. package/coverage/lcov-report/src/theme/index.ts.html +0 -142
  295. package/coverage/lcov-report/src/types/config.ts.html +0 -142
  296. package/coverage/lcov-report/src/types/index.html +0 -116
  297. package/coverage/lcov-report/src/util/createTestIds.ts.html +0 -133
  298. package/coverage/lcov-report/src/util/css.ts.html +0 -154
  299. package/coverage/lcov-report/src/util/index.html +0 -176
  300. package/coverage/lcov-report/src/util/package.ts.html +0 -328
  301. package/coverage/lcov-report/src/util/sanitize-anchor.ts.html +0 -103
  302. package/coverage/lcov-report/src/util/url.ts.html +0 -439
  303. package/coverage/lcov-report/src/views/Contribute/Contribute.tsx.html +0 -1012
  304. package/coverage/lcov-report/src/views/Contribute/index.html +0 -131
  305. package/coverage/lcov-report/src/views/Contribute/index.ts.html +0 -88
  306. package/coverage/lcov-report/src/views/FAQ/FAQ.tsx.html +0 -1048
  307. package/coverage/lcov-report/src/views/FAQ/index.html +0 -131
  308. package/coverage/lcov-report/src/views/FAQ/index.ts.html +0 -88
  309. package/coverage/lcov-report/src/views/Home/CDKTypeTabs.tsx.html +0 -619
  310. package/coverage/lcov-report/src/views/Home/Categories.tsx.html +0 -376
  311. package/coverage/lcov-report/src/views/Home/Featured.tsx.html +0 -304
  312. package/coverage/lcov-report/src/views/Home/GradientContainer.tsx.html +0 -160
  313. package/coverage/lcov-report/src/views/Home/Hero.tsx.html +0 -217
  314. package/coverage/lcov-report/src/views/Home/Home.tsx.html +0 -223
  315. package/coverage/lcov-report/src/views/Home/Info.tsx.html +0 -631
  316. package/coverage/lcov-report/src/views/Home/InfoSection.tsx.html +0 -202
  317. package/coverage/lcov-report/src/views/Home/PackageGrid.tsx.html +0 -166
  318. package/coverage/lcov-report/src/views/Home/constants.ts.html +0 -163
  319. package/coverage/lcov-report/src/views/Home/index.html +0 -296
  320. package/coverage/lcov-report/src/views/Home/index.ts.html +0 -88
  321. package/coverage/lcov-report/src/views/Home/testIds.ts.html +0 -172
  322. package/coverage/lcov-report/src/views/Home/useSection.ts.html +0 -247
  323. package/coverage/lcov-report/src/views/NotFound/NotFound.tsx.html +0 -226
  324. package/coverage/lcov-report/src/views/NotFound/index.html +0 -131
  325. package/coverage/lcov-report/src/views/NotFound/index.ts.html +0 -91
  326. package/coverage/lcov-report/src/views/Package/ChooseSubmodule/ChooseSubmodule.tsx.html +0 -430
  327. package/coverage/lcov-report/src/views/Package/ChooseSubmodule/SearchInput.tsx.html +0 -217
  328. package/coverage/lcov-report/src/views/Package/ChooseSubmodule/SearchModal.tsx.html +0 -397
  329. package/coverage/lcov-report/src/views/Package/ChooseSubmodule/index.html +0 -161
  330. package/coverage/lcov-report/src/views/Package/ChooseSubmodule/index.ts.html +0 -88
  331. package/coverage/lcov-report/src/views/Package/DependenciesList.tsx.html +0 -229
  332. package/coverage/lcov-report/src/views/Package/DocsError.tsx.html +0 -127
  333. package/coverage/lcov-report/src/views/Package/FeedbackLinks.tsx.html +0 -409
  334. package/coverage/lcov-report/src/views/Package/LanguageBar.tsx.html +0 -334
  335. package/coverage/lcov-report/src/views/Package/LanguageSelection.tsx.html +0 -217
  336. package/coverage/lcov-report/src/views/Package/NavDrawer.tsx.html +0 -310
  337. package/coverage/lcov-report/src/views/Package/Package.tsx.html +0 -118
  338. package/coverage/lcov-report/src/views/Package/PackageDocs.tsx.html +0 -478
  339. package/coverage/lcov-report/src/views/Package/PackageDocsError.tsx.html +0 -151
  340. package/coverage/lcov-report/src/views/Package/PackageDocsUnsupported.tsx.html +0 -133
  341. package/coverage/lcov-report/src/views/Package/PackageHeader/Details.tsx.html +0 -730
  342. package/coverage/lcov-report/src/views/Package/PackageHeader/HeaderContainer.tsx.html +0 -196
  343. package/coverage/lcov-report/src/views/Package/PackageHeader/Heading.tsx.html +0 -388
  344. package/coverage/lcov-report/src/views/Package/PackageHeader/Install.tsx.html +0 -448
  345. package/coverage/lcov-report/src/views/Package/PackageHeader/PackageHeader.tsx.html +0 -220
  346. package/coverage/lcov-report/src/views/Package/PackageHeader/SelectVersion.tsx.html +0 -340
  347. package/coverage/lcov-report/src/views/Package/PackageHeader/ToggleButton.tsx.html +0 -163
  348. package/coverage/lcov-report/src/views/Package/PackageHeader/index.html +0 -221
  349. package/coverage/lcov-report/src/views/Package/PackageHeader/index.ts.html +0 -88
  350. package/coverage/lcov-report/src/views/Package/PackageLayout.tsx.html +0 -325
  351. package/coverage/lcov-report/src/views/Package/PackageReadme.tsx.html +0 -157
  352. package/coverage/lcov-report/src/views/Package/PackageState.tsx.html +0 -589
  353. package/coverage/lcov-report/src/views/Package/PackageTypeDocs.tsx.html +0 -220
  354. package/coverage/lcov-report/src/views/Package/PrimaryDocNavigation.tsx.html +0 -244
  355. package/coverage/lcov-report/src/views/Package/SecondaryDocNavigation.tsx.html +0 -295
  356. package/coverage/lcov-report/src/views/Package/ShareInfo.tsx.html +0 -316
  357. package/coverage/lcov-report/src/views/Package/StickyNavContainer.tsx.html +0 -151
  358. package/coverage/lcov-report/src/views/Package/constants.ts.html +0 -217
  359. package/coverage/lcov-report/src/views/Package/index.html +0 -431
  360. package/coverage/lcov-report/src/views/Package/index.ts.html +0 -88
  361. package/coverage/lcov-report/src/views/Package/testIds.ts.html +0 -139
  362. package/coverage/lcov-report/src/views/Package/useIntersectingHeader/index.html +0 -146
  363. package/coverage/lcov-report/src/views/Package/useIntersectingHeader/index.ts.html +0 -91
  364. package/coverage/lcov-report/src/views/Package/useIntersectingHeader/useIntersectingHeader.ts.html +0 -424
  365. package/coverage/lcov-report/src/views/Package/useIntersectingHeader/util.ts.html +0 -148
  366. package/coverage/lcov-report/src/views/Package/useSectionItems/index.html +0 -146
  367. package/coverage/lcov-report/src/views/Package/useSectionItems/index.ts.html +0 -88
  368. package/coverage/lcov-report/src/views/Package/useSectionItems/useSectionItems.ts.html +0 -256
  369. package/coverage/lcov-report/src/views/Package/useSectionItems/util.ts.html +0 -463
  370. package/coverage/lcov-report/src/views/Package/util.ts.html +0 -820
  371. package/coverage/lcov-report/src/views/PackageLatest/PackageLatest.tsx.html +0 -214
  372. package/coverage/lcov-report/src/views/PackageLatest/index.html +0 -131
  373. package/coverage/lcov-report/src/views/PackageLatest/index.ts.html +0 -88
  374. package/coverage/lcov-report/src/views/Packages/Packages.tsx.html +0 -178
  375. package/coverage/lcov-report/src/views/Packages/index.html +0 -131
  376. package/coverage/lcov-report/src/views/Packages/index.ts.html +0 -88
  377. package/coverage/lcov-report/src/views/Random/Random.tsx.html +0 -181
  378. package/coverage/lcov-report/src/views/Random/index.html +0 -131
  379. package/coverage/lcov-report/src/views/Random/index.ts.html +0 -88
  380. package/coverage/lcov-report/src/views/Search/ArrowButton.tsx.html +0 -187
  381. package/coverage/lcov-report/src/views/Search/CDKFilter.tsx.html +0 -409
  382. package/coverage/lcov-report/src/views/Search/CheckboxFilter.tsx.html +0 -577
  383. package/coverage/lcov-report/src/views/Search/FilterHeading.tsx.html +0 -283
  384. package/coverage/lcov-report/src/views/Search/FilterPanel.tsx.html +0 -229
  385. package/coverage/lcov-report/src/views/Search/GoToPage.tsx.html +0 -295
  386. package/coverage/lcov-report/src/views/Search/KeywordsFilter.tsx.html +0 -247
  387. package/coverage/lcov-report/src/views/Search/LanguageFilter.tsx.html +0 -250
  388. package/coverage/lcov-report/src/views/Search/PageControls.tsx.html +0 -259
  389. package/coverage/lcov-report/src/views/Search/RadioFilter.tsx.html +0 -253
  390. package/coverage/lcov-report/src/views/Search/Search.tsx.html +0 -190
  391. package/coverage/lcov-report/src/views/Search/SearchBar.tsx.html +0 -172
  392. package/coverage/lcov-report/src/views/Search/SearchDetails.tsx.html +0 -301
  393. package/coverage/lcov-report/src/views/Search/SearchResults.tsx.html +0 -421
  394. package/coverage/lcov-report/src/views/Search/SortAndFilterDrawer.tsx.html +0 -268
  395. package/coverage/lcov-report/src/views/Search/SortFilter.tsx.html +0 -184
  396. package/coverage/lcov-report/src/views/Search/SortedBy.tsx.html +0 -289
  397. package/coverage/lcov-report/src/views/Search/TagFilter.tsx.html +0 -523
  398. package/coverage/lcov-report/src/views/Search/constants.ts.html +0 -163
  399. package/coverage/lcov-report/src/views/Search/index.html +0 -461
  400. package/coverage/lcov-report/src/views/Search/index.ts.html +0 -88
  401. package/coverage/lcov-report/src/views/Search/testIds.ts.html +0 -145
  402. package/coverage/lcov-report/src/views/Search/useSearchParam.ts.html +0 -313
  403. package/coverage/lcov-report/src/views/Search/useUpdateSearchParam.ts.html +0 -154
  404. package/coverage/lcov-report/src/views/Search/util.ts.html +0 -226
  405. package/coverage/lcov-report/src/views/SiteTerms/SiteTerms.tsx.html +0 -301
  406. package/coverage/lcov-report/src/views/SiteTerms/index.html +0 -131
  407. package/coverage/lcov-report/src/views/SiteTerms/index.ts.html +0 -88
  408. package/coverage/lcov.info +0 -8098
  409. /package/build/static/js/{487.d7ec3dbe.chunk.js.LICENSE.txt → 487.c94daaad.chunk.js.LICENSE.txt} +0 -0
  410. /package/build/static/js/{main.6b38d083.js.LICENSE.txt → main.9e6b2567.js.LICENSE.txt} +0 -0
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/static/css/main.efe592a7.css",
4
- "main.js": "/static/js/main.6b38d083.js",
4
+ "main.js": "/static/js/main.9e6b2567.js",
5
5
  "static/js/332.b740638d.chunk.js": "/static/js/332.b740638d.chunk.js",
6
6
  "static/js/959.abcce3a0.chunk.js": "/static/js/959.abcce3a0.chunk.js",
7
7
  "static/js/619.1a7deb33.chunk.js": "/static/js/619.1a7deb33.chunk.js",
8
8
  "static/js/375.6faf5557.chunk.js": "/static/js/375.6faf5557.chunk.js",
9
- "static/js/421.89f85fcb.chunk.js": "/static/js/421.89f85fcb.chunk.js",
9
+ "static/js/421.06d969b9.chunk.js": "/static/js/421.06d969b9.chunk.js",
10
10
  "static/js/323.87521e0e.chunk.js": "/static/js/323.87521e0e.chunk.js",
11
11
  "static/js/773.279948f6.chunk.js": "/static/js/773.279948f6.chunk.js",
12
12
  "static/js/857.8e026699.chunk.js": "/static/js/857.8e026699.chunk.js",
@@ -14,19 +14,19 @@
14
14
  "static/js/453.13ac0f49.chunk.js": "/static/js/453.13ac0f49.chunk.js",
15
15
  "static/js/591.6b31b86a.chunk.js": "/static/js/591.6b31b86a.chunk.js",
16
16
  "static/js/496.2a6b6f6f.chunk.js": "/static/js/496.2a6b6f6f.chunk.js",
17
- "static/js/487.d7ec3dbe.chunk.js": "/static/js/487.d7ec3dbe.chunk.js",
17
+ "static/js/487.c94daaad.chunk.js": "/static/js/487.c94daaad.chunk.js",
18
18
  "static/js/451.916d6ace.chunk.js": "/static/js/451.916d6ace.chunk.js",
19
19
  "static/js/516.87cad50a.chunk.js": "/static/js/516.87cad50a.chunk.js",
20
- "static/js/294.61480951.chunk.js": "/static/js/294.61480951.chunk.js",
20
+ "static/js/294.735eb9dd.chunk.js": "/static/js/294.735eb9dd.chunk.js",
21
21
  "service-worker.js": "/service-worker.js",
22
22
  "index.html": "/index.html",
23
23
  "main.efe592a7.css.map": "/static/css/main.efe592a7.css.map",
24
- "main.6b38d083.js.map": "/static/js/main.6b38d083.js.map",
24
+ "main.9e6b2567.js.map": "/static/js/main.9e6b2567.js.map",
25
25
  "332.b740638d.chunk.js.map": "/static/js/332.b740638d.chunk.js.map",
26
26
  "959.abcce3a0.chunk.js.map": "/static/js/959.abcce3a0.chunk.js.map",
27
27
  "619.1a7deb33.chunk.js.map": "/static/js/619.1a7deb33.chunk.js.map",
28
28
  "375.6faf5557.chunk.js.map": "/static/js/375.6faf5557.chunk.js.map",
29
- "421.89f85fcb.chunk.js.map": "/static/js/421.89f85fcb.chunk.js.map",
29
+ "421.06d969b9.chunk.js.map": "/static/js/421.06d969b9.chunk.js.map",
30
30
  "323.87521e0e.chunk.js.map": "/static/js/323.87521e0e.chunk.js.map",
31
31
  "773.279948f6.chunk.js.map": "/static/js/773.279948f6.chunk.js.map",
32
32
  "857.8e026699.chunk.js.map": "/static/js/857.8e026699.chunk.js.map",
@@ -34,13 +34,13 @@
34
34
  "453.13ac0f49.chunk.js.map": "/static/js/453.13ac0f49.chunk.js.map",
35
35
  "591.6b31b86a.chunk.js.map": "/static/js/591.6b31b86a.chunk.js.map",
36
36
  "496.2a6b6f6f.chunk.js.map": "/static/js/496.2a6b6f6f.chunk.js.map",
37
- "487.d7ec3dbe.chunk.js.map": "/static/js/487.d7ec3dbe.chunk.js.map",
37
+ "487.c94daaad.chunk.js.map": "/static/js/487.c94daaad.chunk.js.map",
38
38
  "451.916d6ace.chunk.js.map": "/static/js/451.916d6ace.chunk.js.map",
39
39
  "516.87cad50a.chunk.js.map": "/static/js/516.87cad50a.chunk.js.map",
40
- "294.61480951.chunk.js.map": "/static/js/294.61480951.chunk.js.map"
40
+ "294.735eb9dd.chunk.js.map": "/static/js/294.735eb9dd.chunk.js.map"
41
41
  },
42
42
  "entrypoints": [
43
43
  "static/css/main.efe592a7.css",
44
- "static/js/main.6b38d083.js"
44
+ "static/js/main.9e6b2567.js"
45
45
  ]
46
46
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.6b38d083.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><script src="/preload.js"></script><meta charset="utf-8"/><meta name="description" content="Construct Hub helps developers find open-source construct libraries for use with AWS CDK, CDK8s, CDKTF and other construct-based tools."/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#ffffff"><title>Construct Hub</title><script defer="defer" src="/static/js/main.9e6b2567.js"></script><link href="/static/css/main.efe592a7.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[294],{19608(e,t,a){a.d(t,{f:()=>i});var n=a(31206),r=a(4450),s=a(32892),o=a(70579);const i=e=>{let t=e.label,a=e.color,i=e.icon;const d=(0,n.dU)("none","brightness(1.75)");return(0,o.jsxs)(r.BJ,{align:"center",direction:"row",filter:d,spacing:2,children:[(0,o.jsx)(s._V,{alt:"".concat(t," icon"),src:i,w:4}),(0,o.jsx)(r.EY,{color:a,fontWeight:"bold",children:t})]})}},83689(e,t,a){a.d(t,{B:()=>o});var n=a(49292),r=a(68195),s=a(70579);const o=e=>{let t=e.children,a=e.language;const o=r.WX.has(a),i=r.I8[a],d=o?"Click to view documentation in ".concat(i):"Documentation support for ".concat(i," is coming soon!");return(0,s.jsx)(n.m,{hasArrow:!0,label:d,placement:"top-start",children:(0,s.jsx)("span",{children:t})})}},10178(e,t,a){a.d(t,{h:()=>D,F:()=>n});let n=function(e){return e.Wide="wide",e}({});var r=a(89379),s=a(65043),o=a(4450),i=a(49292),d=a(43222);const l=(0,a(81249).$)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]);var c=a(34176),m=a(55410),u=a(71154),h=a(60310),p=a(70579);const v=e=>{let t=e["data-testid"],a=e.tooltip,n=e.value;return(0,p.jsx)(i.m,{hasArrow:!0,isDisabled:!a,label:a,placement:"left",children:(0,p.jsx)(o.EY,{"data-testid":t,fontSize:"xs",zIndex:1,children:n})})},x=()=>{var e,t,a;const n=_(),r=n.author,s=n.metadata.date,o=n.name,i=(0,c.J)().data,x=null===i||void 0===i||null===(e=i.packages)||void 0===e||null===(t=e[o])||void 0===t||null===(a=t.downloads)||void 0===a?void 0:a.npm,g="string"===typeof r?r:r.name,f=new Date(s);return(0,p.jsxs)(p.Fragment,{children:[void 0!==x&&(0,p.jsx)(v,{"data-testid":l.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(x.toLocaleString()," weekly downloads")}),(0,p.jsx)(v,{"data-testid":l.published,value:(0,p.jsx)(h.g,{date:f,fontSize:"xs",formattedDate:(0,d.A)(f,{addSuffix:!0})})}),(0,p.jsx)(v,{"data-testid":l.author,value:(0,p.jsxs)(p.Fragment,{children:["By"," ",(0,p.jsx)(u.k,{color:"link",to:(0,m.iS)({query:g}),children:g})]})})]})};var g=a(5544),f=a(62582);const j=e=>{let t=e.comment;return(0,p.jsxs)(o.EY,{"data-testid":l.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[(0,p.jsxs)(o.EY,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})};var w=a(99103),b=a(4029),y=a(47415);const k=()=>{const e=(0,b.o)(),t=(0,g.A)(e,1)[0],a=_(),n=a.dataEvent,r=a.description,s=a.comment,i=a.constructFrameworks,d=a.name,c=a.version;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o.rI,{as:f.N_,"data-event":n?(0,w.eq)(n,"Package Card",d):void 0,to:(0,m.q$)({name:d,version:c,language:t}),children:(0,p.jsxs)(o.so,{align:"center",children:[(0,p.jsx)(y.Y,{constructFrameworks:i,mr:2,zIndex:1}),(0,p.jsx)(o.DZ,{as:"h3",color:"textPrimary","data-testid":l.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:d})]})}),s?(0,p.jsx)(j,{comment:s}):(0,p.jsx)(o.EY,{color:"textPrimary","data-testid":l.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:r||"No description available."})]})};var A=a(16195),S=a(19608);const z=()=>{var e,t;const a=(null!==(e=null===(t=_())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,n=void 0===a?[]:a,s=(0,A.um)(n),i=(0,g.A)(s,1)[0];return i?(0,p.jsx)(o.az,{fontSize:"xs",children:(0,p.jsx)(S.f,(0,r.A)({},i))}):null};var T=a(68195),L=a(83689);const C={sm:5,md:6,lg:8},B=e=>{let t=e.isRounded,a=void 0!==t&&t,n=e.languages,r=e.name,s=e.size,o=void 0===s?"md":s,i=e.version;const d=Object.keys(null!==n&&void 0!==n?n:{});return(0,p.jsx)(p.Fragment,{children:Object.entries(T.fN).sort((e,t)=>{let a=(0,g.A)(e,1)[0],n=(0,g.A)(t,1)[0];return T.Yj.indexOf(a)-T.Yj.indexOf(n)}).map(e=>{let t=(0,g.A)(e,2),n=t[0],s=t[1];const l=n,c=l===T.TM.TypeScript||d.includes(l),u=l===T.TM.TypeScript||T.WX.has(l);if(!c)return null;const h=s.name,v=s.icon,x=(0,p.jsx)(v,{"aria-label":"Supports ".concat(h),borderRadius:a?"50%":0,h:C[o],opacity:u?1:.2,w:C[o]});return(0,p.jsx)(L.B,{language:l,children:u?(0,p.jsx)(f.N_,{"aria-label":"View package docs for ".concat(l),to:(0,m.q$)({name:r,version:i,language:l}),children:x}):x},l)})})},E=()=>{const e=_();return(0,p.jsx)(B,(0,r.A)((0,r.A)({},e),{},{size:"sm"}))};var P=a(40483);const F=()=>{const e=_(),t=e.keywords,a=void 0===t?[]:t,n=e.metadata.packageTags,r=void 0===n?[]:n,s=(0,A.rh)({packageTags:r,keywords:a});return(0,p.jsx)(p.Fragment,{children:s.slice(0,10).map(e=>{let t=e.id,a=e.keyword,n=void 0===a?{}:a,r=n.label,s=n.color;return(0,p.jsx)(P.n,{value:t,variant:s,children:r},t)})})},I=()=>(0,p.jsx)(o.Qe,{_hover:{"> article":{bg:"hoverPrimary"}},children:(0,p.jsxs)(o.xA,{as:"article",bg:"bgSecondary",border:"base",borderRadius:"sm",boxShadow:"base",color:"textPrimary","data-testid":l.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[(0,p.jsxs)(o.so,{direction:"column",justify:"space-between",overflow:"hidden",p:5,sx:{gap:"0.5rem"},children:[(0,p.jsx)(o.BJ,{spacing:3,children:(0,p.jsx)(k,{})}),(0,p.jsx)(o.so,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,p.jsx)(F,{})})]}),(0,p.jsxs)(o.so,{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:[(0,p.jsxs)(o.BJ,{spacing:1,children:[(0,p.jsx)(z,{}),(0,p.jsx)(o.BJ,{spacing:1,children:(0,p.jsx)(x,{})})]}),(0,p.jsx)(o.BJ,{"data-testid":l.languages,direction:"row",spacing:2,children:(0,p.jsx)(E,{})})]})]})}),W=(0,s.createContext)(null),_=()=>(0,s.useContext)(W),D=e=>{let t=e["data-event"],a=e.pkg,s=e.variant,o=void 0===s?n.Wide:s;return(0,p.jsx)(W.Provider,{value:(0,r.A)((0,r.A)({},a),{},{dataEvent:t}),children:o===n.Wide&&(0,p.jsx)(I,{})})}},40483(e,t,a){a.d(t,{n:()=>c});var n=a(89379),r=a(80045),s=a(19154),o=a(55410),i=a(71154),d=a(70579);const l=["children","value","label","zIndex"],c=e=>{let t=e.children,a=e.value,c=e.label,m=void 0===c?a:c,u=e.zIndex,h=(0,r.A)(e,l);return(0,d.jsx)(i.k,{"aria-label":"Tag: ".concat(m),to:(0,o.iS)({keywords:[a]}),zIndex:u,children:(0,d.jsx)(s.vw,(0,n.A)((0,n.A)({_hover:{textDecoration:"underline"}},h),{},{children:(0,d.jsx)(s.d1,{children:t})}))})}},50425(e,t,a){a.d(t,{Y:()=>l});var n=a(65043),r=a(41591);const s={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"}}};var o=a(99103),i=a(49182),d=a(70579);["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" ");const l=e=>{let t=e.children,a=e.meta,l=e.pageName;const c=(0,o.Or)(s[l]);(0,n.useEffect)(()=>{c()},[c]);const m=(0,i.R)("feeds")||[],u=a.suffix,h=void 0===u||u,p=a.title,v=a.description,x=h?"".concat(p," - Construct Hub"):p;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(r.m,{children:[!1,(0,d.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,d.jsx)("meta",{charSet:"utf-8"}),m.map(e=>{let t=e.url,a=e.mimeType;return(0,d.jsx)("link",{href:t,rel:"alternate",type:a},t)}),(0,d.jsx)("title",{children:x}),(0,d.jsx)("meta",{content:x,property:"og:title"}),(0,d.jsx)("meta",{content:x,name:"twitter:title"}),(0,d.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,d.jsx)("meta",{content:v,name:"description"}),(0,d.jsx)("meta",{content:v,property:"og:description"}),(0,d.jsx)("meta",{content:v,name:"twitter:description"})]}),t]})}},60310(e,t,a){a.d(t,{g:()=>c});var n=a(89379),r=a(80045),s=a(21038),o=a(4450),i=a(7842),d=a(70579);const l=["date","format","formattedDate"],c=(0,s.Rf)((e,t)=>{let a=e.date,s=e.format,c=e.formattedDate,m=(0,r.A)(e,l);return(0,d.jsx)(o.az,(0,n.A)((0,n.A)({as:"time",dateTime:a.toISOString(),ref:t},m),{},{children:null!==c&&void 0!==c?c:(0,i.A)(a,null!==s&&void 0!==s?s:"")}))});c.displayName="Time"},49182(e,t,a){a.d(t,{R:()=>r});var n=a(75714);const r=e=>{const t=(0,n.U)().data;return(null!==t&&void 0!==t?t:{})[e]}},4029(e,t,a){a.d(t,{o:()=>u});var n=a(5544),r=a(65043),s=a(91688),o=a(68195),i=a(32337),d=a(19507);const l=o.TM.TypeScript,c="preferred-language",m=e=>null!=e&&o.WX.has(e),u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.updateUrl,a=e.updateSaved,o=(0,s.zy)(),u=o.pathname,h=o.hash,p=(0,s.W6)().replace,v=(0,d.s)(),x=v.get(i.uB.LANGUAGE),g=(0,r.useState)(()=>(e=>{if(m(e))return e;try{var t;const e=null!==(t=localStorage.getItem(c))&&void 0!==t?t:"";if(m(e))return e}catch(a){}return l})(x)),f=(0,n.A)(g,2),j=f[0],w=f[1];(0,r.useEffect)(()=>{m(x)&&x!==j&&w(x)},[x]),(0,r.useEffect)(()=>{x!==j&&t&&(v.set(i.uB.LANGUAGE,j),p({pathname:u,hash:h,search:v.toString()}))},[j,t]);const b=(0,r.useCallback)(e=>{if(w(e),a)try{localStorage.setItem(c,e)}catch(t){}},[a]);return(0,r.useMemo)(()=>[j,b],[j,b])}},19507(e,t,a){a.d(t,{s:()=>s});var n=a(65043),r=a(91688);const s=()=>{const e=(0,r.zy)().search;return(0,n.useMemo)(()=>new URLSearchParams(e),[e])}},16195(e,t,a){a.d(t,{rh:()=>d,um:()=>s});var n=a(89379),r=a(6546);const s=e=>!e||e.length<1?[]:e.reduce((e,t)=>t.highlight?[...e,t.highlight]:e,[]),o=e=>(null!==e&&void 0!==e?e:[]).filter(e=>{var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)}).map(e=>{var t;return(0,n.A)((0,n.A)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}),i=e=>!e||e.length<1?[]:e.filter(e=>Boolean(e)&&!r._.has(e)).map(e=>({id:e,keyword:{label:e}})),d=e=>{let t=e.packageTags,a=e.keywords;const n=new Array,r=new Set;for(const s of[...o(t),...i(a)]){const e=s.keyword.label.toLowerCase();r.has(e)||(n.push(s),r.add(e))}return n}}}]);
2
- //# sourceMappingURL=294.61480951.chunk.js.map
1
+ "use strict";(self.webpackChunkconstruct_hub_webapp=self.webpackChunkconstruct_hub_webapp||[]).push([[294],{19608(e,t,a){a.d(t,{f:()=>i});var n=a(31206),r=a(4450),s=a(32892),o=a(70579);const i=e=>{let t=e.label,a=e.color,i=e.icon;const d=(0,n.dU)("none","brightness(1.75)");return(0,o.jsxs)(r.BJ,{align:"center",direction:"row",filter:d,spacing:2,children:[(0,o.jsx)(s._V,{alt:"".concat(t," icon"),src:i,w:4}),(0,o.jsx)(r.EY,{color:a,fontWeight:"bold",children:t})]})}},83689(e,t,a){a.d(t,{B:()=>o});var n=a(49292),r=a(68195),s=a(70579);const o=e=>{let t=e.children,a=e.language;const o=r.WX.has(a),i=r.I8[a],d=o?"Click to view documentation in ".concat(i):"Documentation support for ".concat(i," is coming soon!");return(0,s.jsx)(n.m,{hasArrow:!0,label:d,placement:"top-start",children:(0,s.jsx)("span",{children:t})})}},10178(e,t,a){a.d(t,{h:()=>D,F:()=>n});let n=function(e){return e.Wide="wide",e}({});var r=a(89379),s=a(65043),o=a(4450),i=a(49292),d=a(43222);const l=(0,a(81249).$)("packageCard",["author","description","downloads","languages","published","title","version","comment","wideContainer"]);var c=a(34176),m=a(55410),u=a(71154),h=a(60310),p=a(70579);const v=e=>{let t=e["data-testid"],a=e.tooltip,n=e.value;return(0,p.jsx)(i.m,{hasArrow:!0,isDisabled:!a,label:a,placement:"left",children:(0,p.jsx)(o.EY,{"data-testid":t,fontSize:"xs",zIndex:1,children:n})})},x=()=>{var e,t,a;const n=_(),r=n.author,s=n.metadata.date,o=n.name,i=(0,c.J)().data,x=null===i||void 0===i||null===(e=i.packages)||void 0===e||null===(t=e[o])||void 0===t||null===(a=t.downloads)||void 0===a?void 0:a.npm,g="string"===typeof r?r:r.name,f=new Date(s);return(0,p.jsxs)(p.Fragment,{children:[void 0!==x&&(0,p.jsx)(v,{"data-testid":l.downloads,tooltip:"Download numbers are periodically sourced from the npm registry",value:"".concat(x.toLocaleString()," weekly downloads")}),(0,p.jsx)(v,{"data-testid":l.published,value:(0,p.jsx)(h.g,{date:f,fontSize:"xs",formattedDate:(0,d.A)(f,{addSuffix:!0})})}),(0,p.jsx)(v,{"data-testid":l.author,value:(0,p.jsxs)(p.Fragment,{children:["By"," ",(0,p.jsx)(u.k,{color:"link",to:(0,m.iS)({query:g}),children:g})]})})]})};var g=a(5544),f=a(62582);const j=e=>{let t=e.comment;return(0,p.jsxs)(o.EY,{"data-testid":l.comment,fontSize:"md",lineHeight:"tall",noOfLines:4,children:[(0,p.jsxs)(o.EY,{as:"span",color:"blue.500",fontWeight:"bold",children:["Editor's note:"," "]}),t]})};var w=a(99103),b=a(4029),y=a(47415);const k=()=>{const e=(0,b.o)(),t=(0,g.A)(e,1)[0],a=_(),n=a.dataEvent,r=a.description,s=a.comment,i=a.constructFrameworks,d=a.name,c=a.version;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(o.rI,{as:f.N_,"data-event":n?(0,w.eq)(n,"Package Card",d):void 0,to:(0,m.q$)({name:d,version:c,language:t}),children:(0,p.jsxs)(o.so,{align:"center",children:[(0,p.jsx)(y.Y,{constructFrameworks:i,mr:2,zIndex:1}),(0,p.jsx)(o.DZ,{as:"h3",color:"textPrimary","data-testid":l.title,fontSize:"md",fontWeight:"bold",wordBreak:"normal",children:d})]})}),s?(0,p.jsx)(j,{comment:s}):(0,p.jsx)(o.EY,{color:"textPrimary","data-testid":l.description,fontSize:"md",lineHeight:"tall",noOfLines:4,children:r||"No description available."})]})};var A=a(16195),S=a(19608);const z=()=>{var e,t;const a=(null!==(e=null===(t=_())||void 0===t?void 0:t.metadata)&&void 0!==e?e:{}).packageTags,n=void 0===a?[]:a,s=(0,A.um)(n),i=(0,g.A)(s,1)[0];return i?(0,p.jsx)(o.az,{fontSize:"xs",children:(0,p.jsx)(S.f,(0,r.A)({},i))}):null};var T=a(68195),L=a(83689);const C={sm:5,md:6,lg:8},B=e=>{let t=e.isRounded,a=void 0!==t&&t,n=e.languages,r=e.name,s=e.size,o=void 0===s?"md":s,i=e.version;const d=Object.keys(null!==n&&void 0!==n?n:{});return(0,p.jsx)(p.Fragment,{children:Object.entries(T.fN).sort((e,t)=>{let a=(0,g.A)(e,1)[0],n=(0,g.A)(t,1)[0];return T.Yj.indexOf(a)-T.Yj.indexOf(n)}).map(e=>{let t=(0,g.A)(e,2),n=t[0],s=t[1];const l=n,c=l===T.TM.TypeScript||d.includes(l),u=l===T.TM.TypeScript||T.WX.has(l);if(!c)return null;const h=s.name,v=s.icon,x=(0,p.jsx)(v,{"aria-label":"Supports ".concat(h),borderRadius:a?"50%":0,h:C[o],opacity:u?1:.2,w:C[o]});return(0,p.jsx)(L.B,{language:l,children:u?(0,p.jsx)(f.N_,{"aria-label":"View package docs for ".concat(l),to:(0,m.q$)({name:r,version:i,language:l}),children:x}):x},l)})})},E=()=>{const e=_();return(0,p.jsx)(B,(0,r.A)((0,r.A)({},e),{},{size:"sm"}))};var P=a(40483);const F=()=>{const e=_(),t=e.keywords,a=void 0===t?[]:t,n=e.metadata.packageTags,r=void 0===n?[]:n,s=(0,A.rh)({packageTags:r,keywords:a});return(0,p.jsx)(p.Fragment,{children:s.slice(0,10).map(e=>{let t=e.id,a=e.keyword,n=void 0===a?{}:a,r=n.label,s=n.color;return(0,p.jsx)(P.n,{value:t,variant:s,children:r},t)})})},I=()=>(0,p.jsx)(o.Qe,{_hover:{"> article":{bg:"hoverPrimary"}},children:(0,p.jsxs)(o.xA,{as:"article",bg:"bgSecondary",border:"base",borderRadius:"sm",boxShadow:"base",color:"textPrimary","data-testid":l.wideContainer,h:"full",minH:"12.5rem",templateColumns:{base:"1fr",lg:"1fr 14rem"},w:"full",children:[(0,p.jsxs)(o.so,{direction:"column",justify:"space-between",overflow:"hidden",p:5,sx:{gap:"0.5rem"},children:[(0,p.jsx)(o.BJ,{spacing:3,children:(0,p.jsx)(k,{})}),(0,p.jsx)(o.so,{align:"center",sx:{gap:"0.5rem"},wrap:"wrap",children:(0,p.jsx)(F,{})})]}),(0,p.jsxs)(o.so,{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:[(0,p.jsxs)(o.BJ,{spacing:1,children:[(0,p.jsx)(z,{}),(0,p.jsx)(o.BJ,{spacing:1,children:(0,p.jsx)(x,{})})]}),(0,p.jsx)(o.BJ,{"data-testid":l.languages,direction:"row",spacing:2,children:(0,p.jsx)(E,{})})]})]})}),W=(0,s.createContext)(null),_=()=>(0,s.useContext)(W),D=e=>{let t=e["data-event"],a=e.pkg,s=e.variant,o=void 0===s?n.Wide:s;return(0,p.jsx)(W.Provider,{value:(0,r.A)((0,r.A)({},a),{},{dataEvent:t}),children:o===n.Wide&&(0,p.jsx)(I,{})})}},40483(e,t,a){a.d(t,{n:()=>c});var n=a(89379),r=a(80045),s=a(19154),o=a(55410),i=a(71154),d=a(70579);const l=["children","value","label","zIndex"],c=e=>{let t=e.children,a=e.value,c=e.label,m=void 0===c?a:c,u=e.zIndex,h=(0,r.A)(e,l);return(0,d.jsx)(i.k,{"aria-label":"Tag: ".concat(m),to:(0,o.iS)({keywords:[a]}),zIndex:u,children:(0,d.jsx)(s.vw,(0,n.A)((0,n.A)({_hover:{textDecoration:"underline"}},h),{},{children:(0,d.jsx)(s.d1,{children:t})}))})}},50425(e,t,a){a.d(t,{Y:()=>l});var n=a(65043),r=a(41591);const s={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"}}};var o=a(99103),i=a(49182),d=a(70579);["default-src 'self' 'unsafe-inline' http://*.awsstatic.com;","connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","frame-src http://aws.demdex.net http://dpm.demdex.net;","img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;","object-src 'none';","style-src 'self' 'unsafe-inline';"].join(" ");const l=e=>{let t=e.children,a=e.meta,l=e.pageName;const c=(0,o.Or)(s[l]);(0,n.useEffect)(()=>{c()},[c]);const m=(0,i.R)("feeds")||[],u=a.suffix,h=void 0===u||u,p=a.title,v=a.description,x=h?"".concat(p," - Construct Hub"):p;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(r.m,{children:[!1,(0,d.jsx)("meta",{content:"width=device-width, initial-scale=1",name:"viewport"}),(0,d.jsx)("meta",{charSet:"utf-8"}),m.map(e=>{let t=e.url,a=e.mimeType;return(0,d.jsx)("link",{href:t,rel:"alternate",type:a},t)}),(0,d.jsx)("title",{children:x}),(0,d.jsx)("meta",{content:x,property:"og:title"}),(0,d.jsx)("meta",{content:x,name:"twitter:title"}),(0,d.jsx)("meta",{content:"summary",name:"twitter:card"}),(0,d.jsx)("meta",{content:v,name:"description"}),(0,d.jsx)("meta",{content:v,property:"og:description"}),(0,d.jsx)("meta",{content:v,name:"twitter:description"})]}),t]})}},60310(e,t,a){a.d(t,{g:()=>c});var n=a(89379),r=a(80045),s=a(21038),o=a(4450),i=a(7842),d=a(70579);const l=["date","format","formattedDate"],c=(0,s.Rf)((e,t)=>{let a=e.date,s=e.format,c=e.formattedDate,m=(0,r.A)(e,l);return(0,d.jsx)(o.az,(0,n.A)((0,n.A)({as:"time",dateTime:a.toISOString(),ref:t},m),{},{children:null!==c&&void 0!==c?c:(0,i.A)(a,null!==s&&void 0!==s?s:"")}))});c.displayName="Time"},49182(e,t,a){a.d(t,{R:()=>r});var n=a(75714);const r=e=>{const t=(0,n.U)().data;return(null!==t&&void 0!==t?t:{})[e]}},4029(e,t,a){a.d(t,{o:()=>u});var n=a(5544),r=a(65043),s=a(91688),o=a(68195),i=a(32337),d=a(19507);const l=o.TM.TypeScript,c="preferred-language",m=e=>null!=e&&o.WX.has(e),u=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e.updateUrl,a=e.updateSaved,o=(0,s.zy)(),u=o.pathname,h=o.hash,p=(0,s.W6)().replace,v=(0,d.s)(),x=v.get(i.uB.LANGUAGE),g=(0,r.useState)(()=>(e=>{if(m(e))return e;try{var t;const e=null!==(t=localStorage.getItem(c))&&void 0!==t?t:"";if(m(e))return e}catch(a){}return l})(x)),f=(0,n.A)(g,2),j=f[0],w=f[1];(0,r.useEffect)(()=>{m(x)&&x!==j&&w(x)},[x]),(0,r.useEffect)(()=>{x!==j&&t&&(v.set(i.uB.LANGUAGE,j),p({pathname:u,hash:h,search:v.toString()}))},[j,t]);const b=(0,r.useCallback)(e=>{if(w(e),a)try{localStorage.setItem(c,e)}catch(t){}},[a]);return(0,r.useMemo)(()=>[j,b],[j,b])}},19507(e,t,a){a.d(t,{s:()=>s});var n=a(65043),r=a(91688);const s=()=>{const e=(0,r.zy)().search;return(0,n.useMemo)(()=>new URLSearchParams(e),[e])}},16195(e,t,a){var n=a(89379),r=a(6546);const s=e=>(null!==e&&void 0!==e?e:[]).filter(e=>{var t;return Boolean(null===(t=e.keyword)||void 0===t?void 0:t.label)}).map(e=>{var t;return(0,n.A)((0,n.A)({},e),{},{id:null===(t=e.keyword)||void 0===t?void 0:t.label})}),o=e=>!e||e.length<1?[]:e.filter(e=>Boolean(e)&&!r._.has(e)).map(e=>({id:e,keyword:{label:e}}));a.d(t,["rh",0,e=>{let t=e.packageTags,a=e.keywords;const n=new Array,r=new Set;for(const i of[...s(t),...o(a)]){const e=i.keyword.label.toLowerCase();r.has(e)||(n.push(i),r.add(e))}return n},"um",0,e=>!e||e.length<1?[]:e.reduce((e,t)=>t.highlight?[...e,t.highlight]:e,[])])}}]);
2
+ //# sourceMappingURL=294.735eb9dd.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/294.a93cb11d.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.tsx","components/PackageCard/constants.ts","components/PackageCard/testIds.ts","components/PackageCard/Details.tsx","components/PackageCard/EditorsNote.tsx","components/PackageCard/Heading.tsx","components/PackageCard/Highlight.tsx","components/PackageLanguages/PackageLanguages.tsx","components/PackageCard/Languages.tsx","components/PackageCard/Tags.tsx","components/PackageCard/WideCard.tsx","components/PackageCard/PackageCard.tsx","components/PackageTag/PackageTag.tsx","constants/pageInfo.ts","components/Page/Page.tsx","components/Time/Time.tsx","hooks/useConfigValue/useConfigValue.ts","hooks/useLanguage/useLanguage.ts","hooks/useQueryParams/useQueryParams.ts","util/package.ts"],"sourcesContent":["import { Stack, Image, Text, useColorModeValue } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\ninterface HighlightProps {\n label: string;\n color?: string;\n icon?: string;\n}\n\nexport const Highlight: FunctionComponent<HighlightProps> = ({\n label,\n color,\n icon,\n}: HighlightProps) => {\n const brightness = useColorModeValue(\"none\", \"brightness(1.75)\");\n return (\n <Stack align=\"center\" direction=\"row\" filter={brightness} spacing={2}>\n <Image alt={`${label} icon`} src={icon} w={4} />\n <Text color={color} fontWeight=\"bold\">\n {label}\n </Text>\n </Stack>\n );\n};\n","import { Tooltip } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport {\n Language,\n LANGUAGE_NAME_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\n\nexport interface LanguageSupportTooltipProps {\n language: Language;\n}\n\nexport const LanguageSupportTooltip: FunctionComponent<\n LanguageSupportTooltipProps\n> = ({ children, language }) => {\n const isSupported = TEMP_SUPPORTED_LANGUAGES.has(language);\n const langName = LANGUAGE_NAME_MAP[language];\n\n const message = isSupported\n ? `Click to view documentation in ${langName}`\n : `Documentation support for ${langName} is coming soon!`;\n\n return (\n <Tooltip hasArrow label={message} placement=\"top-start\">\n <span>{children}</span>\n </Tooltip>\n );\n};\n","export enum PackageCardType {\n Wide = \"wide\",\n}\n","import { createTestIds } from \"../../util/createTestIds\";\n\nconst testIds = createTestIds(\"packageCard\", [\n \"author\",\n \"description\",\n \"downloads\",\n \"languages\",\n \"published\",\n \"title\",\n \"version\",\n \"comment\",\n \"wideContainer\",\n] as const);\n\nexport default testIds;\n","import { Text, Tooltip } from \"@chakra-ui/react\";\nimport { formatDistanceToNowStrict } from \"date-fns\";\nimport { FunctionComponent, ReactChild } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { useStats } from \"../../hooks/useStats\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\nimport { Time } from \"../Time\";\n\ninterface DetailProps {\n \"data-testid\": string;\n tooltip?: string;\n value: ReactChild;\n}\n\nconst Detail: FunctionComponent<DetailProps> = ({\n \"data-testid\": dataTestid,\n tooltip,\n value,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n {/* zIndex required to allow tooltip to display due to card link overlay */}\n <Text data-testid={dataTestid} fontSize=\"xs\" zIndex={1}>\n {value}\n </Text>\n </Tooltip>\n);\n\nexport const Details: FunctionComponent = () => {\n const {\n author,\n metadata: { date },\n name,\n } = usePackageCard();\n\n const { data } = useStats();\n const downloads: number | undefined = data?.packages?.[name]?.downloads?.npm;\n\n const authorName = typeof author === \"string\" ? author : author.name;\n const publishDate = new Date(date);\n\n return (\n <>\n {downloads !== undefined && (\n <Detail\n data-testid={testIds.downloads}\n tooltip=\"Download numbers are periodically sourced from the npm registry\"\n value={`${downloads.toLocaleString()} weekly downloads`}\n />\n )}\n <Detail\n data-testid={testIds.published}\n value={\n <Time\n date={publishDate}\n fontSize=\"xs\"\n formattedDate={formatDistanceToNowStrict(publishDate, {\n addSuffix: true,\n })}\n />\n }\n />\n <Detail\n data-testid={testIds.author}\n value={\n <>\n By{\" \"}\n <NavLink\n color=\"link\"\n to={getSearchPath({\n query: authorName,\n })}\n >\n {authorName}\n </NavLink>\n </>\n }\n />\n </>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport testIds from \"./testIds\";\n\nexport const EditorsNote: FunctionComponent<{ comment?: string }> = ({\n comment,\n}) => {\n return (\n <Text\n data-testid={testIds.comment}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n <Text as=\"span\" color=\"blue.500\" fontWeight=\"bold\">\n Editor&apos;s note:{\" \"}\n </Text>\n {comment}\n </Text>\n );\n};\n","import {\n Flex,\n Heading as ChakraHeading,\n LinkOverlay,\n Text,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { EditorsNote } from \"./EditorsNote\";\nimport { usePackageCard } from \"./PackageCard\";\nimport testIds from \"./testIds\";\nimport { eventName } from \"../../contexts/Analytics\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { getPackagePath } from \"../../util/url\";\nimport { CDKTypeBadge } from \"../CDKType\";\n\nexport const Heading: FunctionComponent = () => {\n const [currentLanguage] = useLanguage();\n const {\n dataEvent,\n description,\n comment,\n constructFrameworks,\n name,\n version,\n } = usePackageCard();\n\n return (\n <>\n <LinkOverlay\n as={Link}\n data-event={\n dataEvent ? eventName(dataEvent, \"Package Card\", name) : undefined\n }\n to={getPackagePath({\n name,\n version,\n language: currentLanguage,\n })}\n >\n <Flex align=\"center\">\n <CDKTypeBadge\n constructFrameworks={constructFrameworks}\n mr={2}\n zIndex={1}\n />\n <ChakraHeading\n as=\"h3\"\n color=\"textPrimary\"\n data-testid={testIds.title}\n fontSize=\"md\"\n fontWeight=\"bold\"\n wordBreak=\"normal\"\n >\n {name}\n </ChakraHeading>\n </Flex>\n </LinkOverlay>\n {comment ? (\n <EditorsNote comment={comment} />\n ) : (\n <Text\n color=\"textPrimary\"\n data-testid={testIds.description}\n fontSize=\"md\"\n lineHeight=\"tall\"\n noOfLines={4}\n >\n {description || \"No description available.\"}\n </Text>\n )}\n </>\n );\n};\n","import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport { highlightsFrom } from \"../../util/package\";\nimport { Highlight as HighlightComponent } from \"../Highlight\";\n\nexport const Highlight: FunctionComponent = () => {\n const { packageTags = [] } = usePackageCard()?.metadata ?? {};\n const [highlight] = highlightsFrom(packageTags);\n\n if (!highlight) return null;\n\n return (\n <Box fontSize=\"xs\">\n <HighlightComponent {...highlight} />\n </Box>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n Language,\n LANGUAGES,\n LANGUAGE_RENDER_MAP,\n TEMP_SUPPORTED_LANGUAGES,\n} from \"../../constants/languages\";\nimport { getPackagePath } from \"../../util/url\";\nimport { LanguageSupportTooltip } from \"../LanguageSupportTooltip\";\n\nconst sizes = {\n sm: 5,\n md: 6,\n lg: 8,\n};\n\nexport interface PackageLanguagesProps {\n isRounded?: boolean;\n languages?: Partial<Record<Language, unknown>>;\n name: string;\n size?: \"sm\" | \"md\" | \"lg\";\n version: string;\n}\n\nexport const PackageLanguages: FunctionComponent<PackageLanguagesProps> = ({\n isRounded = false,\n languages,\n name: packageName,\n size = \"md\",\n version,\n}) => {\n const targets = Object.keys(languages ?? {}) as Language[];\n return (\n <>\n {Object.entries(LANGUAGE_RENDER_MAP)\n // Ensure entries are always sorted in a stable way\n .sort(\n ([left], [right]) =>\n LANGUAGES.indexOf(left as Language) -\n LANGUAGES.indexOf(right as Language)\n )\n .map(([lang, info]) => {\n const language = lang as Language;\n\n const isSupportedByLibrary =\n language === Language.TypeScript || targets.includes(language);\n\n const isSupportedByConstructHub =\n language === Language.TypeScript || // TypeScript is always supported\n // Otherwise, the language must be supported by ConstructHub\n TEMP_SUPPORTED_LANGUAGES.has(language);\n\n if (!isSupportedByLibrary) return null;\n\n const { name, icon: Icon } = info;\n\n const icon = (\n <Icon\n aria-label={`Supports ${name}`}\n borderRadius={isRounded ? \"50%\" : 0}\n h={sizes[size]}\n opacity={isSupportedByConstructHub ? 1 : 0.2}\n w={sizes[size]}\n />\n );\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n {isSupportedByConstructHub ? (\n <Link\n aria-label={`View package docs for ${language}`}\n to={getPackagePath({ name: packageName, version, language })}\n >\n {icon}\n </Link>\n ) : (\n icon\n )}\n </LanguageSupportTooltip>\n );\n })}\n </>\n );\n};\n","import type { FunctionComponent } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport { PackageLanguages } from \"../PackageLanguages\";\n\nexport const Languages: FunctionComponent = () => {\n const pkg = usePackageCard();\n return <PackageLanguages {...pkg} size=\"sm\" />;\n};\n","import { FunctionComponent } from \"react\";\nimport { usePackageCard } from \"./PackageCard\";\nimport { tagObjectsFrom } from \"../../util/package\";\nimport { PackageTag } from \"../PackageTag\";\n\nexport const Tags: FunctionComponent = () => {\n const {\n keywords = [],\n metadata: { packageTags = [] },\n } = usePackageCard();\n\n const tags = tagObjectsFrom({\n packageTags,\n keywords,\n });\n\n return (\n <>\n {tags.slice(0, 10).map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag key={id} value={id} variant={color}>\n {label}\n </PackageTag>\n ))}\n </>\n );\n};\n","import { Flex, Grid, LinkBox, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { Heading } from \"./Heading\";\nimport { Highlight } from \"./Highlight\";\nimport { Languages } from \"./Languages\";\nimport { Tags } from \"./Tags\";\nimport testIds from \"./testIds\";\n\nexport const WideCard: FunctionComponent = () => {\n return (\n <LinkBox\n _hover={{\n \"> article\": {\n bg: \"hoverPrimary\",\n },\n }}\n >\n <Grid\n as=\"article\"\n bg=\"bgSecondary\"\n border=\"base\"\n borderRadius=\"sm\"\n boxShadow=\"base\"\n color=\"textPrimary\"\n data-testid={testIds.wideContainer}\n h=\"full\"\n minH=\"12.5rem\"\n templateColumns={{ base: \"1fr\", lg: \"1fr 14rem\" }}\n w=\"full\"\n >\n {/* Top / Left side of card */}\n <Flex\n direction=\"column\"\n justify=\"space-between\"\n overflow=\"hidden\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={3}>\n <Heading />\n </Stack>\n\n <Flex align=\"center\" sx={{ gap: \"0.5rem\" }} wrap=\"wrap\">\n <Tags />\n </Flex>\n </Flex>\n\n {/* Bottom / Right side of card */}\n <Flex\n align={{ base: \"end\", lg: \"initial\" }}\n borderLeft={{ lg: \"base\" }}\n borderTop={{ base: \"base\", lg: \"none\" }}\n direction={{ base: \"row\", lg: \"column\" }}\n justify=\"space-between\"\n p={5}\n sx={{ gap: \"0.5rem\" }}\n >\n <Stack spacing={1}>\n <Highlight />\n <Stack spacing={1}>\n <Details />\n </Stack>\n </Stack>\n\n <Stack data-testid={testIds.languages} direction=\"row\" spacing={2}>\n <Languages />\n </Stack>\n </Flex>\n </Grid>\n </LinkBox>\n );\n};\n","import { createContext, FunctionComponent, useContext } from \"react\";\nimport { PackageCardType } from \"./constants\";\nimport { WideCard } from \"./WideCard\";\nimport { ExtendedCatalogPackage } from \"../../api/catalog-search\";\n\nexport interface PackageCardProps {\n \"data-event\"?: string;\n pkg: ExtendedCatalogPackage;\n variant?: PackageCardType;\n}\n\ninterface PackageCardState extends ExtendedCatalogPackage {\n comment?: string;\n dataEvent?: string;\n}\n\nconst PackageCardContext = createContext<PackageCardState | null>(null);\n\nexport const usePackageCard = () => useContext(PackageCardContext)!;\n\nexport const PackageCard: FunctionComponent<PackageCardProps> = ({\n \"data-event\": dataEvent,\n pkg,\n variant = PackageCardType.Wide,\n}) => {\n return (\n <PackageCardContext.Provider value={{ ...pkg, dataEvent }}>\n {variant === PackageCardType.Wide && <WideCard />}\n </PackageCardContext.Provider>\n );\n};\n","import { Tag, TagLabel, TagProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { getSearchPath } from \"../../util/url\";\nimport { NavLink } from \"../NavLink\";\n\nexport interface PackageTagProps extends TagProps {\n value: string;\n label?: string;\n zIndex?: string | number;\n}\n\nexport const PackageTag: FunctionComponent<PackageTagProps> = ({\n children,\n value,\n label = value,\n zIndex,\n ...tagProps\n}) => {\n return (\n <NavLink\n aria-label={`Tag: ${label}`}\n to={getSearchPath({ keywords: [value] })}\n zIndex={zIndex}\n >\n <Tag\n _hover={{\n textDecoration: \"underline\",\n }}\n {...tagProps}\n >\n <TagLabel>{children}</TagLabel>\n </Tag>\n </NavLink>\n );\n};\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import { Box, BoxProps, forwardRef } from \"@chakra-ui/react\";\nimport { format } from \"date-fns\";\n\nexport type TimeOptions = {\n date: Date;\n format?: string;\n formattedDate?: string;\n};\n\nexport interface TimeProps extends BoxProps, TimeOptions {}\n\nexport const Time = forwardRef<TimeProps, \"time\">(\n ({ date, format: formatString, formattedDate, ...boxProps }, ref) => {\n return (\n <Box as=\"time\" dateTime={date.toISOString()} ref={ref} {...boxProps}>\n {formattedDate ?? format(date, formatString ?? \"\")}\n </Box>\n );\n }\n);\n\nTime.displayName = \"Time\";\n","import type { Config } from \"../../api/config\";\nimport { useConfig } from \"../../contexts/Config\";\n\nexport const useConfigValue = <T extends keyof Config>(key: T) => {\n const { data } = useConfig();\n return (data ?? {})[key];\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { Language, TEMP_SUPPORTED_LANGUAGES } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\n\n// Only supported language atm\nconst defaultLang = Language.TypeScript;\n\nconst LOCAL_KEY = \"preferred-language\";\n\nconst isValidLang = (lang?: string | Language): lang is Language =>\n lang != null && TEMP_SUPPORTED_LANGUAGES.has(lang as Language);\n\nconst getInitialLang = (langFromParams: string | Language): Language => {\n // First, use language from query params in url\n if (isValidLang(langFromParams)) {\n return langFromParams;\n }\n\n // Next check for one stored in localStorage\n try {\n const storedLang = (localStorage.getItem(LOCAL_KEY) ?? \"\") as Language;\n if (isValidLang(storedLang)) return storedLang;\n } catch {\n // Do nothing, we just don't want to crash if localStorage access is blocked.\n }\n\n // Otherwise fallback to a default\n return defaultLang;\n};\n\nexport interface UseLanguageOptions {\n /**\n * Syncs the preferred language to a query param in URL\n */\n updateUrl?: boolean;\n /**\n * Saves the selected language to localStorage on select\n */\n updateSaved?: boolean;\n}\n\nexport const useLanguage = (options: UseLanguageOptions = {}) => {\n const { updateUrl, updateSaved } = options;\n const { pathname, hash } = useLocation();\n const { replace } = useHistory();\n const params = useQueryParams();\n const langFromParams = params.get(QUERY_PARAMS.LANGUAGE) as Language;\n\n // Passed as function to guarantee it runs on hook mount\n const [language, setLanguage] = useState<Language>(() =>\n getInitialLang(langFromParams)\n );\n\n // State subscribes to query param changes\n useEffect(() => {\n if (isValidLang(langFromParams) && langFromParams !== language) {\n setLanguage(langFromParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [langFromParams]);\n\n // Syncs language changes to URL if updateUrl = true\n useEffect(() => {\n if (langFromParams !== language && updateUrl) {\n params.set(QUERY_PARAMS.LANGUAGE, language);\n replace({ pathname, hash, search: params.toString() });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [language, updateUrl]);\n\n const update = useCallback(\n (val: Language) => {\n setLanguage(val);\n\n if (updateSaved) {\n try {\n localStorage.setItem(LOCAL_KEY, val);\n } catch {\n // OK to fail silently\n }\n }\n },\n [updateSaved]\n );\n\n return useMemo(() => [language, update] as const, [language, update]);\n};\n","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQueryParams = () => {\n const { search } = useLocation();\n\n return useMemo(() => new URLSearchParams(search), [search]);\n};\n","import { PackageHighlight, PackageTagConfig } from \"../api/config\";\nimport { KEYWORD_IGNORE_LIST } from \"../constants/keywords\";\n\nexport interface TagObject extends PackageTagConfig {}\n\n/**\n * Reduces package tags to only return highlight tags\n */\nexport const highlightsFrom = (packageTags?: PackageTagConfig[]) => {\n if (!packageTags || packageTags.length < 1) return [];\n\n return packageTags.reduce(\n (accum: PackageHighlight[], tag: PackageTagConfig): PackageHighlight[] => {\n if (tag.highlight) {\n return [...accum, tag.highlight];\n }\n\n return accum;\n },\n []\n );\n};\n\n/**\n * Maps packageTags to an array of TagObjects, which can be rendered by the PackageTags Component\n */\nexport const mapPackageTags = (\n packageTags?: PackageTagConfig[]\n): TagObject[] => {\n return (packageTags ?? [])\n .filter((tag) => {\n return Boolean(tag.keyword?.label);\n })\n .map((tag) => ({\n ...tag,\n id: tag.keyword?.label!,\n }));\n};\n\n/**\n * Maps keywords to an array of TagObjects, which can be rendered by the PackageTags component\n */\nexport const mapPackageKeywords = (keywords?: string[]): TagObject[] => {\n if (!keywords || keywords.length < 1) return [];\n\n return keywords\n .filter((label) => Boolean(label) && !KEYWORD_IGNORE_LIST.has(label))\n .map((label) => ({\n id: label,\n keyword: {\n label,\n },\n }));\n};\n\n/**\n * Maps packageTags and keywords to a list of TagObjects, using mapPackageTags and mapPackageKeywords\n */\nexport const tagObjectsFrom = ({\n packageTags,\n keywords,\n}: {\n packageTags?: PackageTagConfig[];\n keywords?: string[];\n}): TagObject[] => {\n const tagObjects = new Array<TagObject>();\n const tagLabels = new Set<string>();\n\n for (const tag of [\n ...mapPackageTags(packageTags),\n ...mapPackageKeywords(keywords),\n ]) {\n const label = tag.keyword!.label.toLowerCase();\n if (!tagLabels.has(label)) {\n tagObjects.push(tag);\n tagLabels.add(label);\n }\n }\n\n return tagObjects;\n};\n"],"names":["Highlight","_ref","label","color","icon","brightness","useColorModeValue","_jsxs","Stack","align","direction","filter","spacing","children","_jsx","Image","alt","concat","src","w","Text","fontWeight","LanguageSupportTooltip","language","isSupported","TEMP_SUPPORTED_LANGUAGES","has","langName","LANGUAGE_NAME_MAP","message","Tooltip","hasArrow","placement","PackageCardType","PackageCard_testIds","createTestIds","Detail","dataTestid","tooltip","value","isDisabled","fontSize","zIndex","Details","_data$packages","_data$packages$name","_data$packages$name$d","_usePackageCard","usePackageCard","author","date","metadata","name","data","useStats","downloads","packages","npm","authorName","publishDate","Date","_Fragment","undefined","testIds","toLocaleString","published","Time","formattedDate","formatDistanceToNowStrict","addSuffix","NavLink","to","getSearchPath","query","EditorsNote","comment","lineHeight","noOfLines","as","Heading","_useLanguage","useLanguage","currentLanguage","_slicedToArray","dataEvent","description","constructFrameworks","version","LinkOverlay","Link","eventName","getPackagePath","Flex","CDKTypeBadge","mr","ChakraHeading","title","wordBreak","_usePackageCard$metad","_ref$packageTags","packageTags","_highlightsFrom","highlightsFrom","highlight","Box","HighlightComponent","_objectSpread","sizes","sm","md","lg","PackageLanguages","_ref$isRounded","isRounded","languages","packageName","_ref$size","size","targets","Object","keys","entries","LANGUAGE_RENDER_MAP","sort","_ref2","_ref3","left","right","LANGUAGES","indexOf","map","_ref6","_ref7","lang","info","isSupportedByLibrary","Language","TypeScript","includes","isSupportedByConstructHub","Icon","borderRadius","h","opacity","Languages","pkg","Tags","_usePackageCard$keywo","keywords","tags","tagObjectsFrom","slice","id","_ref$keyword","keyword","_ref$keyword2","PackageTag","variant","WideCard","LinkBox","_hover","bg","Grid","border","boxShadow","wideContainer","minH","templateColumns","base","justify","overflow","p","sx","gap","wrap","borderLeft","borderTop","PackageCardContext","createContext","useContext","PackageCard","_ref$variant","Wide","Provider","_ref$label","tagProps","_objectWithoutProperties","_excluded","Tag","textDecoration","TagLabel","pageInfo","contribute","event","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","formattedTitle","Helmet","process","content","charSet","url","mimeType","href","rel","type","property","forwardRef","ref","formatString","format","boxProps","dateTime","toISOString","displayName","key","useConfig","defaultLang","LOCAL_KEY","isValidLang","options","arguments","length","updateUrl","updateSaved","_useLocation","useLocation","pathname","hash","replace","useHistory","params","useQueryParams","langFromParams","get","QUERY_PARAMS","LANGUAGE","_useState","useState","_localStorage$getItem","storedLang","localStorage","getItem","_unused","getInitialLang","_useState2","setLanguage","set","toString","update","useCallback","val","setItem","_unused2","useMemo","URLSearchParams","mapPackageTags","tag","_tag$keyword","Boolean","_tag$keyword2","mapPackageKeywords","KEYWORD_IGNORE_LIST","tagObjects","Array","tagLabels","Set","toLowerCase","push","add","reduce","accum"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/323.98b1fe06.chunk.js","mappings":"0NAOA,MAMaA,EAA4BA,KACvC,MAAMC,GAAUC,EAAAA,EAAAA,KAEhB,GAAID,EAAQE,YAAcF,EAAQG,KAChC,OACEC,EAAAA,EAAAA,KAACC,EAAAA,GAAM,CAACC,KAAK,QAAOC,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAO,CAACC,KAAK,SAKpB,MAAMC,EAjBcV,KACpB,MAAMW,EAAWX,EAAQW,SAEzB,OAAOA,EADKC,KAAKC,MAAMD,KAAKE,SAAWH,EAASI,UAepCC,CAAahB,EAAQG,MAC3Bc,GAAMC,EAAAA,EAAAA,IAAe,CACzBC,KAAMT,EAAIS,KACVC,QAASV,EAAIU,UAGf,OAAOhB,EAAAA,EAAAA,KAACiB,EAAAA,GAAQ,CAACC,GAAIL","sources":["views/Random/Random.tsx"],"sourcesContent":["import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport type { CatalogPackage, Packages } from \"../../api/package/packages\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport { getPackagePath } from \"../../util/url\";\n\nconst getRandomPkg = (catalog: Packages): CatalogPackage => {\n const packages = catalog.packages;\n const idx = Math.floor(Math.random() * packages.length);\n return packages[idx];\n};\n\nexport const Random: FunctionComponent = () => {\n const catalog = useCatalog();\n\n if (catalog.isLoading || !catalog.data) {\n return (\n <Center minH=\"16rem\">\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const pkg = getRandomPkg(catalog.data);\n const url = getPackagePath({\n name: pkg.name,\n version: pkg.version,\n });\n\n return <Redirect to={url} />;\n};\n"],"names":["Random","catalog","useCatalog","isLoading","data","_jsx","Center","minH","children","Spinner","size","pkg","packages","Math","floor","random","length","getRandomPkg","url","getPackagePath","name","version","Redirect","to"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/323.e7052e14.chunk.js","mappings":"0NAOA,MAMaA,EAA4BA,KACvC,MAAMC,GAAUC,EAAAA,EAAAA,KAEhB,GAAID,EAAQE,YAAcF,EAAQG,KAChC,OACEC,EAAAA,EAAAA,KAACC,EAAAA,GAAM,CAACC,KAAK,QAAOC,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAO,CAACC,KAAK,SAKpB,MAAMC,EAjBcV,KACpB,MAAMW,EAAWX,EAAQW,SAEzB,OAAOA,EADKC,KAAKC,MAAMD,KAAKE,SAAWH,EAASI,UAepCC,CAAahB,EAAQG,MAC3Bc,GAAMC,EAAAA,EAAAA,IAAe,CACzBC,KAAMT,EAAIS,KACVC,QAASV,EAAIU,UAGf,OAAOhB,EAAAA,EAAAA,KAACiB,EAAAA,GAAQ,CAACC,GAAIL","sources":["views/Random/Random.tsx"],"sourcesContent":["import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport type { CatalogPackage, Packages } from \"../../api/package/packages\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport { getPackagePath } from \"../../util/url\";\n\nconst getRandomPkg = (catalog: Packages): CatalogPackage => {\n const packages = catalog.packages;\n const idx = Math.floor(Math.random() * packages.length);\n return packages[idx];\n};\n\nexport const Random: FunctionComponent = () => {\n const catalog = useCatalog();\n\n if (catalog.isLoading || !catalog.data) {\n return (\n <Center minH=\"16rem\">\n <Spinner size=\"xl\" />\n </Center>\n );\n }\n\n const pkg = getRandomPkg(catalog.data);\n const url = getPackagePath({\n name: pkg.name,\n version: pkg.version,\n });\n\n return <Redirect to={url} />;\n};\n"],"names":["Random","catalog","useCatalog","isLoading","data","_jsx","Center","minH","children","Spinner","size","pkg","packages","Math","floor","random","length","getRandomPkg","url","getPackagePath","name","version","Redirect","to"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/332.368b805b.chunk.js","mappings":"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","sources":["components/FAQ/FAQ.tsx","components/FAQ/FAQHeading.tsx","components/FAQ/FAQItem.tsx","components/FAQ/FAQLink.tsx","components/FAQ/FAQSection.tsx","components/FAQ/FAQSections.tsx","constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","views/Contribute/Contribute.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQ: FunctionComponent = ({ children }) => (\n <Box bg=\"bgSecondary\" color=\"textPrimary\" h=\"100%\" w=\"100%\">\n {children}\n <Box py={5} width=\"100%\" />\n </Box>\n);\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQHeading: FunctionComponent = ({ children }) => (\n <Box bg=\"bgPrimary\" py={20} width=\"100%\">\n <Heading as=\"h1\" color=\"textPrimary\" mx=\"auto\" textAlign=\"center\">\n {children}\n </Heading>\n </Box>\n);\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"textPrimary\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} my={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Accordion, AccordionProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQSections: FunctionComponent<AccordionProps> = ({\n children,\n ...accordionProps\n}) => (\n <Accordion allowMultiple {...accordionProps}>\n {children}\n </Accordion>\n);\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import 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 {\n Accordion,\n OrderedList,\n ListItem,\n Text,\n UnorderedList,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { FAQ, FAQHeading, FAQItem, FAQLink } from \"../../components/FAQ\";\nimport { Page } from \"../../components/Page\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\n\nexport const Contribute: FunctionComponent = () => (\n <Page\n meta={{\n description: \"Learn about contributing to Construct Hub.\",\n title: \"Contribute\",\n }}\n pageName=\"contribute\"\n >\n <FAQ>\n <FAQHeading>Contributing to Construct Hub</FAQHeading>\n\n <Accordion allowMultiple allowToggle defaultIndex={[0]}>\n <FAQItem question=\"How can I add my construct to Construct Hub?\">\n <Text>\n Constructs intended for Construct Hub must be published to the{\" \"}\n <FAQLink href=\"https://www.npmjs.com/\">npm Registry</FAQLink> under\n Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source licenses\n and annotated with a keyword recognized by Construct Hub (awscdk,\n cdk8s, or cdktf).\n </Text>\n\n <Text>\n Additionally, since one of the main goals of Construct Hub is to\n enable an ecosystem of constructs that can be consumed by all CDK\n languages, your library <strong>must</strong> be compiled with{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/\">JSII</FAQLink>, a\n TypeScript-based tool for building multi-language libraries.\n Construct Hub leverages the type information produced by the JSII\n compiler to render a rich multi-language API reference for each\n construct.\n </Text>\n\n <Text>\n Construct Hub continuously monitors the npm Registry. Packages that\n meet the above requirements appear in Construct Hub in about 30\n minutes. If your package does not appear in Construct Hub, but meets\n these requirements, please file an issue against our{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n GitHub repository.\n </FAQLink>\n </Text>\n\n <Text>\n The community has provided some great resources about publishing\n construct libraries that meet Construct Hub requirements. For\n example, see{\" \"}\n <FAQLink href=\"https://dev.to/aws-builders/a-beginner-s-guide-to-create-aws-cdk-construct-library-with-projen-5eh4\">\n “A Beginner&apos;s Guide to Create AWS CDK ConstructLibrary with{\" \"}\n projen”\n </FAQLink>{\" \"}\n by <FAQLink href=\"https://hayao-k.dev/\">hayao-k</FAQLink>.\n </Text>\n\n <Text>\n If you already have a library written in TypeScript and want to\n migrate it to JSII so it can be included in Construct Hub, see the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII library author guide.\n </FAQLink>\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What are the best practices for improving discoverability of a construct library on Construct Hub?\">\n <Text>\n To improve your construct library’s visibility on Construct Hub,\n follow these best practices:\n </Text>\n <OrderedList sx={{ li: { mt: 4 } }}>\n <ListItem>\n <strong>Helpful description.</strong> Publish your library with a\n description. Libraries without description have lower chances to\n be discovered by users. When you write your library’s description,\n think: Why would someone use it? What makes it unique? Make the\n description as accurate and differentiated as possible.\n </ListItem>\n\n <ListItem>\n <strong>Helpful keywords.</strong> Publish your library with\n helpful keywords, ones that can help potential users to find your\n package. Helpful keywords can be technologies that are being used\n by the library, use cases the library is useful for, service names\n that are being used by the library etc. For example: ‘Monitoring’,\n ‘Kubernetes’, ‘Cost Management’, ‘Websites’, ‘AI’, ‘Containers’\n and more.\n </ListItem>\n\n <ListItem>\n <strong>Helpful README.</strong> Review your library’s README\n file. Is it developer-friendly? That is, can developers quickly\n understand the use case you’re trying to solve? Does your README\n make it easy to get started with your library? Does it explain how\n your library is different from other libraries? Is it easy to\n understand at first glance the value developers gain from the\n library? For more information see *“Q: What are the best practices\n for a developer-friendly README file?”.*\n </ListItem>\n\n <ListItem>\n <strong>API documentation.</strong> Document the library classes,\n methods, properties in the library’s code. Construct Hub will\n display this information when it automatically generates the API\n documentation.\n </ListItem>\n\n <ListItem>\n <strong>Maintain your library.</strong> Developers prefer\n libraries that are updated on a regular basis. Our experience\n shows that successful libraries are those where publishers engage\n and collaborate with the user community, respond to issues and\n pull requests, fix bugs, and add capabilities. To gain more\n developers trust, maintain the releases section on your code\n repository and make sure to describe the changes between different\n releases. You may consider to link the libraries you’ve published\n with your code repository.\n </ListItem>\n\n <ListItem>\n <strong>AWS Partner Network (APN) badge.</strong> If you’re an AWS\n partner and you are publishing a library for your offering, please\n reach out to us and we will be happy to add a badge to your\n libraries with your company’s name.\n </ListItem>\n\n <ListItem>\n <strong>\n Enable support for multiple programming languages.\n </strong>{\" \"}\n Make your library usable by a broader set of users and increase\n its value to the ecosystem. Starting with your library written in\n TypeScript, JSII will create packages in the other CDK programming\n languages. Construct Hub will then automatically generate API\n reference and transliterate code samples. All you need to do is to\n follow the instructions under *“Q: How can I add my construct to\n Construct Hub?”.*\n </ListItem>\n </OrderedList>\n </FAQItem>\n\n <FAQItem question=\"What are the best practices for writing a developer-friendly README file?\">\n <Text>\n Developer-friendly READMEs help readers quickly understand your\n library’s relevance to their needs and its unique value in\n comparison to similar libraries on the Construct Hub. Below is a\n suggestion for a README file structure:\n </Text>\n\n <UnorderedList sx={{ li: { mt: 4 } }}>\n <ListItem>\n <strong>State and maturity of the library.</strong> Start your\n READMEs with helpful badges like{\" \"}\n <FAQLink href=\"https://www.npmjs.com/package/cdk-codepipeline-badge-notification\">\n CDK pipelines badges\n </FAQLink>\n . It will help users see the state of your package.\n </ListItem>\n\n <ListItem>\n <strong>Short description</strong>. What does this library do?\n Which use case does it solve? Which technologies and services does\n it use or support?\n </ListItem>\n\n <ListItem>\n <strong>What is unique about this library?</strong> Help readers\n quickly find the right library for their needs by stating its\n special advantages right up front. How does it compare to other\n libraries addressing the same need or that use the same\n technologies and services? You don’t need an explicit “us vs.\n them” feature checklist; just make sure you communicate your\n library’s unique value.\n </ListItem>\n\n <ListItem>\n <strong>Code samples.</strong> Include as many complete and\n working code samples as you can to help developers quickly\n understand how they can use your library. Some developers start\n reading code samples before anything else. Write your code samples\n in TypeScript, and Construct Hub will transliterate them to the\n other programming languages your library supports. A good practice\n is to include a minimal code sample of how to use your library in\n the first page of your README.\n </ListItem>\n\n <ListItem>\n <strong>Author information.</strong> Share information about you,\n other packages you’ve published, and additional helpful links that\n can improve your credibility with readers.\n </ListItem>\n\n <ListItem>\n <strong>License and support.</strong> Include a “License” and\n “Contributing” sections that invite users to contribute via links\n to your source code repository and issue tracker. (Construct Hub\n provides “License” and “Provide Feedback” in your library’s\n package page, but it’s convenient to have them in the README too.)\n </ListItem>\n\n <ListItem>\n <strong>Diagrams.</strong> Diagrams always help readers quickly\n understand what a library does. Consider adding diagrams for\n libraries that create multiple services that work together.\n </ListItem>\n\n <ListItem>\n <strong>Explanatory videos.</strong> Consider sharing links to\n videos that can help potential customers engage with your library.\n </ListItem>\n\n <ListItem>\n <strong>Absolute links vs. relative.</strong> Use absolute links\n (those that start with http:// or https://) and not relative\n links. Relative links are prone to breaking when the content is\n shared elsewhere.\n </ListItem>\n </UnorderedList>\n </FAQItem>\n\n <FAQItem question=\"Why isn’t my package displayed on Construct Hub?\">\n <Text>\n Construct Hub includes publicly-available constructs that are\n JSII-compatible and that were published to the npm Registry with a\n permissive open-source license and a CDK keyword: aws-cdk, cdk8s, or\n cdktf. If you believe your package qualifies, but it does not appear\n in Construct Hub, please check the following:\n </Text>\n <UnorderedList sx={{ li: { my: 4 } }}>\n <ListItem>\n You are using JSII to compile your project. When you successfully\n build your project with jsii, a <code>.jsii</code> file should get\n created in the root of your project. See the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII Library Author Guide\n </FAQLink>{\" \"}\n for more information about setting up JSII.\n </ListItem>\n <ListItem>\n Your packaged library includes the <code>.jsii</code> file. If you\n have a <code>.npmignore</code> file, make sure it does not ignore{\" \"}\n <code>.jsii</code>. (You can add &quot;<code>!.jsii</code>\n &quot; to specify it <em>should</em> be included in the packaged\n library.) If you are using the <code>files</code> field in{\" \"}\n <code>package.json</code>, make sure it includes &quot;\n <code>.jsii</code>&quot; (this list takes precedence over{\" \"}\n <code>.npmignore</code>).\n </ListItem>\n </UnorderedList>\n <Text>\n If your package still does not appear in Construct Hub, please raise\n an issue{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n here\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <Text>\n Yes, you can and should! After you publish a new valid version to\n the public npm Registry, it should appear on Construct Hub in about\n 30 minutes.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report a bug or contribute code to a construct?\">\n <Text>\n Each package is owned by its publisher, so contributions, such as\n bug reports and pull requests, should be made via the repository\n link provided by the publisher. You may press the ‘Provide feedback’\n link at the package page to open a new issue in at the package’s\n repository.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I participate in link the Construct Hub community?\">\n Construct Hub is itself an open-source construct! Join the{\" \"}\n <FAQLink href=\"https://github.com/cdklabs/construct-hub\">\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the #construct-hub-dev channel in the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">\n CDK community Slack workspace\n </FAQLink>\n </FAQItem>\n\n <FAQItem question=\"Is there a Slack channel for the CDK community?\">\n <Text>\n Please join the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">CDK Slack channel</FAQLink>. This\n Slack channel is managed by the CDK community, for the CDK\n community.\n </Text>\n </FAQItem>\n </Accordion>\n </FAQ>\n </Page>\n);\n"],"names":["FAQ","_ref","children","_jsxs","Box","bg","color","h","w","_jsx","py","width","FAQHeading","Heading","as","mx","textAlign","FAQItem","question","AccordionItem","AccordionButton","flex","ml","size","AccordionIcon","AccordionPanel","px","Text","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","my","Accordion","allowMultiple","FAQSections","accordionProps","_objectWithoutProperties","_excluded","_objectSpread","pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","title","description","formattedTitle","concat","_Fragment","Helmet","process","content","charSet","map","_ref2","url","mimeType","rel","type","property","key","data","useConfig","Contribute","allowToggle","defaultIndex","CONSTRUCT_HUB_REPO_URL","OrderedList","li","mt","ListItem","UnorderedList"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/332.e19db592.chunk.js","mappings":"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","sources":["components/FAQ/FAQ.tsx","components/FAQ/FAQHeading.tsx","components/FAQ/FAQItem.tsx","components/FAQ/FAQLink.tsx","components/FAQ/FAQSection.tsx","components/FAQ/FAQSections.tsx","constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","views/Contribute/Contribute.tsx"],"sourcesContent":["import { Box } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQ: FunctionComponent = ({ children }) => (\n <Box bg=\"bgSecondary\" color=\"textPrimary\" h=\"100%\" w=\"100%\">\n {children}\n <Box py={5} width=\"100%\" />\n </Box>\n);\n","import { Box, Heading } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQHeading: FunctionComponent = ({ children }) => (\n <Box bg=\"bgPrimary\" py={20} width=\"100%\">\n <Heading as=\"h1\" color=\"textPrimary\" mx=\"auto\" textAlign=\"center\">\n {children}\n </Heading>\n </Box>\n);\n","import {\n Heading,\n Text,\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Box,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactChild } from \"react\";\n\nexport interface FAQItemProps {\n question: ReactChild;\n}\n\nexport const FAQItem: FunctionComponent<FAQItemProps> = ({\n question,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" py={2} textAlign=\"left\">\n <Heading as=\"h3\" ml={8} size=\"sm\">\n {question}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel px={12} py={4}>\n <Text\n color=\"textPrimary\"\n fontSize=\"md\"\n sx={{ p: { marginTop: \"0\", marginBottom: \"4\" } }}\n >\n {children}\n </Text>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\n\nexport interface FAQLinkProps {\n href: string;\n}\n\nexport const FAQLink: FunctionComponent<FAQLinkProps> = ({\n href,\n children,\n}) => (\n <ExternalLink\n color=\"inherit\"\n hasWarning={false}\n href={href}\n textDecoration=\"underline\"\n >\n {children}\n </ExternalLink>\n);\n","import {\n AccordionIcon,\n AccordionButton,\n AccordionItem,\n AccordionPanel,\n Heading,\n Box,\n Accordion,\n} from \"@chakra-ui/react\";\n\nimport type { FunctionComponent } from \"react\";\n\nexport interface FAQSectionProps {\n heading: string;\n}\n\nexport const FAQSection: FunctionComponent<FAQSectionProps> = ({\n heading,\n children,\n}) => (\n <AccordionItem>\n <AccordionButton>\n <Box flex=\"1\" textAlign=\"left\">\n <Heading as=\"h2\" ml={4} my={4} size=\"lg\">\n {heading}\n </Heading>\n </Box>\n <AccordionIcon />\n </AccordionButton>\n <AccordionPanel p={0}>\n <Accordion allowMultiple w=\"100%\">\n {children}\n </Accordion>\n </AccordionPanel>\n </AccordionItem>\n);\n","import { Accordion, AccordionProps } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const FAQSections: FunctionComponent<AccordionProps> = ({\n children,\n ...accordionProps\n}) => (\n <Accordion allowMultiple {...accordionProps}>\n {children}\n </Accordion>\n);\n","export const pageInfo = {\n contribute: {\n event: {\n name: \"Contribute Load\",\n },\n },\n home: {\n event: {\n name: \"Home Load\",\n },\n },\n faq: {\n event: {\n name: \"Frequently Asked Questions Load\",\n },\n },\n packageProfile: {\n event: {\n name: \"Package Profile Load\",\n },\n },\n search: {\n event: {\n name: \"Search Load\",\n },\n },\n siteTerms: {\n event: {\n name: \"Site Terms Load\",\n },\n },\n notFound: {\n page: {\n pageType: \"errorPage\",\n },\n event: {\n name: \"404 Page Load\",\n },\n },\n} as const;\n","import { FunctionComponent, useEffect } from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport { pageInfo } from \"../../constants/pageInfo\";\nimport { usePageView } from \"../../contexts/Analytics\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import 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 {\n Accordion,\n OrderedList,\n ListItem,\n Text,\n UnorderedList,\n} from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { FAQ, FAQHeading, FAQItem, FAQLink } from \"../../components/FAQ\";\nimport { Page } from \"../../components/Page\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\n\nexport const Contribute: FunctionComponent = () => (\n <Page\n meta={{\n description: \"Learn about contributing to Construct Hub.\",\n title: \"Contribute\",\n }}\n pageName=\"contribute\"\n >\n <FAQ>\n <FAQHeading>Contributing to Construct Hub</FAQHeading>\n\n <Accordion allowMultiple allowToggle defaultIndex={[0]}>\n <FAQItem question=\"How can I add my construct to Construct Hub?\">\n <Text>\n Constructs intended for Construct Hub must be published to the{\" \"}\n <FAQLink href=\"https://www.npmjs.com/\">npm Registry</FAQLink> under\n Apache, BSD, EPL, MPL-2.0, ISC and CDDL or MIT open source licenses\n and annotated with a keyword recognized by Construct Hub (awscdk,\n cdk8s, or cdktf).\n </Text>\n\n <Text>\n Additionally, since one of the main goals of Construct Hub is to\n enable an ecosystem of constructs that can be consumed by all CDK\n languages, your library <strong>must</strong> be compiled with{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/\">JSII</FAQLink>, a\n TypeScript-based tool for building multi-language libraries.\n Construct Hub leverages the type information produced by the JSII\n compiler to render a rich multi-language API reference for each\n construct.\n </Text>\n\n <Text>\n Construct Hub continuously monitors the npm Registry. Packages that\n meet the above requirements appear in Construct Hub in about 30\n minutes. If your package does not appear in Construct Hub, but meets\n these requirements, please file an issue against our{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n GitHub repository.\n </FAQLink>\n </Text>\n\n <Text>\n The community has provided some great resources about publishing\n construct libraries that meet Construct Hub requirements. For\n example, see{\" \"}\n <FAQLink href=\"https://dev.to/aws-builders/a-beginner-s-guide-to-create-aws-cdk-construct-library-with-projen-5eh4\">\n “A Beginner&apos;s Guide to Create AWS CDK ConstructLibrary with{\" \"}\n projen”\n </FAQLink>{\" \"}\n by <FAQLink href=\"https://hayao-k.dev/\">hayao-k</FAQLink>.\n </Text>\n\n <Text>\n If you already have a library written in TypeScript and want to\n migrate it to JSII so it can be included in Construct Hub, see the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII library author guide.\n </FAQLink>\n </Text>\n </FAQItem>\n\n <FAQItem question=\"What are the best practices for improving discoverability of a construct library on Construct Hub?\">\n <Text>\n To improve your construct library’s visibility on Construct Hub,\n follow these best practices:\n </Text>\n <OrderedList sx={{ li: { mt: 4 } }}>\n <ListItem>\n <strong>Helpful description.</strong> Publish your library with a\n description. Libraries without description have lower chances to\n be discovered by users. When you write your library’s description,\n think: Why would someone use it? What makes it unique? Make the\n description as accurate and differentiated as possible.\n </ListItem>\n\n <ListItem>\n <strong>Helpful keywords.</strong> Publish your library with\n helpful keywords, ones that can help potential users to find your\n package. Helpful keywords can be technologies that are being used\n by the library, use cases the library is useful for, service names\n that are being used by the library etc. For example: ‘Monitoring’,\n ‘Kubernetes’, ‘Cost Management’, ‘Websites’, ‘AI’, ‘Containers’\n and more.\n </ListItem>\n\n <ListItem>\n <strong>Helpful README.</strong> Review your library’s README\n file. Is it developer-friendly? That is, can developers quickly\n understand the use case you’re trying to solve? Does your README\n make it easy to get started with your library? Does it explain how\n your library is different from other libraries? Is it easy to\n understand at first glance the value developers gain from the\n library? For more information see *“Q: What are the best practices\n for a developer-friendly README file?”.*\n </ListItem>\n\n <ListItem>\n <strong>API documentation.</strong> Document the library classes,\n methods, properties in the library’s code. Construct Hub will\n display this information when it automatically generates the API\n documentation.\n </ListItem>\n\n <ListItem>\n <strong>Maintain your library.</strong> Developers prefer\n libraries that are updated on a regular basis. Our experience\n shows that successful libraries are those where publishers engage\n and collaborate with the user community, respond to issues and\n pull requests, fix bugs, and add capabilities. To gain more\n developers trust, maintain the releases section on your code\n repository and make sure to describe the changes between different\n releases. You may consider to link the libraries you’ve published\n with your code repository.\n </ListItem>\n\n <ListItem>\n <strong>AWS Partner Network (APN) badge.</strong> If you’re an AWS\n partner and you are publishing a library for your offering, please\n reach out to us and we will be happy to add a badge to your\n libraries with your company’s name.\n </ListItem>\n\n <ListItem>\n <strong>\n Enable support for multiple programming languages.\n </strong>{\" \"}\n Make your library usable by a broader set of users and increase\n its value to the ecosystem. Starting with your library written in\n TypeScript, JSII will create packages in the other CDK programming\n languages. Construct Hub will then automatically generate API\n reference and transliterate code samples. All you need to do is to\n follow the instructions under *“Q: How can I add my construct to\n Construct Hub?”.*\n </ListItem>\n </OrderedList>\n </FAQItem>\n\n <FAQItem question=\"What are the best practices for writing a developer-friendly README file?\">\n <Text>\n Developer-friendly READMEs help readers quickly understand your\n library’s relevance to their needs and its unique value in\n comparison to similar libraries on the Construct Hub. Below is a\n suggestion for a README file structure:\n </Text>\n\n <UnorderedList sx={{ li: { mt: 4 } }}>\n <ListItem>\n <strong>State and maturity of the library.</strong> Start your\n READMEs with helpful badges like{\" \"}\n <FAQLink href=\"https://www.npmjs.com/package/cdk-codepipeline-badge-notification\">\n CDK pipelines badges\n </FAQLink>\n . It will help users see the state of your package.\n </ListItem>\n\n <ListItem>\n <strong>Short description</strong>. What does this library do?\n Which use case does it solve? Which technologies and services does\n it use or support?\n </ListItem>\n\n <ListItem>\n <strong>What is unique about this library?</strong> Help readers\n quickly find the right library for their needs by stating its\n special advantages right up front. How does it compare to other\n libraries addressing the same need or that use the same\n technologies and services? You don’t need an explicit “us vs.\n them” feature checklist; just make sure you communicate your\n library’s unique value.\n </ListItem>\n\n <ListItem>\n <strong>Code samples.</strong> Include as many complete and\n working code samples as you can to help developers quickly\n understand how they can use your library. Some developers start\n reading code samples before anything else. Write your code samples\n in TypeScript, and Construct Hub will transliterate them to the\n other programming languages your library supports. A good practice\n is to include a minimal code sample of how to use your library in\n the first page of your README.\n </ListItem>\n\n <ListItem>\n <strong>Author information.</strong> Share information about you,\n other packages you’ve published, and additional helpful links that\n can improve your credibility with readers.\n </ListItem>\n\n <ListItem>\n <strong>License and support.</strong> Include a “License” and\n “Contributing” sections that invite users to contribute via links\n to your source code repository and issue tracker. (Construct Hub\n provides “License” and “Provide Feedback” in your library’s\n package page, but it’s convenient to have them in the README too.)\n </ListItem>\n\n <ListItem>\n <strong>Diagrams.</strong> Diagrams always help readers quickly\n understand what a library does. Consider adding diagrams for\n libraries that create multiple services that work together.\n </ListItem>\n\n <ListItem>\n <strong>Explanatory videos.</strong> Consider sharing links to\n videos that can help potential customers engage with your library.\n </ListItem>\n\n <ListItem>\n <strong>Absolute links vs. relative.</strong> Use absolute links\n (those that start with http:// or https://) and not relative\n links. Relative links are prone to breaking when the content is\n shared elsewhere.\n </ListItem>\n </UnorderedList>\n </FAQItem>\n\n <FAQItem question=\"Why isn’t my package displayed on Construct Hub?\">\n <Text>\n Construct Hub includes publicly-available constructs that are\n JSII-compatible and that were published to the npm Registry with a\n permissive open-source license and a CDK keyword: aws-cdk, cdk8s, or\n cdktf. If you believe your package qualifies, but it does not appear\n in Construct Hub, please check the following:\n </Text>\n <UnorderedList sx={{ li: { my: 4 } }}>\n <ListItem>\n You are using JSII to compile your project. When you successfully\n build your project with jsii, a <code>.jsii</code> file should get\n created in the root of your project. See the{\" \"}\n <FAQLink href=\"https://aws.github.io/jsii/user-guides/#library-author-guide\">\n JSII Library Author Guide\n </FAQLink>{\" \"}\n for more information about setting up JSII.\n </ListItem>\n <ListItem>\n Your packaged library includes the <code>.jsii</code> file. If you\n have a <code>.npmignore</code> file, make sure it does not ignore{\" \"}\n <code>.jsii</code>. (You can add &quot;<code>!.jsii</code>\n &quot; to specify it <em>should</em> be included in the packaged\n library.) If you are using the <code>files</code> field in{\" \"}\n <code>package.json</code>, make sure it includes &quot;\n <code>.jsii</code>&quot; (this list takes precedence over{\" \"}\n <code>.npmignore</code>).\n </ListItem>\n </UnorderedList>\n <Text>\n If your package still does not appear in Construct Hub, please raise\n an issue{\" \"}\n <FAQLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n here\n </FAQLink>\n .\n </Text>\n </FAQItem>\n\n <FAQItem question=\"Can I update my package after it has been displayed?\">\n <Text>\n Yes, you can and should! After you publish a new valid version to\n the public npm Registry, it should appear on Construct Hub in about\n 30 minutes.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I report a bug or contribute code to a construct?\">\n <Text>\n Each package is owned by its publisher, so contributions, such as\n bug reports and pull requests, should be made via the repository\n link provided by the publisher. You may press the ‘Provide feedback’\n link at the package page to open a new issue in at the package’s\n repository.\n </Text>\n </FAQItem>\n\n <FAQItem question=\"How can I participate in link the Construct Hub community?\">\n Construct Hub is itself an open-source construct! Join the{\" \"}\n <FAQLink href=\"https://github.com/cdklabs/construct-hub\">\n Construct Hub GitHub community\n </FAQLink>\n . You are also welcome to join the #construct-hub-dev channel in the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">\n CDK community Slack workspace\n </FAQLink>\n </FAQItem>\n\n <FAQItem question=\"Is there a Slack channel for the CDK community?\">\n <Text>\n Please join the{\" \"}\n <FAQLink href=\"https://cdk.dev/\">CDK Slack channel</FAQLink>. This\n Slack channel is managed by the CDK community, for the CDK\n community.\n </Text>\n </FAQItem>\n </Accordion>\n </FAQ>\n </Page>\n);\n"],"names":["FAQ","_ref","children","_jsxs","Box","bg","color","h","w","_jsx","py","width","FAQHeading","Heading","as","mx","textAlign","FAQItem","question","AccordionItem","AccordionButton","flex","ml","size","AccordionIcon","AccordionPanel","px","Text","fontSize","sx","p","marginTop","marginBottom","FAQLink","href","ExternalLink","hasWarning","textDecoration","FAQSection","heading","my","Accordion","allowMultiple","FAQSections","accordionProps","_objectWithoutProperties","_excluded","_objectSpread","pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","title","description","formattedTitle","concat","_Fragment","Helmet","process","content","charSet","map","_ref2","url","mimeType","rel","type","property","key","data","useConfig","Contribute","allowToggle","defaultIndex","CONSTRUCT_HUB_REPO_URL","OrderedList","li","mt","ListItem","UnorderedList"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/375.13317e2f.chunk.js","mappings":"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","sources":["constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","components/Picture/Picture.tsx","views/NotFound/NotFound.tsx","../node_modules/@chakra-ui/image/dist/chakra-ui-image.esm.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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import 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 { Box, HTMLChakraProps, forwardRef, Image } from \"@chakra-ui/react\";\n\nexport interface PictureProps extends HTMLChakraProps<\"img\"> {\n alt: string;\n src: string;\n sources?: {\n media?: string;\n srcSet: string;\n }[];\n}\n\nexport const Picture = forwardRef<PictureProps, \"img\">(\n ({ sources, ...props }, ref) => (\n <Box as=\"picture\">\n {sources?.map((source, idx) => (\n <source key={idx} media={source.media} srcSet={source.srcSet} />\n ))}\n <Image ref={ref} {...props} />\n </Box>\n )\n);\n\nPicture.displayName = \"Picture\";\n","import { Button, Center, Flex } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Page } from \"../../components/Page\";\nimport { Picture } from \"../../components/Picture\";\n\nconst bgSources = {\n optimal: [\n { media: \"(max-width:1024px)\", srcSet: \"/assets/404-hive@50.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.png\" },\n ],\n fallback: \"/assets/404-hive@50.png\",\n};\n\nexport const NotFound: FunctionComponent = () => {\n return (\n <Page\n meta={{\n title: \"Not Found\",\n description: \"Oops! The page you were looking for does not exist\",\n }}\n pageName=\"notFound\"\n >\n <Center h=\"100%\" position=\"relative\" w=\"100%\">\n <Picture\n alt=\"\"\n inset={0}\n position=\"absolute\"\n sources={bgSources.optimal}\n src={bgSources.fallback}\n zIndex=\"hide\"\n />\n <Flex align=\"center\" direction=\"column\" justify=\"center\">\n <Picture\n alt=\"404 Image\"\n sources={[{ srcSet: \"/assets/robot.webp\" }]}\n src=\"/assets/robot.png\"\n />\n <Button as={Link} colorScheme=\"brand\" to=\"/\">\n Take Me Home\n </Button>\n </Flex>\n </Center>\n </Page>\n );\n};\n","import { forwardRef, chakra } from '@chakra-ui/system';\nimport { omit, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSafeLayoutEffect } from '@chakra-ui/hooks';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\n/**\n * React hook that loads an image in the browser,\n * and lets us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? <img src=\"image.png\" /> : <Placeholder />\n * }\n * ```\n */\nfunction useImage(props) {\n var loading = props.loading,\n src = props.src,\n srcSet = props.srcSet,\n onLoad = props.onLoad,\n onError = props.onError,\n crossOrigin = props.crossOrigin,\n sizes = props.sizes,\n ignoreFallback = props.ignoreFallback;\n\n var _useState = useState(\"pending\"),\n status = _useState[0],\n setStatus = _useState[1];\n\n useEffect(function () {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n var imageRef = useRef();\n var load = useCallback(function () {\n if (!src) return;\n flush();\n var img = new Image();\n img.src = src;\n if (crossOrigin) img.crossOrigin = crossOrigin;\n if (srcSet) img.srcset = srcSet;\n if (sizes) img.sizes = sizes;\n if (loading) img.loading = loading;\n\n img.onload = function (event) {\n flush();\n setStatus(\"loaded\");\n onLoad == null ? void 0 : onLoad(event);\n };\n\n img.onerror = function (error) {\n flush();\n setStatus(\"failed\");\n onError == null ? void 0 : onError(error);\n };\n\n imageRef.current = img;\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading]);\n\n var flush = function flush() {\n if (imageRef.current) {\n imageRef.current.onload = null;\n imageRef.current.onerror = null;\n imageRef.current = null;\n }\n };\n\n useSafeLayoutEffect(function () {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined;\n\n if (status === \"loading\") {\n load();\n }\n\n return function () {\n flush();\n };\n }, [status, load, ignoreFallback]);\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n\n return ignoreFallback ? \"loaded\" : status;\n}\n\nvar _excluded = [\"htmlWidth\", \"htmlHeight\", \"alt\"],\n _excluded2 = [\"fallbackSrc\", \"fallback\", \"src\", \"srcSet\", \"align\", \"fit\", \"loading\", \"ignoreFallback\", \"crossOrigin\"];\nvar NativeImage = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var htmlWidth = props.htmlWidth,\n htmlHeight = props.htmlHeight,\n alt = props.alt,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"img\", _extends({\n width: htmlWidth,\n height: htmlHeight,\n ref: ref,\n alt: alt\n }, rest));\n});\n\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\nvar Image$1 = /*#__PURE__*/forwardRef(function (props, ref) {\n var fallbackSrc = props.fallbackSrc,\n fallback = props.fallback,\n src = props.src,\n srcSet = props.srcSet,\n align = props.align,\n fit = props.fit,\n loading = props.loading,\n ignoreFallback = props.ignoreFallback,\n crossOrigin = props.crossOrigin,\n rest = _objectWithoutPropertiesLoose(props, _excluded2);\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n */\n\n\n var shouldIgnore = loading != null || ignoreFallback || fallbackSrc === undefined && fallback === undefined; // if the user doesn't provide any kind of fallback we should ignore it\n\n var status = useImage(_extends({}, props, {\n ignoreFallback: shouldIgnore\n }));\n\n var shared = _extends({\n ref: ref,\n objectFit: fit,\n objectPosition: align\n }, shouldIgnore ? rest : omit(rest, [\"onError\", \"onLoad\"]));\n\n if (status !== \"loaded\") {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback;\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n className: \"chakra-image__placeholder\",\n src: fallbackSrc\n }, shared));\n }\n\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n src: src,\n srcSet: srcSet,\n crossOrigin: crossOrigin,\n loading: loading,\n className: \"chakra-image\"\n }, shared));\n});\n\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\nvar Img = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n ref: ref,\n as: NativeImage,\n className: \"chakra-image\"\n }, props));\n});\n\nif (__DEV__) {\n Image$1.displayName = \"Image\";\n}\n\nexport { Image$1 as Image, Img, useImage };\n"],"names":["pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","_ref","children","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","title","description","formattedTitle","concat","_jsxs","_Fragment","Helmet","process","_jsx","content","charSet","map","_ref2","url","mimeType","href","rel","type","property","key","data","useConfig","Picture","forwardRef","ref","sources","props","_objectWithoutProperties","_excluded","Box","as","source","idx","media","srcSet","Image","_objectSpread","displayName","bgSources","optimal","fallback","NotFound","Center","h","position","w","alt","inset","src","zIndex","Flex","align","direction","justify","Button","Link","colorScheme","to","_extends","Object","assign","target","i","arguments","length","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","_excluded2","NativeImage","React","htmlWidth","htmlHeight","rest","width","height","Image$1","fallbackSrc","fit","loading","ignoreFallback","crossOrigin","shouldIgnore","undefined","status","onLoad","onError","sizes","_useState","useState","setStatus","imageRef","useRef","load","useCallback","flush","img","srcset","onload","onerror","error","current","useSafeLayoutEffect","useImage","shared","objectFit","objectPosition","omit","chakra","className","__DEV__"],"sourceRoot":""}
1
+ {"version":3,"file":"static/js/375.cc586f01.chunk.js","mappings":"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","sources":["constants/pageInfo.ts","components/Page/Page.tsx","hooks/useConfigValue/useConfigValue.ts","components/Picture/Picture.tsx","views/NotFound/NotFound.tsx","../node_modules/@chakra-ui/image/dist/chakra-ui-image.esm.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\";\nimport { useConfigValue } from \"../../hooks/useConfigValue\";\n\nexport interface PageProps {\n pageName: keyof typeof pageInfo;\n meta: {\n suffix?: boolean;\n title: string;\n description: string;\n };\n}\n\n// Should be the same as the \"real\" CSP, except most things come from HTTP\n// instead of HTTPS (because it is protocol-relative, and the dev site is\n// served over plain HTTP).\nconst csp = [\n \"default-src 'self' 'unsafe-inline' http://*.awsstatic.com;\",\n \"connect-src 'self' https://*.shortbread.aws.dev http://*.shortbread.aws.dev http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"frame-src http://aws.demdex.net http://dpm.demdex.net;\",\n \"img-src 'self' https://* http://a0.awsstatic.com/ http://amazonwebservices.d2.sc.omtrdc.net http://aws.demdex.net http://dpm.demdex.net http://cm.everesttech.net;\",\n \"object-src 'none';\",\n \"style-src 'self' 'unsafe-inline';\",\n].join(\" \");\n\nexport const Page: FunctionComponent<PageProps> = ({\n children,\n meta,\n pageName,\n}) => {\n const trackPageView = usePageView(pageInfo[pageName]);\n\n useEffect(() => {\n trackPageView();\n }, [trackPageView]);\n\n const feedUrls = useConfigValue(\"feeds\") || [];\n const { suffix = true, title, description } = meta;\n const formattedTitle = suffix ? `${title} - Construct Hub` : title;\n\n return (\n <>\n <Helmet>\n {process.env.NODE_ENV === \"development\" && (\n <meta content={csp} httpEquiv=\"Content-Security-Policy\" />\n )}\n\n <meta content=\"width=device-width, initial-scale=1\" name=\"viewport\" />\n <meta charSet=\"utf-8\" />\n {feedUrls.map(({ url, mimeType }) => (\n <link href={url} key={url} rel=\"alternate\" type={mimeType} />\n ))}\n\n <title>{formattedTitle}</title>\n <meta content={formattedTitle} property=\"og:title\" />\n <meta content={formattedTitle} name=\"twitter:title\" />\n <meta content=\"summary\" name=\"twitter:card\" />\n\n <meta content={description} name=\"description\" />\n <meta content={description} property=\"og:description\" />\n <meta content={description} name=\"twitter:description\" />\n </Helmet>\n {children}\n </>\n );\n};\n","import 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 { Box, HTMLChakraProps, forwardRef, Image } from \"@chakra-ui/react\";\n\nexport interface PictureProps extends HTMLChakraProps<\"img\"> {\n alt: string;\n src: string;\n sources?: {\n media?: string;\n srcSet: string;\n }[];\n}\n\nexport const Picture = forwardRef<PictureProps, \"img\">(\n ({ sources, ...props }, ref) => (\n <Box as=\"picture\">\n {sources?.map((source, idx) => (\n <source key={idx} media={source.media} srcSet={source.srcSet} />\n ))}\n <Image ref={ref} {...props} />\n </Box>\n )\n);\n\nPicture.displayName = \"Picture\";\n","import { Button, Center, Flex } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Page } from \"../../components/Page\";\nimport { Picture } from \"../../components/Picture\";\n\nconst bgSources = {\n optimal: [\n { media: \"(max-width:1024px)\", srcSet: \"/assets/404-hive@50.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.webp\" },\n { media: \"(min-width:1024px)\", srcSet: \"/assets/404-hive@100.png\" },\n ],\n fallback: \"/assets/404-hive@50.png\",\n};\n\nexport const NotFound: FunctionComponent = () => {\n return (\n <Page\n meta={{\n title: \"Not Found\",\n description: \"Oops! The page you were looking for does not exist\",\n }}\n pageName=\"notFound\"\n >\n <Center h=\"100%\" position=\"relative\" w=\"100%\">\n <Picture\n alt=\"\"\n inset={0}\n position=\"absolute\"\n sources={bgSources.optimal}\n src={bgSources.fallback}\n zIndex=\"hide\"\n />\n <Flex align=\"center\" direction=\"column\" justify=\"center\">\n <Picture\n alt=\"404 Image\"\n sources={[{ srcSet: \"/assets/robot.webp\" }]}\n src=\"/assets/robot.png\"\n />\n <Button as={Link} colorScheme=\"brand\" to=\"/\">\n Take Me Home\n </Button>\n </Flex>\n </Center>\n </Page>\n );\n};\n","import { forwardRef, chakra } from '@chakra-ui/system';\nimport { omit, __DEV__ } from '@chakra-ui/utils';\nimport * as React from 'react';\nimport { useState, useEffect, useRef, useCallback } from 'react';\nimport { useSafeLayoutEffect } from '@chakra-ui/hooks';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\n/**\n * React hook that loads an image in the browser,\n * and lets us know the `status` so we can show image\n * fallback if it is still `pending`\n *\n * @returns the status of the image loading progress\n *\n * @example\n *\n * ```jsx\n * function App(){\n * const status = useImage({ src: \"image.png\" })\n * return status === \"loaded\" ? <img src=\"image.png\" /> : <Placeholder />\n * }\n * ```\n */\nfunction useImage(props) {\n var loading = props.loading,\n src = props.src,\n srcSet = props.srcSet,\n onLoad = props.onLoad,\n onError = props.onError,\n crossOrigin = props.crossOrigin,\n sizes = props.sizes,\n ignoreFallback = props.ignoreFallback;\n\n var _useState = useState(\"pending\"),\n status = _useState[0],\n setStatus = _useState[1];\n\n useEffect(function () {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n var imageRef = useRef();\n var load = useCallback(function () {\n if (!src) return;\n flush();\n var img = new Image();\n img.src = src;\n if (crossOrigin) img.crossOrigin = crossOrigin;\n if (srcSet) img.srcset = srcSet;\n if (sizes) img.sizes = sizes;\n if (loading) img.loading = loading;\n\n img.onload = function (event) {\n flush();\n setStatus(\"loaded\");\n onLoad == null ? void 0 : onLoad(event);\n };\n\n img.onerror = function (error) {\n flush();\n setStatus(\"failed\");\n onError == null ? void 0 : onError(error);\n };\n\n imageRef.current = img;\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading]);\n\n var flush = function flush() {\n if (imageRef.current) {\n imageRef.current.onload = null;\n imageRef.current.onerror = null;\n imageRef.current = null;\n }\n };\n\n useSafeLayoutEffect(function () {\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's bail out.\n */\n if (ignoreFallback) return undefined;\n\n if (status === \"loading\") {\n load();\n }\n\n return function () {\n flush();\n };\n }, [status, load, ignoreFallback]);\n /**\n * If user opts out of the fallback/placeholder\n * logic, let's just return 'loaded'\n */\n\n return ignoreFallback ? \"loaded\" : status;\n}\n\nvar _excluded = [\"htmlWidth\", \"htmlHeight\", \"alt\"],\n _excluded2 = [\"fallbackSrc\", \"fallback\", \"src\", \"srcSet\", \"align\", \"fit\", \"loading\", \"ignoreFallback\", \"crossOrigin\"];\nvar NativeImage = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var htmlWidth = props.htmlWidth,\n htmlHeight = props.htmlHeight,\n alt = props.alt,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"img\", _extends({\n width: htmlWidth,\n height: htmlHeight,\n ref: ref,\n alt: alt\n }, rest));\n});\n\n/**\n * React component that renders an image with support\n * for fallbacks\n *\n * @see Docs https://chakra-ui.com/image\n */\nvar Image$1 = /*#__PURE__*/forwardRef(function (props, ref) {\n var fallbackSrc = props.fallbackSrc,\n fallback = props.fallback,\n src = props.src,\n srcSet = props.srcSet,\n align = props.align,\n fit = props.fit,\n loading = props.loading,\n ignoreFallback = props.ignoreFallback,\n crossOrigin = props.crossOrigin,\n rest = _objectWithoutPropertiesLoose(props, _excluded2);\n /**\n * Defer to native `img` tag if `loading` prop is passed\n * @see https://github.com/chakra-ui/chakra-ui/issues/1027\n */\n\n\n var shouldIgnore = loading != null || ignoreFallback || fallbackSrc === undefined && fallback === undefined; // if the user doesn't provide any kind of fallback we should ignore it\n\n var status = useImage(_extends({}, props, {\n ignoreFallback: shouldIgnore\n }));\n\n var shared = _extends({\n ref: ref,\n objectFit: fit,\n objectPosition: align\n }, shouldIgnore ? rest : omit(rest, [\"onError\", \"onLoad\"]));\n\n if (status !== \"loaded\") {\n /**\n * If user passed a custom fallback component,\n * let's render it here.\n */\n if (fallback) return fallback;\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n className: \"chakra-image__placeholder\",\n src: fallbackSrc\n }, shared));\n }\n\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n as: NativeImage,\n src: src,\n srcSet: srcSet,\n crossOrigin: crossOrigin,\n loading: loading,\n className: \"chakra-image\"\n }, shared));\n});\n\n/**\n * Fallback component for most SSR users who want to use the native `img` with\n * support for chakra props\n */\nvar Img = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(chakra.img, _extends({\n ref: ref,\n as: NativeImage,\n className: \"chakra-image\"\n }, props));\n});\n\nif (__DEV__) {\n Image$1.displayName = \"Image\";\n}\n\nexport { Image$1 as Image, Img, useImage };\n"],"names":["pageInfo","contribute","event","name","home","faq","packageProfile","search","siteTerms","notFound","page","pageType","join","Page","_ref","children","meta","pageName","trackPageView","usePageView","useEffect","feedUrls","useConfigValue","_meta$suffix","suffix","title","description","formattedTitle","concat","_jsxs","_Fragment","Helmet","process","_jsx","content","charSet","map","_ref2","url","mimeType","href","rel","type","property","key","data","useConfig","Picture","forwardRef","ref","sources","props","_objectWithoutProperties","_excluded","Box","as","source","idx","media","srcSet","Image","_objectSpread","displayName","bgSources","optimal","fallback","NotFound","Center","h","position","w","alt","inset","src","zIndex","Flex","align","direction","justify","Button","Link","colorScheme","to","_extends","Object","assign","target","i","arguments","length","prototype","hasOwnProperty","call","apply","this","_objectWithoutPropertiesLoose","excluded","sourceKeys","keys","indexOf","_excluded2","NativeImage","React","htmlWidth","htmlHeight","rest","width","height","Image$1","fallbackSrc","fit","loading","ignoreFallback","crossOrigin","shouldIgnore","undefined","status","onLoad","onError","sizes","_useState","useState","setStatus","imageRef","useRef","load","useCallback","flush","img","srcset","onload","onerror","error","current","useSafeLayoutEffect","useImage","shared","objectFit","objectPosition","omit","chakra","className","__DEV__"],"sourceRoot":""}