construct-hub-webapp 0.1.1468 → 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/js/421.1cc274c5.chunk.js","mappings":"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","sources":["components/Highlight/Highlight.tsx","components/LanguageSupportTooltip/LanguageSupportTooltip.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","components/Picture/Picture.tsx","views/NotFound/NotFound.tsx","views/Package/constants.ts","util/sanitize-anchor.ts","views/Package/util.ts","api/package/util.ts","api/package/docs.ts","api/versions/index.ts","views/Package/PackageState.tsx","hooks/useVersions/useVersions.ts","api/package/assembly.ts","api/package/metadata.ts","views/Package/testIds.ts","views/Package/DependenciesList.tsx","icons/GithubIcon.tsx","views/Package/FeedbackLinks.tsx","views/Package/ChooseSubmodule/SearchInput.tsx","views/Package/ChooseSubmodule/SearchModal.tsx","views/Package/ChooseSubmodule/ChooseSubmodule.tsx","components/NavTree/NavItemWrapper.tsx","components/NavTree/NavItem.tsx","components/NavTree/NavTree.tsx","views/Package/NavDrawer.tsx","views/Package/DocsError.tsx","components/CopyButton/CopyButton.tsx","components/Code/MultiLineRenderer.tsx","components/Code/SingleLineRenderer.tsx","components/Code/Code.tsx","components/Markdown/Code.tsx","components/Markdown/Headings.tsx","components/Markdown/Table.tsx","components/Markdown/testIds.ts","components/Markdown/Markdown.tsx","components/Markdown/Text.tsx","components/Markdown/Hr.tsx","components/Markdown/Img.tsx","components/Markdown/List.tsx","views/Package/PackageReadme.tsx","views/Package/PackageDocsError.tsx","views/Package/PackageTypeDocs.tsx","views/Package/PrimaryDocNavigation.tsx","views/Package/useIntersectingHeader/util.ts","views/Package/useSectionItems/util.ts","views/Package/useSectionItems/useSectionItems.ts","views/Package/useIntersectingHeader/useIntersectingHeader.ts","views/Package/SecondaryDocNavigation.tsx","views/Package/StickyNavContainer.tsx","views/Package/PackageDocs.tsx","views/Package/PackageHeader/ToggleButton.tsx","components/LicenseLink/LicenseLink.tsx","constants/dates.ts","views/Package/PackageHeader/Details.tsx","util/css.ts","views/Package/PackageHeader/HeaderContainer.tsx","views/Package/PackageHeader/SelectVersion.tsx","views/Package/PackageHeader/Heading.tsx","views/Package/PackageHeader/Install.tsx","views/Package/LanguageBar.tsx","views/Package/LanguageSelection.tsx","views/Package/PackageHeader/PackageHeader.tsx","views/Package/ShareInfo.tsx","views/Package/PackageLayout.tsx","views/Package/Package.tsx","views/PackageLatest/PackageLatest.tsx","views/Packages/Packages.tsx"],"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","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","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 { eventName } from \"../../contexts/Analytics/util\";\n\nconst packageEvent: typeof eventName = (...e) =>\n eventName(\"Package Page\", ...e);\n\nexport const PACKAGE_ANALYTICS = {\n SCOPE: packageEvent(),\n\n SELECT_VERSION: packageEvent(\"Select Version\"),\n\n CDK_BADGE: {\n eventName: (badge: string) => packageEvent(\"CDK Badge\", badge),\n },\n\n KEYWORD: {\n eventName: (kw: string) => packageEvent(\"Keyword\", kw),\n },\n\n LANGUAGE: {\n eventName: (lang: string) => packageEvent(\"Language\", lang),\n },\n\n DOCUMENTATION: {\n TAB: packageEvent(\"Documentation\", \"Tab\"),\n },\n\n DEPENDENCIES: {\n TAB: packageEvent(\"Dependencies\", \"Tab\"),\n },\n\n GITHUB_BADGE: {\n TAB: packageEvent(\"Badge\", \"Tab\"),\n },\n\n FEEDBACK: {\n PUBLISHER: packageEvent(\"Feedback\", \"Publisher\"),\n CONSTRUCT_HUB: packageEvent(\"Feedback\", \"Construct Hub\"),\n ABUSE: packageEvent(\"Feedback\", \"Abuse\"),\n },\n};\n\nexport const API_URL_RESOURCE = \"api\";\nexport const README_ITEM_ID = \"Readme\";\nexport const DOCS_CONTAINER_ID = \"docs-container\";\n","export const sanitize = (input: string): string => {\n return input\n .toLowerCase()\n .replace(/[^a-zA-Z0-9 ]/g, \"\")\n .replace(/ /g, \"-\");\n};\n","import emoji from \"node-emoji\";\nimport { API_URL_RESOURCE, README_ITEM_ID } from \"./constants\";\nimport { Language } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { sanitize } from \"../../util/sanitize-anchor\";\n\nexport interface MenuItem {\n id: string;\n path?: string;\n title: string;\n children: MenuItem[];\n level: number;\n}\n\nexport interface Types {\n [id: string]: {\n title: string;\n content: string;\n };\n}\n\n/**\n * Recursively insert menu items into appropriate parent's `children` array.\n */\nconst appendMenuItem = (items: MenuItem[], item: MenuItem): MenuItem[] => {\n const last = items[items.length - 1];\n\n if (last && last.level < item.level) {\n last.children = appendMenuItem(last.children, item);\n return items;\n }\n\n items.push(item);\n return items;\n};\n\n/**\n * Split markdown string on header lines. Accepts a `maxLevel` to only\n * parse to a specified level. Defaults to markdown maximum of `6`\n */\nconst splitOnHeaders = (md: string, maxLevel: number = 6): string[] => {\n // first matches code blocks to avoid matching any lines starting with '#'\n // inside of an escaped string.\n const regex = new RegExp(\n `(\\`{3}[\\\\s\\\\S]*?(?:\\`{3})|^#{1,${maxLevel}}[^#].*)`,\n \"gm\"\n );\n\n return (\n md\n .split(regex)\n // concatenate non-header content back together\n .reduce((accum: string[], str: string) => {\n const prev = accum[accum.length - 1];\n if (str.startsWith(\"#\") || prev?.startsWith(\"#\")) {\n return [...accum, str];\n }\n\n // Append blocks back to each other when neither are headers\n // This happens with code blocks.\n accum[accum.length - 1] += str;\n return accum;\n }, [])\n );\n};\n\n/**\n * Extract relevant data from markdown string for use as menu item. Attempts\n * to parse known data attributes of `title` and `id` while defaulting to use\n * the raw heading value as the default for both if data attributes are not\n * present.\n */\nconst getHeaderAttributes = (hdr: string): { id: string; title: string } => {\n const attrStrings: string[] =\n hdr.match(/(\\S+)\\s*=\\s*(\\\"?)([^\"]*)(\\2|\\s|$)/g) ?? [];\n const attrs: { [key: string]: string } = attrStrings.reduce((accum, str) => {\n const [key, value] = str.split(\"=\");\n const [_, parsedValue] = /['\"](.*?)['\"]/.exec(value) ?? [];\n\n return {\n ...accum,\n [key]: parsedValue,\n };\n }, {});\n\n // Use raw title for items that don't specify data attributes, like readme\n // headers.\n const [_, rawTitle] =\n /^#*\\s*(?:<a\\s.*?(?:\\/>|<\\/a>))?\\s*([^<]+?)\\s*(?:<|$)/.exec(hdr) ?? [\n hdr,\n hdr,\n ];\n const noLinkTitle = rawTitle.replace(\n // Matches [label](text) and [label][text], replaces with just label.\n /\\[([^\\]]+)\\](?:\\([^)]+\\)|\\[[^\\]]+\\])/g,\n \"$1\"\n );\n const wEmoji = noLinkTitle.replace(\n /:\\+1:|:-1:|:[\\w-]+:/g,\n (match: string): string => {\n return emoji.get(match) ?? match;\n }\n );\n const title: string = attrs[\"data-heading-title\"] ?? wEmoji;\n const id = attrs[\"data-heading-id\"] ?? encodeURIComponent(sanitize(title));\n\n return { id, title };\n};\n\nconst normalizeTitle = (title: string): string => {\n if (title.endsWith(\".\") || title.endsWith(\":\")) {\n title = title.slice(0, -1);\n }\n return title;\n};\n\n/**\n * Accept's markdown document from jsii-docgen with readme and api reference\n * documentation and parses the content into a traversable map of menu items\n * and types. This allows splitting the rendering of the readme and each item\n * in the api reference.\n *\n * NOTE: currently does not support setext style headings in readme documents.\n */\nexport const parseMarkdownStructure = (\n input: string,\n {\n scope,\n language,\n name,\n version,\n submodule,\n }: {\n scope?: string;\n language: Language;\n name: string;\n version: string;\n submodule?: string;\n }\n): { readme: string; apiReference: Types; menuItems: MenuItem[] } => {\n const nameSegment = scope ? `${scope}/${name}` : `${name}`;\n const basePath = `/packages/${nameSegment}/v/${version}`;\n let query = `?${QUERY_PARAMS.LANGUAGE}=${language}`;\n if (submodule) {\n query += `&submodule=${submodule}`;\n }\n\n const separator =\n '# API Reference <span data-heading-title=\"API Reference\" data-heading-id=\"api-reference\"></span>';\n\n // split into readme and api reference\n const segments = input.split(separator);\n\n // Take the last chunk after the separator\n // segments.pop() always returns when length > 1;\n const apiReferenceStr = segments.length > 1 ? segments.pop()! : \"\";\n\n // Rejoin all the previous chunks in case the readme has the same Separator\n const readmeStr = segments.join(separator);\n\n //split each on headers\n const apiReferenceSplit = splitOnHeaders(apiReferenceStr, 3);\n const readmeSplit = splitOnHeaders(readmeStr);\n\n // Add back api reference title for use as menu item\n const apiReferenceParsed = [separator.trim(), ...(apiReferenceSplit ?? [])];\n const baseReadmePath = `${basePath}${query}`;\n let readmeChildren = readmeSplit.reduce((accum: MenuItem[], str: string) => {\n if (str.startsWith(\"#\")) {\n const { id, title } = getHeaderAttributes(str);\n const level = str.match(/(#)/gm)?.length ?? 1;\n\n const normalizedTitle = normalizeTitle(title);\n\n const menuItem = {\n level,\n id,\n title: normalizedTitle,\n // root package path plus hash for header on readme item\n path: `${baseReadmePath}#${id}`,\n children: [],\n };\n return appendMenuItem(accum, menuItem);\n }\n return accum;\n }, []);\n\n if (readmeChildren.length === 1) {\n readmeChildren = readmeChildren[0].children;\n }\n\n const readmeMenuItems = [\n {\n level: 1,\n id: README_ITEM_ID,\n title: \"Readme\",\n path: baseReadmePath,\n children: readmeChildren,\n },\n ];\n\n let menuItems: MenuItem[] = [...readmeMenuItems];\n const types: Types = {};\n\n const getApiPath = (id: string) => `${basePath}/api/${id}${query}`;\n let prevType: { id: string; title: string };\n let prevLevel: number;\n\n apiReferenceParsed?.forEach((str) => {\n const isHeader = str.match(/(^#{1,3}[^#].*)/g);\n const level = str.match(/(#)/gm)?.length ?? 1;\n\n if (isHeader?.length) {\n const { id, title } = getHeaderAttributes(str);\n\n // root package path plus type id segment\n // only level 3 headers are types in api reference\n const path = level === 3 ? getApiPath(id) : undefined;\n const menuItem = {\n level,\n id,\n title,\n children: [],\n ...(path ? { path } : {}),\n };\n\n menuItems = appendMenuItem(menuItems, menuItem);\n prevType = { id, title };\n prevLevel = level;\n } else if (prevLevel === 3) {\n types[prevType.id] = { title: prevType.title, content: str };\n }\n });\n\n return {\n readme: readmeStr,\n apiReference: types,\n menuItems,\n };\n};\n\nexport const isApiPath = (path: string) => {\n const parts = path.split(\"/\");\n return parts[parts.length - 2] === API_URL_RESOURCE;\n};\n","import { CatalogPackage, Packages } from \"./packages\";\nimport { API_PATHS } from \"../../constants/url\";\n\nexport const getFullPackageName = (name: string, scope?: string) => {\n return scope ? `${scope}/${name}` : name;\n};\n\nexport const getAssetsPath = (\n name: string,\n version: string,\n scope?: string\n) => {\n const prefix = `${API_PATHS.PACKAGES_PREFIX}/`;\n const body = getFullPackageName(name, scope);\n const suffix = `/v${version}`;\n return `${prefix}${body}${suffix}`;\n};\n\nexport const sanitizeVersion = (ver: string) => {\n let sanitized = ver;\n if (sanitized.startsWith(\"~\") || sanitized.startsWith(\"^\")) {\n sanitized = sanitized.substring(1);\n }\n return sanitized;\n};\n\nexport const findPackage = (\n catalog: Packages,\n pkg: string\n): CatalogPackage | undefined => {\n const packages = catalog.packages.filter((p) => p.name === pkg);\n\n // return the most recently published version\n if (packages.length > 1) {\n return packages.sort((p1, p2) => {\n const date1 = new Date(p1.metadata.date);\n const date2 = new Date(p2.metadata.date);\n return date2.getTime() - date1.getTime();\n })[0];\n }\n\n return packages[0];\n};\n","import type { Schema } from \"jsii-docgen\";\nimport { getAssetsPath } from \"./util\";\n\nconst getDocsSuffix = (\n language: string,\n extension: string,\n submodule?: string\n): string => {\n return `/docs-${submodule ? `${submodule}-` : \"\"}${language}.${extension}`;\n};\n\n/**\n * Fetch markdown docs of a specific package from the backend.\n */\nexport const fetchMarkdownDocs = async (\n name: string,\n version: string,\n language: string,\n scope?: string,\n submodule?: string\n): Promise<string> => {\n const docsSuffix = getDocsSuffix(language, \"md\", submodule);\n\n const markdownPath = `${getAssetsPath(name, version, scope)}${docsSuffix}`;\n const response = await fetch(markdownPath);\n if (!response.ok) {\n throw new Error(\n `Failed fetching documentation for ${markdownPath}: ${response.statusText}`\n );\n }\n\n // since CloudFront returns a 200 /index.html for missing documents,\n // we assert the expected docs content type to detect these errors.\n // TODO: switch to proper 404 responses in this case (requires backend changes)\n const expectedContentType = \"text/markdown\";\n const contentType = response.headers.get(\"Content-Type\");\n\n // we check 'includes' and not 'equal' because the content type contains\n // charset as well (e.g text/markdown; charset=UTF-8)\n if (!contentType || !contentType.includes(expectedContentType)) {\n throw new Error(\n `Invalid content type: ${contentType}. Expected ${expectedContentType}\"`\n );\n }\n return response.text();\n};\n\n/**\n * Fetch JSON docs of a specific package from the backend.\n */\nexport const fetchJsonDocs = async (\n name: string,\n version: string,\n language: string,\n scope?: string,\n submodule?: string\n): Promise<Schema> => {\n const docsSuffix = getDocsSuffix(language, \"json\", submodule);\n\n const jsonPath = `${getAssetsPath(name, version, scope)}${docsSuffix}`;\n const response = await fetch(jsonPath);\n if (!response.ok) {\n throw new Error(\n `Failed fetching documentation for ${jsonPath}: ${response.statusText}`\n );\n }\n\n // since CloudFront returns a 200 /index.html for missing documents,\n // we assert the expected docs content type to detect these errors.\n // TODO: switch to proper 404 responses in this case (requires backend changes)\n const expectedContentType = \"application/json\";\n const contentType = response.headers.get(\"Content-Type\");\n\n // we check 'includes' and not 'equal' because the content type contains\n // charset as well (e.g text/markdown; charset=UTF-8)\n if (!contentType || !contentType.includes(expectedContentType)) {\n throw new Error(\n `Invalid content type: ${contentType}. Expected ${expectedContentType}\"`\n );\n }\n\n return response.json();\n};\n","import { API_PATHS } from \"../../constants/url\";\n\nconst NOT_FOUND = \"NOT_FOUND\";\n\n/**\n * Package versions.\n */\nexport interface PackageVersions {\n readonly updated: string;\n readonly packages: { [key: string]: string[] };\n}\n\nconst defaultVersions = { packages: {}, updated: NOT_FOUND };\n\nexport const fetchVersions = async (): Promise<PackageVersions> => {\n const response = await fetch(API_PATHS.ALL_VERSIONS);\n\n if (!response.ok) {\n console.error(response.statusText);\n console.warn(\"Could not retrieve package versions. Using empty data.\");\n return defaultVersions;\n }\n\n return response.json().catch((err) => {\n console.error(err);\n console.warn(\"Error in package versions response. Using empty data.\");\n return defaultVersions;\n });\n};\n","import type { Assembly } from \"@jsii/spec\";\nimport type { Schema } from \"jsii-docgen\";\nimport { createContext, FunctionComponent, useContext, useMemo } from \"react\";\nimport { useQuery, UseQueryResult } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { Types, MenuItem, parseMarkdownStructure } from \"./util\";\nimport { fetchAssembly } from \"../../api/package/assembly\";\nimport { fetchJsonDocs, fetchMarkdownDocs } from \"../../api/package/docs\";\nimport { fetchMetadata, Metadata } from \"../../api/package/metadata\";\nimport { Language, languageFilename } from \"../../constants/languages\";\nimport { QUERY_PARAMS } from \"../../constants/url\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\nimport { useQueryParams } from \"../../hooks/useQueryParams\";\nimport { useVersions } from \"../../hooks/useVersions\";\nimport { NotFound } from \"../NotFound\";\n\ninterface PathParams {\n name: string;\n scope?: string;\n version: string;\n}\n\ninterface PackageState {\n apiReference?: Types;\n assembly: UseQueryResult<Assembly>;\n hasDocs: boolean;\n hasError: boolean;\n isLoadingDocs: boolean;\n isSupported: boolean;\n language: Language;\n markdownDocs: UseQueryResult<string>;\n jsonDocs: UseQueryResult<Schema>;\n metadata: UseQueryResult<Metadata>;\n name: string;\n pageDescription: string;\n pageTitle: string;\n readme?: string;\n scope?: string;\n version: string;\n allVersions?: string[];\n menuItems: MenuItem[];\n}\n\nconst PackageStateContext = createContext<PackageState | undefined>(undefined);\n\n/**\n * Consumes shared page-leve data for components on the Package page\n */\nexport const usePackageState = () => {\n const state = useContext(PackageStateContext);\n\n if (!state) {\n throw new Error(\n \"This component must be a child of a <PackageStateProvider />\"\n );\n }\n\n return state;\n};\n\n/**\n * Provides shared page-level data to components on the Package page\n */\nexport const PackageStateProvider: FunctionComponent = ({ children }) => {\n const { name, scope, version }: PathParams = useParams();\n const id = `${scope}/${name}/v${version}`;\n const [language] = useLanguage();\n const q = useQueryParams();\n const submodule = q.get(QUERY_PARAMS.SUBMODULE) ?? \"\";\n\n const { data: versionData } = useVersions();\n const pkgName = scope ? `${scope}/${name}` : name;\n const allVersions = versionData?.packages[pkgName];\n\n const markdownDocs = useQuery(`${id}-docs-${language}-${submodule}-md`, () =>\n fetchMarkdownDocs(\n name,\n version,\n languageFilename[language],\n scope,\n submodule\n )\n );\n\n const jsonDocs = useQuery(`${id}-docs-${language}-${submodule}-json`, () =>\n fetchJsonDocs(name, version, languageFilename[language], scope, submodule)\n );\n\n const assembly = useQuery(`${id}-assembly`, () =>\n fetchAssembly(name, version, scope)\n );\n\n const metadata = useQuery(`${id}-metadata`, () =>\n fetchMetadata(name, version, scope)\n );\n\n const pageTitle = `${scope ? `${scope}/${name}` : name} ${version}`;\n\n const pageDescription = assembly.data?.description ?? \"\";\n\n const hasError = Boolean(\n markdownDocs.error || jsonDocs.error || assembly.error\n );\n\n const hasDocs = Boolean(\n !markdownDocs.isLoading &&\n !jsonDocs.isLoading &&\n !assembly.isLoading &&\n markdownDocs.data &&\n jsonDocs.data &&\n assembly.data\n );\n\n // This will also be true if it cannot be verified (assembly not there)\n const isSupported = Boolean(\n language === Language.TypeScript ||\n assembly.isLoading ||\n assembly.error ||\n assembly.data?.targets?.[language.toString()] != null\n );\n\n const isLoadingDocs = Boolean(\n !metadata.isLoading &&\n (assembly.isLoading || markdownDocs.isLoading || jsonDocs.isLoading)\n );\n\n const parsedMd = useMemo(() => {\n if (!markdownDocs.data) return { menuItems: [] };\n\n return parseMarkdownStructure(markdownDocs.data, {\n scope,\n name,\n version,\n language,\n submodule,\n });\n }, [markdownDocs.data, name, scope, version, language, submodule]);\n\n // Handle missing JSON for assembly\n if (assembly.error) {\n return <NotFound />;\n }\n\n return (\n <PackageStateContext.Provider\n value={{\n assembly: assembly,\n hasDocs,\n hasError,\n isLoadingDocs,\n isSupported,\n language,\n markdownDocs,\n jsonDocs,\n metadata: metadata,\n name,\n pageDescription,\n pageTitle,\n scope,\n version,\n allVersions,\n ...parsedMd,\n }}\n >\n {children}\n </PackageStateContext.Provider>\n );\n};\n","import { useQuery, UseQueryResult } from \"react-query\";\nimport { fetchVersions, PackageVersions } from \"../../api/versions\";\n\nexport type VersionsQuery = UseQueryResult<PackageVersions, Error | undefined>;\n\nexport const useVersions = () => {\n const versions: VersionsQuery = useQuery(\"Versions\", fetchVersions);\n return versions;\n};\n","import * as spec from \"@jsii/spec\";\nimport { getAssetsPath } from \"./util\";\nimport { API_PATHS } from \"../../constants/url\";\n\n// These fields are removed from assembly.json during processing to save space,\n// and we don't need them here in the client.\n// See https://github.com/cdklabs/construct-hub/pull/567\nexport type SlimAssembly = Omit<\n spec.Assembly,\n \"types\" | \"readme\" | \"dependencyClosure\"\n>;\n\n/**\n * Fetch assembly of a specific package from the backend.\n */\nexport const fetchAssembly = async (\n name: string,\n version: string,\n scope?: string\n): Promise<SlimAssembly> => {\n const assemblyPath = `${getAssetsPath(name, version, scope)}${\n API_PATHS.ASSEMBLY_SUFFIX\n }`;\n const response = await fetch(assemblyPath);\n if (!response.ok) {\n throw new Error(\n `Failed fetching assembly for ${assemblyPath}: ${response.statusText}`\n );\n }\n return response.json();\n};\n","import { getAssetsPath } from \"./util\";\nimport { CDKType } from \"../../constants/constructs\";\nimport { API_PATHS } from \"../../constants/url\";\nimport { PackageTagConfig } from \"../config\";\n\nexport interface ConstructFramework {\n name: CDKType;\n majorVersion?: number;\n}\n\nexport interface Metadata {\n /**\n * Describes the associated Construct framework for a library.\n * Back-end will introduce a new metadata.constructFrameworks property to replace metadata.constructFramework\n * @deprecated Use constructFrameworks instead\n */\n constructFramework?: Partial<ConstructFramework>;\n /**\n * Describes the associated Construct frameworks for a library.\n * Typically, libraries will be associated with a single framework, though some have no\n * association or multiple associations.\n */\n constructFrameworks?: ConstructFramework[];\n date: string;\n links?: {\n npm: string;\n };\n packageLinks?: {\n [key: string]: string;\n };\n packageTags?: PackageTagConfig[];\n}\n\n/**\n * Fetch metadata of a specific package from the backend.\n */\nexport const fetchMetadata = async (\n name: string,\n version: string,\n scope?: string\n): Promise<Metadata> => {\n let sanitizedVersion = version;\n\n if (sanitizedVersion.startsWith(\"^\")) {\n sanitizedVersion = sanitizedVersion.substring(1, sanitizedVersion.length);\n }\n\n const metadataPath = `${getAssetsPath(name, version, scope)}${\n API_PATHS.METADATA_SUFFIX\n }`;\n const response = await fetch(metadataPath);\n\n if (!response.ok) {\n throw new Error(\n `Failed fetching metadata for ${metadataPath}: ${response.statusText}`\n );\n }\n\n return response.json();\n};\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"package-page\", [\n \"page\",\n \"feedbackLinks\",\n \"reportLink\",\n \"reportAbuseLink\",\n \"githubLink\",\n \"dependenciesTab\",\n \"dependenciesList\",\n \"dependenciesLink\",\n \"badgeTab\",\n \"description\",\n \"markdown\",\n \"selectVersionButton\",\n \"selectVersionDropdown\",\n \"selectVersionItem\",\n] as const);\n","import { Center, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { usePackageState } from \"./PackageState\";\nimport testIds from \"./testIds\";\nimport { sanitizeVersion } from \"../../api/package/util\";\nimport { NavLink } from \"../../components/NavLink\";\nimport { PageLoader } from \"../../components/PageLoader\";\nimport { getPackagePath } from \"../../util/url\";\n\nexport const DependenciesList: FunctionComponent = () => {\n const assembly = usePackageState().assembly.data;\n\n if (!assembly) {\n return <PageLoader />;\n }\n\n const depEntries = Object.entries(assembly.dependencies ?? {});\n\n if (!depEntries.length) {\n return (\n <Center>This library does not have any known CDK dependencies</Center>\n );\n }\n\n return (\n <Stack\n data-testid={testIds.dependenciesList}\n direction=\"row\"\n justify=\"center\"\n mx=\"auto\"\n spacing={4}\n wrap=\"wrap\"\n >\n {depEntries.map(([name, version]) => (\n <NavLink\n _first={{ ml: 4 }}\n data-testid={testIds.dependenciesLink}\n fontWeight=\"semibold\"\n key={`${name}-${version}`}\n p={2}\n to={getPackagePath({ name, version: sanitizeVersion(version) })}\n >\n {name} - {version}\n </NavLink>\n ))}\n </Stack>\n );\n};\n","import { Icon } from \"@chakra-ui/react\";\n\nexport const GithubIcon: typeof Icon = (props) => (\n <Icon {...props}>\n <path\n clipRule=\"evenodd\"\n d=\"M10.2532 0C4.59124 0 0 4.59022 0 10.2532C0 14.7835 2.93785 18.6266 7.01174 19.9825C7.524 20.0776 7.71212 19.7601 7.71212 19.4893C7.71212 19.2448 7.70261 18.4371 7.6982 17.5804C4.84576 18.2006 4.24386 16.3706 4.24386 16.3706C3.77745 15.1855 3.10543 14.8704 3.10543 14.8704C2.17499 14.234 3.17555 14.2473 3.17555 14.2473C4.20498 14.3194 4.74728 15.3039 4.74728 15.3039C5.66176 16.871 7.14588 16.418 7.73097 16.1562C7.82299 15.4935 8.08871 15.041 8.38194 14.785C6.10457 14.5261 3.71038 13.6467 3.71038 9.718C3.71038 8.59859 4.11108 7.68394 4.76697 6.96573C4.66035 6.70765 4.30939 5.66481 4.86613 4.25252C4.86613 4.25252 5.72696 3.97695 7.68631 5.3035C8.50435 5.07616 9.38165 4.96189 10.2532 4.95799C11.1242 4.96189 12.002 5.07582 12.8216 5.30317C14.7785 3.97661 15.6383 4.25218 15.6383 4.25218C16.1964 5.6643 15.8455 6.70731 15.739 6.96539C16.3964 7.6836 16.7943 8.59825 16.7943 9.71766C16.7943 13.6557 14.3957 14.5227 12.1125 14.7767C12.4805 15.0949 12.8081 15.719 12.8081 16.6754C12.8081 18.0473 12.7963 19.1514 12.7963 19.4891C12.7963 19.762 12.981 20.0817 13.5005 19.981C17.5721 18.6237 20.5065 14.7818 20.5065 10.2532C20.5063 4.59056 15.9156 0.000169776 10.2532 0.000169776V0Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n <path\n d=\"M3.88318 14.7214C3.86059 14.7724 3.78045 14.7876 3.70744 14.7528C3.63274 14.7195 3.59114 14.6501 3.61525 14.599C3.63732 14.5464 3.71763 14.5319 3.79183 14.5671C3.86654 14.6005 3.90898 14.6706 3.88301 14.7216L3.88318 14.7214ZM4.29848 15.1848C4.24975 15.2301 4.15416 15.209 4.0893 15.1372C4.02206 15.0659 4.0095 14.9703 4.05925 14.9243C4.10984 14.8791 4.20255 14.9005 4.26978 14.9719C4.33668 15.0442 4.34992 15.1389 4.29865 15.1849L4.29848 15.1848ZM4.70291 15.7751C4.64009 15.8189 4.5372 15.778 4.4737 15.6868C4.41088 15.5955 4.41088 15.486 4.4754 15.4423C4.53873 15.3985 4.64009 15.4381 4.70461 15.5284C4.76709 15.621 4.76709 15.7305 4.70291 15.775V15.7751ZM5.25659 16.3458C5.20056 16.4078 5.08069 16.3911 4.99308 16.3067C4.9036 16.224 4.87864 16.1064 4.93484 16.0446C4.99189 15.9824 5.11227 15.9998 5.20039 16.0836C5.28987 16.1661 5.31687 16.284 5.25693 16.3456L5.25659 16.3458ZM6.02064 16.677C5.99568 16.7573 5.88056 16.7939 5.76426 16.7596C5.64829 16.7244 5.5724 16.6305 5.59617 16.5494C5.61994 16.4684 5.7359 16.4305 5.85289 16.467C5.96885 16.502 6.04475 16.5954 6.02064 16.677ZM6.8599 16.7383C6.86279 16.8229 6.76431 16.8928 6.64257 16.8945C6.51982 16.8974 6.42049 16.8288 6.4193 16.7456C6.4193 16.6602 6.51574 16.5911 6.63833 16.5887C6.76007 16.5865 6.86007 16.6545 6.86007 16.7382L6.8599 16.7383ZM7.64059 16.6056C7.65519 16.6879 7.57047 16.7726 7.44941 16.7952C7.33056 16.8173 7.22019 16.766 7.20491 16.6843C7.19031 16.5998 7.27656 16.5151 7.39541 16.4932C7.51664 16.4723 7.62531 16.522 7.64059 16.6057V16.6056Z\"\n fill=\"currentColor\"\n />\n </Icon>\n);\n","import { EmailIcon } from \"@chakra-ui/icons\";\nimport { Divider, Stack, useBreakpointValue } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { PACKAGE_ANALYTICS } from \"./constants\";\nimport { usePackageState } from \"./PackageState\";\nimport testIds from \"./testIds\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\nimport { GithubIcon } from \"../../icons/GithubIcon\";\n\nconst iconProps = {\n h: 6,\n ml: 2,\n w: 6,\n};\n\nexport const FeedbackLinks: FunctionComponent = () => {\n const state = usePackageState();\n\n const orientation = useBreakpointValue<\"vertical\" | \"horizontal\">({\n base: \"horizontal\",\n md: \"vertical\",\n });\n const divider = (\n <Divider borderColor=\"white\" mr={6} orientation={orientation} />\n );\n\n const metadata = state.metadata.data;\n const assembly = state.assembly.data;\n\n if (!(assembly && metadata)) return null;\n\n const repo = assembly?.repository ?? {};\n\n let repoUrl = undefined;\n\n if (repo.type === \"git\") {\n repoUrl = repo.url?.endsWith(\".git\")\n ? repo.url.replace(\".git\", \"\")\n : repo.url;\n\n if (repoUrl.endsWith(\"/\")) {\n repoUrl = repoUrl.slice(0, repoUrl.length - 1);\n }\n }\n\n return (\n <Stack\n align=\"center\"\n backgroundColor=\"blue.600\"\n borderTop=\"1px solid\"\n borderTopColor=\"borderColor\"\n color=\"white\"\n data-testid={testIds.feedbackLinks}\n direction={{ base: \"column\", md: \"row\" }}\n justify=\"space-evenly\"\n px={8}\n py={5}\n spacing={4}\n >\n {repoUrl && (\n <>\n <ExternalLink\n color=\"currentcolor\"\n data-event={PACKAGE_ANALYTICS.FEEDBACK.PUBLISHER}\n data-testid={testIds.githubLink}\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n hasIcon={false}\n href={`${repoUrl}/issues`}\n rightIcon={<GithubIcon color=\"white\" {...iconProps} />}\n variant=\"solid\"\n >\n Provide feedback to publisher\n </ExternalLink>\n {divider}\n </>\n )}\n <ExternalLink\n color=\"currentcolor\"\n data-event={PACKAGE_ANALYTICS.FEEDBACK.CONSTRUCT_HUB}\n data-testid={testIds.reportLink}\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n hasIcon={false}\n href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}\n rightIcon={<GithubIcon color=\"white\" {...iconProps} />}\n >\n Provide feedback to Construct Hub\n </ExternalLink>\n {divider}\n <ExternalLink\n color=\"currentcolor\"\n data-event={PACKAGE_ANALYTICS.FEEDBACK.ABUSE}\n data-testid={testIds.reportAbuseLink}\n fontSize=\"lg\"\n fontWeight=\"semibold\"\n hasIcon={false}\n href={`mailto:abuse@amazonaws.com?subject=${encodeURIComponent(\n `ConstructHub - Report of abusive package: ${assembly?.name}`\n )}`}\n rightIcon={<EmailIcon {...iconProps} />}\n >\n Report abuse\n </ExternalLink>\n </Stack>\n );\n};\n","import { SearchIcon } from \"@chakra-ui/icons\";\nimport {\n InputGroup,\n InputLeftElement,\n Input,\n forwardRef,\n} from \"@chakra-ui/react\";\nimport { FormEventHandler, useState } from \"react\";\nimport { Form } from \"../../../components/Form\";\nimport { useDebounce } from \"../../../hooks/useDebounce\";\n\nexport interface SearchInputProps {\n value: string;\n onChange: (s: string) => void;\n onSubmit: FormEventHandler<HTMLFormElement>;\n}\n\nexport const SearchInput = forwardRef<SearchInputProps, \"input\">(\n ({ value, onChange, onSubmit }, inputRef) => {\n const [inputValue, setInputValue] = useState(value);\n\n useDebounce(inputValue, { onChange });\n\n return (\n <Form data-testid=\"choose-submodule-search-form\" onSubmit={onSubmit}>\n <InputGroup>\n <InputLeftElement>\n <SearchIcon color=\"gray.400\" />\n </InputLeftElement>\n <Input\n data-testid=\"choose-submodule-search-input\"\n onChange={(e) => setInputValue(e.target.value)}\n placeholder=\"Search\"\n ref={inputRef}\n value={inputValue}\n variant=\"filled\"\n />\n </InputGroup>\n </Form>\n );\n }\n);\n\nSearchInput.displayName = \"SearchInput\";\n","import {\n Box,\n Divider,\n Modal,\n ModalHeader,\n ModalContent,\n ModalCloseButton,\n ModalBody,\n ModalOverlay,\n UnorderedList,\n} from \"@chakra-ui/react\";\nimport {\n FormEventHandler,\n FunctionComponent,\n useCallback,\n useRef,\n} from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { SearchInput } from \"./SearchInput\";\nimport { SearchItem } from \"../../../components/SearchItem\";\n\nexport interface SearchModalProps {\n inputValue: string;\n isOpen: boolean;\n onClose: () => void;\n onInputChange: (s: string) => void;\n submodules: { name: string; to: string }[];\n}\n\nexport const SearchModal: FunctionComponent<SearchModalProps> = ({\n inputValue,\n isOpen,\n onClose,\n onInputChange,\n submodules,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const { push } = useHistory();\n\n const navigate = useCallback(\n (to: string) => {\n onClose();\n push(to);\n },\n [onClose, push]\n );\n\n const onSubmit = useCallback<FormEventHandler<HTMLFormElement>>(\n (e) => {\n e.preventDefault();\n\n if (!submodules.length) return;\n const { to } = submodules[0];\n navigate(to);\n },\n [navigate, submodules]\n );\n\n return (\n <Modal initialFocusRef={inputRef} isOpen={isOpen} onClose={onClose}>\n <ModalOverlay>\n <ModalContent mx={4}>\n <ModalCloseButton data-testid=\"choose-submodule-modal-close\" />\n <ModalHeader\n data-testid=\"choose-submodule-modal-header\"\n fontSize=\"lg\"\n fontWeight=\"bold\"\n >\n Choose a submodule\n </ModalHeader>\n <ModalBody data-testid=\"choose-submodule-modal-body\" p={0}>\n <Box pb={4} px={4}>\n <SearchInput\n onChange={onInputChange}\n onSubmit={onSubmit}\n ref={inputRef}\n value={inputValue}\n />\n </Box>\n <Divider />\n <UnorderedList\n data-testid=\"choose-submodule-modal-results\"\n m={0}\n maxH=\"50vh\"\n overflow=\"hidden auto\"\n p={0}\n role=\"listbox\"\n tabIndex={-1}\n >\n {submodules.map(({ name, to }) => (\n <SearchItem\n data-testid=\"choose-submodule-result\"\n key={name}\n name={name}\n onClick={() => navigate(to)}\n />\n ))}\n </UnorderedList>\n </ModalBody>\n </ModalContent>\n </ModalOverlay>\n </Modal>\n );\n};\n","import { ArrowBackIcon, ChevronDownIcon } from \"@chakra-ui/icons\";\nimport { Button, Divider, Stack, useDisclosure } from \"@chakra-ui/react\";\nimport { FunctionComponent, useCallback, useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { SearchModal } from \"./SearchModal\";\nimport { QUERY_PARAMS } from \"../../../constants/url\";\nimport { useQueryParams } from \"../../../hooks/useQueryParams\";\nimport { getPackagePath } from \"../../../util/url\";\nimport { usePackageState } from \"../PackageState\";\n\nexport const ChooseSubmodule: FunctionComponent = () => {\n const { assembly, name, language, scope, version } = usePackageState();\n const { push } = useHistory();\n const query = useQueryParams();\n\n const allSubmodules = Object.keys(assembly?.data?.submodules ?? {});\n const { isOpen, onOpen, onClose } = useDisclosure();\n\n const currentSubmodule = query.get(QUERY_PARAMS.SUBMODULE);\n const submoduleText = currentSubmodule\n ? `Submodule: ${currentSubmodule}`\n : \"Choose Submodule\";\n\n const [filter, setFilter] = useState(\"\");\n\n const packageName = scope ? `${scope}/${name}` : name;\n\n const onGoBack = () => {\n push(\n getPackagePath({\n name: packageName,\n version,\n language,\n })\n );\n };\n\n const getUrl = useCallback(\n (submoduleName: string) => {\n return getPackagePath({\n name: packageName,\n version,\n language,\n submodule: submoduleName,\n });\n },\n [language, packageName, version]\n );\n\n const submodules = useMemo(() => {\n let results = allSubmodules;\n\n if (filter) {\n results = results.filter((submodule) =>\n submodule.toLowerCase().includes(filter.toLowerCase())\n );\n }\n\n return results.map((submodule) => {\n // Extract submodule displayable name from the submodule by removing package prefix\n // Examples: \"aws-cdk-lib.aws_s3\" → \"aws_s3\"\n // \"aws-cdk-lib.interfaces.aws_s3\" → \"interfaces.aws_s3\"\n // Regex /^[^.]+\\./ matches package name + first dot, replace with empty string\n const submoduleDisplayName = submodule.replace(/^[^.]+\\./, \"\");\n\n return {\n name: submoduleDisplayName,\n to: getUrl(submoduleDisplayName),\n };\n });\n }, [allSubmodules, filter, getUrl]);\n\n if (allSubmodules.length === 0) {\n return null;\n }\n\n return (\n <Stack spacing={4} w=\"100%\">\n {currentSubmodule && (\n <>\n <Button\n borderRadius=\"none\"\n data-testid=\"choose-submodule-go-back\"\n leftIcon={<ArrowBackIcon aria-label=\"Back to construct root\" />}\n onClick={onGoBack}\n title=\"Back to construct root\"\n variant=\"link\"\n >\n {assembly?.data?.name}\n </Button>\n <Divider />\n </>\n )}\n <Button\n borderRadius=\"none\"\n color=\"blue.500\"\n data-testid=\"choose-submodule-search-trigger\"\n flexGrow={1}\n onClick={onOpen}\n rightIcon={<ChevronDownIcon />}\n title=\"Choose Submodule\"\n variant=\"link\"\n >\n {submoduleText}\n </Button>\n <SearchModal\n inputValue={filter}\n isOpen={isOpen}\n onClose={onClose}\n onInputChange={setFilter}\n submodules={submodules}\n />\n </Stack>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent, ReactNode } from \"react\";\nimport { NavLink } from \"../NavLink\";\n\ninterface NavItemWrapperProps {\n \"data-event\"?: string;\n path?: string;\n title: string;\n showToggle: boolean;\n children: ReactNode;\n variant?: \"sm\" | \"md\";\n}\n\nexport const NavItemWrapper: FunctionComponent<NavItemWrapperProps> = ({\n children,\n \"data-event\": dataEvent,\n path,\n title,\n showToggle,\n variant,\n}) => {\n const smProps = {\n fontSize: \"sm\",\n };\n const mdProps = {\n fontSize: \"md\",\n };\n\n const sharedProps = {\n _hover: { bg: \"rgba(0, 124, 253, 0.05)\" },\n overflow: \"hidden\",\n pl: 1,\n py: showToggle ? 2 : 1,\n marginLeft: showToggle ? 0 : 1,\n fontWeight: showToggle ? \"bold\" : undefined,\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\" as const,\n w: \"100%\",\n ...(variant === \"sm\" ? smProps : mdProps),\n };\n\n return path ? (\n <NavLink data-event={dataEvent} title={title} to={path} {...sharedProps}>\n {children}\n </NavLink>\n ) : (\n <Text {...sharedProps}>{children}</Text>\n );\n};\n","import { ChevronDownIcon, ChevronRightIcon } from \"@chakra-ui/icons\";\nimport { Box, Flex, IconButton, useDisclosure } from \"@chakra-ui/react\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { NavItemWrapper } from \"./NavItemWrapper\";\nimport type { GetIsActiveItemFunction, NavItemConfig } from \"./types\";\nimport { clickEvent, eventName, useAnalytics } from \"../../contexts/Analytics\";\n\nconst navTreeEvent = (scope: string, event: string) =>\n eventName(scope, \"NavTree\", event);\n\nconst iconProps = {\n color: \"textTertiary\",\n h: 4,\n w: 4,\n};\n\nexport interface NavItemProps extends NavItemConfig {\n // The following props don't need to be explicitly defined - they are passed internally\n getIsActiveItem?: GetIsActiveItemFunction;\n onOpen?: () => void;\n level: number;\n variant?: \"sm\" | \"md\";\n}\nexport const NavItem: FunctionComponent<NavItemProps> = ({\n children,\n \"data-event\": dataEvent,\n getIsActiveItem,\n id,\n title,\n path,\n level,\n onOpen,\n variant,\n}) => {\n const { trackCustomEvent } = useAnalytics();\n const defaultIsOpen = level < 2; // only show first two levels by default\n const disclosure = useDisclosure({ onOpen, defaultIsOpen });\n\n const linkIsActive =\n getIsActiveItem?.({\n id,\n title,\n path,\n children,\n }) ?? false;\n\n const showToggle = (children?.length ?? 0) > 0;\n const showChildren = disclosure.isOpen && showToggle;\n\n const nestedItems = useMemo(\n () =>\n children?.map((item, idx) => {\n return (\n <NavItem\n data-event={dataEvent}\n {...item}\n getIsActiveItem={getIsActiveItem}\n key={idx}\n level={level + 1}\n onOpen={disclosure.onOpen}\n variant={variant}\n />\n );\n }),\n [children, dataEvent, getIsActiveItem, level, disclosure.onOpen, variant]\n );\n\n return (\n <Flex direction=\"column\">\n <Flex align=\"center\" color={linkIsActive ? \"link\" : \"textPrimary\"}>\n {showToggle && (\n <IconButton\n aria-label=\"expand-toggle\"\n borderRadius=\"md\"\n h={4}\n icon={\n disclosure.isOpen ? (\n <ChevronDownIcon {...iconProps} />\n ) : (\n <ChevronRightIcon {...iconProps} />\n )\n }\n ml={-1}\n onClick={() => {\n disclosure.onToggle();\n\n if (dataEvent) {\n trackCustomEvent(\n clickEvent({\n name: navTreeEvent(dataEvent, \"Toggle\"),\n })\n );\n }\n }}\n size=\"xs\"\n variant=\"link\"\n w={0}\n />\n )}\n <NavItemWrapper\n data-event={dataEvent ? navTreeEvent(dataEvent, \"Link\") : undefined}\n path={path}\n showToggle={showToggle}\n title={title}\n variant={variant}\n >\n {title}\n </NavItemWrapper>\n </Flex>\n <Box\n _before={{\n // Creates a border without taking up any box space\n // This is important to keep items perfectly aligned\n bg: \"borderColor\",\n bottom: 0,\n content: `\"\"`,\n left: 0,\n position: \"absolute\",\n top: 0,\n w: \"1px\",\n }}\n display={showChildren ? \"initial\" : \"none\"}\n ml={2}\n mr={2}\n pl={2}\n position=\"relative\"\n >\n {nestedItems}\n </Box>\n </Flex>\n );\n};\n","import { Flex } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { NavItem } from \"./NavItem\";\nimport type { GetIsActiveItemFunction, NavItemConfig } from \"./types\";\n\nexport interface NavTreeProps {\n \"data-event\"?: string;\n /**\n * Function to evaluate if an item is currently active\n */\n getIsActiveItem?: GetIsActiveItemFunction;\n /**\n * Items to render\n */\n items: NavItemConfig[];\n variant?: \"sm\" | \"md\";\n}\n\nexport const NavTree: FunctionComponent<NavTreeProps> = ({\n \"data-event\": dataEvent,\n getIsActiveItem,\n items,\n variant,\n}) => {\n return (\n <Flex direction=\"column\" maxWidth=\"100%\">\n {items.map((item, idx) => {\n return (\n <NavItem\n {...item}\n data-event={dataEvent}\n getIsActiveItem={getIsActiveItem}\n key={idx}\n level={0}\n onOpen={undefined}\n variant={variant}\n />\n );\n })}\n </Flex>\n );\n};\n","import { ChevronUpIcon } from \"@chakra-ui/icons\";\nimport {\n Box,\n Button,\n Drawer,\n DrawerBody,\n DrawerOverlay,\n DrawerHeader,\n DrawerContent,\n DrawerCloseButton,\n Flex,\n useDisclosure,\n Portal,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent, useEffect } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { ChooseSubmodule } from \"./ChooseSubmodule\";\nimport { usePackageState } from \"./PackageState\";\nimport { NavTree } from \"../../components/NavTree\";\n\nexport const NavDrawer: FunctionComponent = () => {\n const { assembly, menuItems } = usePackageState();\n const drawer = useDisclosure();\n const location = useLocation();\n\n const hasSubmodules = Object.keys(assembly.data?.submodules ?? {}).length > 0;\n\n // Close NavDrawer when URL updates\n useEffect(() => {\n if (drawer.isOpen) {\n drawer.onClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location]);\n\n return (\n <Box bottom={0} display={{ lg: \"none\" }} left={0} pos=\"fixed\" right={0}>\n <Button\n bg=\"bgPrimary\"\n borderTop=\"base\"\n boxShadow=\"base\"\n fontSize=\"xl\"\n fontWeight=\"semibold\"\n h=\"3.5rem\"\n onClick={drawer.onOpen}\n variant=\"unstyled\"\n w=\"full\"\n >\n <Flex align=\"center\" justify=\"space-between\" px={6}>\n Table of contents\n <ChevronUpIcon />\n </Flex>\n </Button>\n\n <Portal>\n <Drawer {...drawer} blockScrollOnMount={false} placement=\"bottom\">\n <DrawerOverlay />\n <DrawerContent maxH=\"60vh\">\n <DrawerHeader>Table of contents</DrawerHeader>\n <DrawerCloseButton />\n\n <DrawerBody>\n {hasSubmodules && (\n <Box mb={4} sx={{ button: { justifyContent: \"initial\" } }}>\n <ChooseSubmodule />\n </Box>\n )}\n <NavTree items={menuItems} />\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n </Portal>\n </Box>\n );\n};\n","import { Text } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const DocsError: FunctionComponent = ({ children }) => (\n <Text\n align=\"center\"\n fontSize=\"xl\"\n fontStyle=\"oblique\"\n px={4}\n wordBreak=\"break-word\"\n >\n {children}\n </Text>\n);\n","import { CopyIcon, CheckIcon } from \"@chakra-ui/icons\";\nimport {\n forwardRef,\n IconButton,\n IconButtonProps,\n useClipboard,\n} from \"@chakra-ui/react\";\n\nexport interface CopyButtonProps extends Omit<IconButtonProps, \"aria-label\"> {\n // Optional since we set a default\n \"aria-label\"?: string;\n value: string;\n}\n\nexport const CopyButton = forwardRef<CopyButtonProps, \"button\">(\n ({ value, ...btnProps }, ref) => {\n const { hasCopied, onCopy } = useClipboard(value);\n\n return (\n <IconButton\n aria-label=\"Copy Button\"\n color=\"blue.500\"\n colorScheme=\"brand\"\n h={6}\n icon={hasCopied ? <CheckIcon color=\"green.300\" /> : <CopyIcon />}\n minW=\"auto\"\n ml={1}\n onClick={onCopy}\n ref={ref}\n variant=\"ghost\"\n w={6}\n {...btnProps}\n />\n );\n }\n);\n\nCopyButton.displayName = \"CopyButton\";\n","import { Box, Flex } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport type { RendererProps } from \"./types\";\nimport { CopyButton } from \"../CopyButton\";\n\nexport const MultiLineRenderer: FunctionComponent<RendererProps> = ({\n code,\n tokens,\n getLineProps,\n getTokenProps,\n}) => (\n <>\n <Flex\n align=\"center\"\n bg=\"rgba(0, 124, 253, 0.15)\"\n borderTopRadius=\"md\"\n justify=\"flex-end\"\n px={2}\n py={1}\n >\n <CopyButton value={code} />\n </Flex>\n <Box overflowX=\"auto\" p={2}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line, key: i })}>\n {line.map((token, key) => (\n <Box\n as=\"span\"\n key={key}\n // wordWrap is not supported as a style prop for some reason\n sx={{ wordWrap: \"normal\" }}\n {...getTokenProps({ token, key })}\n />\n ))}\n </div>\n ))}\n </Box>\n </>\n);\n","import { Box, Flex, Grid } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport type { RendererProps } from \"./types\";\nimport { CopyButton } from \"../CopyButton\";\n\nexport const SingleLineRenderer: FunctionComponent<RendererProps> = ({\n code,\n tokens,\n getLineProps,\n getTokenProps,\n}) => (\n <Grid p={3} templateColumns=\"1fr min-content\" w=\"full\">\n <Box m={-3} maxW=\"full\" overflow=\"auto\" p={3}>\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line, key: i })}>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token, key })} />\n ))}\n </div>\n ))}\n </Box>\n <Flex align=\"center\" ml={1}>\n <CopyButton value={code} />\n </Flex>\n </Grid>\n);\n","import { Box, BoxProps, useColorModeValue } from \"@chakra-ui/react\";\nimport Highlight, { defaultProps, Language } from \"prism-react-renderer\";\nimport nightOwl from \"prism-react-renderer/themes/nightOwl\";\nimport nightOwlLight from \"prism-react-renderer/themes/nightOwlLight\";\nimport { FunctionComponent } from \"react\";\nimport { MultiLineRenderer } from \"./MultiLineRenderer\";\nimport { SingleLineRenderer } from \"./SingleLineRenderer\";\n\nexport interface CodeProps extends BoxProps {\n code: string;\n language: Language;\n}\n\nexport const Code: FunctionComponent<CodeProps> = ({\n code,\n language,\n ...boxProps\n}) => {\n const codeTheme = useColorModeValue(nightOwlLight, nightOwl);\n return (\n <Highlight\n {...defaultProps}\n code={code}\n language={language}\n theme={codeTheme}\n >\n {(props) => (\n <Box\n as=\"pre\"\n border=\"base\"\n borderRadius=\"md\"\n boxShadow=\"base\"\n className={props.className}\n style={props.style}\n {...boxProps}\n >\n {props.tokens.length > 1 ? (\n <MultiLineRenderer {...props} code={code} />\n ) : (\n <SingleLineRenderer {...props} code={code} />\n )}\n </Box>\n )}\n </Highlight>\n );\n};\n","import { Code as InlineCode } from \"@chakra-ui/react\";\nimport { Language } from \"prism-react-renderer\";\nimport { Children, FunctionComponent, ReactNode } from \"react\";\nimport { Code as BlockCode } from \"../Code\";\n\ninterface CodeProps {\n inline?: boolean;\n children: ReactNode;\n language?: Language;\n}\n\nexport const Code: FunctionComponent<CodeProps> = ({\n inline,\n children,\n language = \"typescript\",\n}) => {\n if (inline) {\n return (\n <InlineCode border=\"base\" marginTop=\"md\" mx={2} px={2} py={0}>\n {children}\n </InlineCode>\n );\n }\n\n const code = Children.toArray(children)\n .reduce((accum: string, child): string => {\n if (typeof child === \"string\") {\n return `${accum}${child}`;\n }\n return accum;\n }, \"\")\n .trim();\n\n return <BlockCode code={code} fontSize=\"0.9rem\" language={language} />;\n};\n","import { LinkIcon } from \"@chakra-ui/icons\";\nimport { Flex, Heading, As } from \"@chakra-ui/react\";\nimport { Children, FunctionComponent, ReactNode } from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { useLocation } from \"react-router-dom\";\nimport { sanitize } from \"../../util/sanitize-anchor\";\nimport { NavLink } from \"../NavLink\";\n\ninterface HeadingResolverProps {\n level: number;\n children: ReactNode;\n}\n\n/**\n * Extracts the string leaves from the provided ReactNode.\n *\n * @param node the node from which string data should be fetched.\n *\n * @returns the visible string content from the node.\n */\nconst stringContent = (node: ReactNode): string => {\n return Children.toArray(node)\n .reduce((acc: string, child) => {\n if (typeof child === \"string\") {\n return acc + child;\n }\n if (typeof child === \"object\" && \"props\" in child) {\n return acc + stringContent(child.props.children);\n }\n return acc;\n }, \"\")\n .trim();\n};\n\nconst HeadingLink: FunctionComponent<{\n id: string;\n level: number;\n title: string;\n}> = ({ id, level, title }) => {\n const { search } = useLocation();\n\n return (\n <NavLink\n _active={{ visibility: \"initial\" }}\n _focus={{ visibility: \"initial\" }}\n alignItems=\"center\"\n data-heading-id={`#${id}`}\n data-heading-level={level}\n data-heading-title={title}\n display=\"flex\"\n id={id}\n lineHeight={1}\n opacity=\"hidden\"\n replace\n // Keep search query (or empty string if no query) in url to avoid breaking submodule navigation\n // E.g: #some-page-element, ?submodule=foo#some-page-element\n to={`${search}#${id}`}\n visibility=\"hidden\"\n >\n <LinkIcon boxSize={4} />\n </NavLink>\n );\n};\n\nexport const Headings: FunctionComponent<HeadingResolverProps> = ({\n level,\n children,\n}) => {\n const size: string = [\"2xl\", \"xl\", \"lg\", \"md\", \"sm\", \"xs\"][level - 1];\n const elem = `h${level}` as As<any>;\n\n // Use DOMParser to look for data attribute for link ID\n const parser = new DOMParser();\n const doc = parser.parseFromString(\n ReactDOMServer.renderToStaticMarkup(children as React.ReactElement),\n \"text/html\"\n );\n\n const dataElement = doc.querySelector(\n \"span[data-heading-title][data-heading-id]\"\n ) as HTMLElement;\n const title = dataElement?.dataset.headingTitle ?? stringContent(children);\n\n const id = dataElement?.dataset.headingId ?? sanitize(title);\n\n return (\n <Flex\n _hover={{\n \"> a\": {\n visibility: \"initial\",\n },\n }}\n align=\"stretch\"\n borderBottom=\"base\"\n justify=\"space-between\"\n mb={4}\n mt={level >= 4 ? \"1.5em\" : 4}\n px={level >= 4 ? 2 : undefined}\n py={2}\n >\n <Heading\n as={elem}\n color=\"textPrimary\"\n level={level}\n size={size}\n sx={{ \"> code\": { fontSize: \"inherit\" } }}\n >\n {children}\n </Heading>\n\n <HeadingLink id={id} level={level} title={title} />\n </Flex>\n );\n};\n","import {\n Box,\n Table as ChakraTable,\n Thead,\n Tbody,\n Tfoot,\n Tr,\n Th,\n Td,\n TableCaption,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\nconst Table: FunctionComponent = ({ children }) => (\n <Box maxW=\"100%\" overflowX=\"auto\">\n <ChakraTable variant=\"striped\">{children}</ChakraTable>\n </Box>\n);\n\nexport { Table, Tfoot, Tbody, Td, Thead, Tr, Th, TableCaption };\n","import { createTestIds } from \"../../util/createTestIds\";\n\nexport default createTestIds(\"markdown\", [\"container\"] as const);\n","import { Box } from \"@chakra-ui/react\";\nimport { Assembly } from \"@jsii/spec\";\nimport githubSchema from \"hast-util-sanitize/lib/github.json\";\nimport { FunctionComponent } from \"react\";\nimport ReactMarkdown, {\n PluggableList,\n ReactMarkdownOptions,\n} from \"react-markdown\";\nimport type { TableCellComponent } from \"react-markdown/src/ast-to-react\";\nimport rehypeRaw from \"rehype-raw\";\nimport rehypeSanitize from \"rehype-sanitize\";\nimport remarkEmoji from \"remark-emoji\";\nimport remarkGfm from \"remark-gfm\";\nimport { Code } from \"./Code\";\nimport { Headings } from \"./Headings\";\nimport { Hr } from \"./Hr\";\nimport { Img } from \"./Img\";\nimport { Ul, Ol, Li } from \"./List\";\nimport { Table, Thead, Tbody, Tfoot, Tr, Th, Td, TableCaption } from \"./Table\";\nimport testIds from \"./testIds\";\nimport { A, Blockquote, Em, P, Pre, Sup } from \"./Text\";\n\ntype Components = NonNullable<ReactMarkdownOptions[\"components\"]>;\n\nconst components: Components = {\n a: A,\n blockquote: Blockquote,\n caption: TableCaption,\n code: Code,\n em: Em,\n h1: Headings,\n h2: Headings,\n h3: Headings,\n h4: Headings,\n h5: Headings,\n h6: Headings,\n hr: Hr,\n img: Img,\n li: Li,\n ol: Ol,\n p: P,\n pre: Pre as Components[\"pre\"],\n sup: Sup,\n table: Table,\n tbody: Tbody,\n td: Td as TableCellComponent, // The react-markdown component has a tighter signature than the one from @chakra-ui\n tfoot: Tfoot,\n th: Th as TableCellComponent, // The react-markdown component has a tighter signature than the one from @chakra-ui\n thead: Thead,\n tr: Tr,\n ul: Ul,\n};\n\n// see below comment\nconst ghSchema: typeof githubSchema & { attributes: { span?: any } } = {\n ...githubSchema,\n};\n\n// jsii-docgen adds these attributes to <span> elements embedded inside\n// headings in order to configure custom anchor ids.\n// tell rehype not to strip those out.\nghSchema.attributes.span = (ghSchema.attributes.span ?? []).concat([\n \"dataHeadingTitle\",\n \"dataHeadingId\",\n]);\n\n// Note - the default schema for rehypeSanitize is GitHub-style, which is what we need!\nconst rehypePlugins: PluggableList = [\n [rehypeRaw],\n // ALWAYS keep rehypeSanitize LAST!\n [rehypeSanitize, ghSchema],\n];\nconst remarkPlugins = [remarkGfm, remarkEmoji];\n\nconst GITHUB_REPO_REGEX =\n /^(?:(?:git@)?github\\.com:|(?:https?:\\/\\/)github\\.com\\/)([^/]+)\\/([^/]+)(?:\\.git)?$/;\n\n/**\n * Parses out a GitHub repository owner and repo name from the `repository`\n * configuration of a jsii Assembly.\n *\n * @returns the `owner` and `repo` for the configured repository, if it looks\n * like a GitHub repository URL.\n */\nconst parseGitHubRepository = ({\n type,\n url,\n directory,\n}: Assembly[\"repository\"]) => {\n if (type !== \"git\") {\n return undefined;\n }\n // git@github.com:<owner>/<repo>.git\n // https://github.com/<owner>/<repo>.git\n const match = GITHUB_REPO_REGEX.exec(url);\n if (match == null) {\n return undefined;\n }\n\n const [, owner, repo] = match;\n return { owner, repo, directory };\n};\n\nexport const Markdown: FunctionComponent<{\n children: string;\n repository: Assembly[\"repository\"];\n}> = ({ children, repository }) => {\n const repoConfig = parseGitHubRepository(repository);\n\n const toAbsoluteUri = (githubPrefix: string, githubSuffix = \"HEAD\") =>\n repoConfig == null\n ? ReactMarkdown.uriTransformer\n : (uri: string) => {\n const url = ReactMarkdown.uriTransformer(uri);\n\n // If this is an anchor or absolute URL, return it.\n const [first] = url;\n if (first === \"#\" || first === \"/\") {\n return url;\n }\n\n // If there is a protocol element, then return the URL as-is.\n if (url.includes(\"://\")) {\n return url;\n }\n\n const owner = repoConfig.owner;\n const repo = repoConfig.repo.replace(/\\.git$/, \"\");\n const subdir = repoConfig.directory ? `${repoConfig.directory}/` : \"\";\n return `https://${githubPrefix}/${owner}/${repo}/${githubSuffix}/${subdir}${url}`;\n };\n\n return (\n <Box data-testid={testIds.container} px={8}>\n <ReactMarkdown\n components={components}\n rehypePlugins={rehypePlugins}\n remarkPlugins={remarkPlugins}\n transformImageUri={toAbsoluteUri(\"raw.githubusercontent.com\")}\n transformLinkUri={toAbsoluteUri(\"github.com\", \"blob/HEAD\")}\n >\n {children}\n </ReactMarkdown>\n </Box>\n );\n};\n","import { Box, PropsOf, Text } from \"@chakra-ui/react\";\nimport { Language } from \"prism-react-renderer\";\nimport type { FunctionComponent } from \"react\";\nimport { Code } from \"./Code\";\nimport { ExternalLink } from \"../ExternalLink\";\nimport { NavLink } from \"../NavLink\";\n\ntype AnchorComponent = FunctionComponent<\n PropsOf<typeof NavLink> | PropsOf<typeof ExternalLink>\n>;\n\nexport const A: AnchorComponent = ({ children, href, ...linkProps }) => {\n const sharedProps = {\n color: \"link\",\n // If we are rendering an img within the link (specifically stability banners),\n // do not display the external link Icon\n sx: { \"> img + svg\": { display: \"none\" } },\n };\n\n try {\n if (href && href.startsWith(\"http\")) {\n // new URL() throws if the url is invalid\n const hostname = new URL(href).hostname;\n\n if (hostname !== window.location.hostname) {\n return (\n <ExternalLink href={href} {...sharedProps} {...linkProps}>\n {children}\n </ExternalLink>\n );\n }\n }\n } catch {}\n\n return (\n <NavLink to={href} {...sharedProps} {...linkProps}>\n {children}\n </NavLink>\n );\n};\n\nexport const Blockquote: FunctionComponent = ({ children }) => (\n <Box\n as=\"blockquote\"\n borderLeft=\"5px solid\"\n borderLeftColor=\"borderColor\"\n marginX=\"2\"\n px=\"2\"\n wordBreak=\"break-word\"\n >\n {children}\n </Box>\n);\n\nexport const Em: FunctionComponent = ({ children }) => (\n <Box as=\"em\" fontStyle=\"normal\" fontWeight=\"bold\">\n {children}\n </Box>\n);\n\nexport const P: FunctionComponent = ({ children }) => (\n <Text lineHeight=\"1.5\" mx={2} my={4}>\n {children}\n </Text>\n);\n\nexport const Pre: FunctionComponent<{ lang?: Language }> = ({\n children,\n lang,\n}) => {\n if (lang) {\n return <Code language={lang}>{children}</Code>;\n }\n\n return <Box as=\"pre\">{children}</Box>;\n};\n\nexport const Sup: FunctionComponent = ({ children }) => {\n let color: string | undefined = undefined;\n let text = \"\";\n\n if (Array.isArray(children)) {\n const [first] = children;\n\n if (typeof first === \"string\") {\n text = first;\n }\n }\n\n if (text === \"Required\") {\n color = \"orange.700\";\n } else if (text === \"Optional\") {\n color = \"green.700\";\n }\n\n return (\n <Box as=\"sup\" color={color} fontSize=\"xs\" ml={-1} top={-1}>\n {children}\n </Box>\n );\n};\n","import { ClassAttributes, HTMLAttributes } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { ReactMarkdownProps } from \"react-markdown/src/ast-to-react\";\n\n// HRs are abused in API reference docs so a temporary hack is to simply filter\n// them out until we remove them from the generated docs.\nexport const Hr = (\n _props: ClassAttributes<HTMLHRElement> &\n HTMLAttributes<HTMLHRElement> &\n ReactMarkdownProps\n): ReactNode => <></>;\n","import { Image, ImageProps } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\nexport const Img: FunctionComponent<ImageProps> = (props) => (\n <Image display=\"inline-block\" {...props} />\n);\n","import { UnorderedList, OrderedList, ListItem } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\n\nexport const Ul: FunctionComponent = ({ children }) => (\n <UnorderedList marginTop={2} padding={0}>\n {children}\n </UnorderedList>\n);\n\nexport const Ol: FunctionComponent = ({ children }) => (\n <OrderedList>{children}</OrderedList>\n);\n\nexport const Li: FunctionComponent = ({ children }) => (\n <ListItem\n lineHeight=\"tall\"\n marginX={2}\n sx={{\n \"em:first-of-type\": {\n fontSize: \"small\",\n },\n code: {\n fontSize: \"small\",\n },\n }}\n >\n {children}\n </ListItem>\n);\n","import { FunctionComponent } from \"react\";\nimport { DocsError } from \"./DocsError\";\nimport { usePackageState } from \"./PackageState\";\nimport { Markdown } from \"../../components/Markdown\";\n\nexport const PackageReadme: FunctionComponent = () => {\n const {\n isLoadingDocs,\n readme,\n assembly: { data: assembly },\n } = usePackageState();\n\n if (isLoadingDocs || !readme || !assembly) {\n return null;\n }\n\n if (readme === \"\\n\") {\n return (\n <DocsError>No readme available for this module or submodule</DocsError>\n );\n }\n\n return <Markdown repository={assembly.repository}>{readme}</Markdown>;\n};\n","import { FunctionComponent } from \"react\";\nimport { DocsError } from \"./DocsError\";\nimport { usePackageState } from \"./PackageState\";\nimport { ExternalLink } from \"../../components/ExternalLink\";\nimport { CONSTRUCT_HUB_REPO_URL } from \"../../constants/links\";\n\nexport const PackageDocsError: FunctionComponent = () => {\n const { language } = usePackageState();\n\n const issueLink = (\n <ExternalLink href={`${CONSTRUCT_HUB_REPO_URL}/issues/new`}>\n issue\n </ExternalLink>\n );\n return (\n <DocsError>\n Documentation in {language} is still not ready for this package. Come back\n soon. If this issue persists, please let us know by creating an{\" \"}\n {issueLink}.\n </DocsError>\n );\n};\n","import { Heading } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { NavLink, useLocation, useParams } from \"react-router-dom\";\nimport { PackageDocsError } from \"./PackageDocsError\";\nimport { usePackageState } from \"./PackageState\";\nimport { Markdown } from \"../../components/Markdown\";\n\nconst usePackageTypeDocs = () => {\n const { typeId }: { typeId?: string } = useParams();\n const { apiReference } = usePackageState();\n\n if (typeId) {\n return apiReference?.[typeId];\n }\n return;\n};\n\nexport const PackageTypeDocs: FunctionComponent<{ rootId: string }> = ({\n rootId,\n}) => {\n const { pathname, hash, search } = useLocation();\n const {\n isLoadingDocs,\n assembly: { data: assembly },\n } = usePackageState();\n const docs = usePackageTypeDocs();\n\n if (isLoadingDocs) {\n return null;\n } else if (!docs || !assembly) {\n return <PackageDocsError />;\n }\n const { title, content } = docs;\n const url = `${pathname}${search}#${hash}`;\n return (\n <>\n <Heading as=\"h2\" p={8} size=\"2xl\">\n <NavLink id={rootId} to={url}>\n {title}\n </NavLink>\n </Heading>\n <Markdown repository={assembly.repository}>{content}</Markdown>\n </>\n );\n};\n","import { FunctionComponent, useCallback, useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport {\n API_URL_RESOURCE,\n PACKAGE_ANALYTICS,\n README_ITEM_ID,\n} from \"./constants\";\nimport { usePackageState } from \"./PackageState\";\nimport type { MenuItem } from \"./util\";\nimport { GetIsActiveItemFunction, NavTree } from \"../../components/NavTree\";\n\nexport const PrimaryDocNavigation: FunctionComponent = () => {\n const { menuItems } = usePackageState();\n const { pathname, hash } = useLocation();\n\n const primaryNavItems = useMemo(\n () =>\n menuItems.reduce((items, item, i) => {\n // Omit README children which will be displayed on secondary nav\n if (i === 0 && item?.id === README_ITEM_ID) {\n const { children, ...readme } = item;\n\n items.push({ ...readme, children: [] });\n } else {\n items.push(item);\n }\n\n return items;\n }, [] as MenuItem[]),\n [menuItems]\n );\n\n const getIsActiveItem: GetIsActiveItemFunction = useCallback(\n ({ path }) => {\n const pathUrl = new URL(path ?? \"\", window.origin);\n\n return Boolean(\n path?.includes(`/${API_URL_RESOURCE}/`)\n ? pathUrl.pathname === pathname\n : pathUrl.hash && hash && pathUrl.hash === hash\n );\n },\n [hash, pathname]\n );\n\n return (\n <NavTree\n data-event={PACKAGE_ANALYTICS.SCOPE}\n getIsActiveItem={getIsActiveItem}\n items={primaryNavItems}\n />\n );\n};\n","import { MenuItem } from \"../util\";\n\nexport const normalizeId = (id: string) => id.replace(\"#\", \"\").toLowerCase();\n\nexport const getItemIds = (item: MenuItem) => {\n const ids = [normalizeId(item.id)];\n\n item.children?.forEach((child) => {\n if (child?.id) {\n ids.push(...getItemIds(child));\n }\n });\n\n return ids;\n};\n\nexport const getElementId = (el: Element): string =>\n normalizeId(el.getAttribute(\"data-heading-id\") as string);\n\nexport const getSectionIdSet = (items: MenuItem[]): Set<string> =>\n new Set(items.map(getItemIds).flat());\n","import type {\n ClassSchema,\n EnumSchema,\n InterfaceSchema,\n StructSchema,\n} from \"jsii-docgen\";\nimport { QUERY_PARAMS } from \"../../../constants/url\";\nimport type { MenuItem } from \"../util\";\n\n/**\n * Generate the path of the API that should be linked to in the nav tree based\n * on the ID of the type or method or property etc.\n *\n * This method slices from the end of the ID rather than the beginning since the\n * number of segments at the beginning can vary -- for example, a class name\n * could be the second segment:\n * @aws-cdk/aws-s3.Bucket\n * or the third segment:\n * aws-cdk-lib.aws_s3.Bucket (within a jsii submodule)\n * or a fourth or later segment:\n * aws-cdk-lib.aws_s3.CfnBucket.AbortIncompleteMultipartUploadProperty (class that is defined within another class / namespace)\n *\n * Instead we assume that the number of segments from the end is always the same\n * for the particular type of field, so for example a class method is always\n * of the form `(rest of path).ClassName.method`.\n *\n * @example\n * // getPathFromId(\"@aws-cdk/aws-s3.Bucket.Initializer.parameter.scope\", 4\")\n * // => { path: \"Bucket\", hash: \"#Initializer.parameter.scope\" }\n */\nconst getPathHelper = (segments: number) => {\n return (id: string): { path: string; hash: string } => {\n const [path, ...rest] = id.split(\".\").slice(-segments);\n return { path, hash: \"#\" + rest.join(\".\") };\n };\n};\n\n/**\n * Map from fields of `jsii-docgen.Schema` to data needed to extract values and\n * render the right navigation sidebar. This is needed to make the information\n * in the JSON docs play well with the existing markdown docs, but this could be\n * refactored / dropped in the future.\n */\nconst docsSectionsMap = {\n initializer: {\n header: \"Initializer Props\",\n getValues: (e: ClassSchema) => e.initializer?.parameters ?? [],\n // @aws-cdk/aws-s3.Bucket.Initializer.parameter.scope => Bucket#Initializer.parameter.scope\n getPath: getPathHelper(4),\n },\n instanceMethods: {\n header: \"Instance Methods\",\n getValues: (e: ClassSchema | InterfaceSchema) => e.instanceMethods,\n // @aws-cdk/aws-s3.Bucket.addCorsRule => Bucket#addCorsRule\n getPath: getPathHelper(2),\n },\n staticMethods: {\n header: \"Static Methods\",\n getValues: (e: ClassSchema) => e.staticMethods,\n // @aws-cdk/aws-s3.Bucket.fromBucketArn => Bucket#fromBucketArn\n getPath: getPathHelper(2),\n },\n properties: {\n header: \"Properties\",\n getValues: (e: ClassSchema | StructSchema | InterfaceSchema) =>\n e.properties,\n // @aws-cdk/aws-s3.Bucket.property.bucketArn => Bucket#property.bucketArn\n getPath: getPathHelper(3),\n },\n constants: {\n header: \"Constants\",\n getValues: (e: ClassSchema) => e.constants,\n // @aws-cdk/aws-s3.CfnAccessPoint.property.CFN_RESOURCE_TYPE_NAME => CfnAccessPoint#property.CFN_RESOURCE_TYPE_NAME\n getPath: getPathHelper(3),\n },\n members: {\n header: \"Enum Members\",\n getValues: (e: EnumSchema) => e.members,\n // @aws-cdk/aws-s3.BucketAccessControl#PRIVATE => BucketAccessControl#PRIVATE\n getPath: getPathHelper(2),\n },\n};\n\nexport const schemaToSectionItems = (\n type: ClassSchema | InterfaceSchema | StructSchema | EnumSchema,\n language: string,\n submodule?: string\n): MenuItem[] => {\n const items: MenuItem[] = [];\n\n for (const [schemaKey, props] of Object.entries(docsSectionsMap)) {\n const { header, getValues, getPath } = props;\n if (schemaKey in type) {\n const parentItem: MenuItem = {\n level: 1,\n id: header,\n title: header,\n children: [],\n };\n // We aren't using a discriminated union, so the\n // \"if schemaKey in type\" check doesn't give TypeScript enough\n // information to infer this by itself.\n const childItems: MenuItem[] = getValues(type as any).map((value) => {\n const { path, hash } = getPath(value.id);\n let query = `?${QUERY_PARAMS.LANGUAGE}=${language}`;\n if (submodule) {\n query += `&${QUERY_PARAMS.SUBMODULE}=${submodule}`;\n }\n\n return {\n level: 2,\n id: hash,\n title: value.displayName,\n path: `${path}${query}${hash}`,\n children: [],\n };\n });\n if (childItems.length > 0) {\n parentItem.children.push(...childItems);\n items.push(parentItem);\n }\n }\n }\n\n return items;\n};\n","import { useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router-dom\";\nimport { schemaToSectionItems } from \"./util\";\nimport { QUERY_PARAMS } from \"../../../constants/url\";\nimport { useLanguage } from \"../../../hooks/useLanguage\";\nimport { useQueryParams } from \"../../../hooks/useQueryParams\";\nimport { API_URL_RESOURCE, README_ITEM_ID } from \"../constants\";\nimport { usePackageState } from \"../PackageState\";\nimport { isApiPath, MenuItem } from \"../util\";\n\nexport const useSectionItems = (): MenuItem[] => {\n const { pathname } = useLocation();\n const { path } = useRouteMatch();\n const { menuItems, jsonDocs } = usePackageState();\n\n const match = useRouteMatch<{ typeId: string }>(\n `${path}/${API_URL_RESOURCE}/:typeId`\n );\n const typeId = match?.params.typeId;\n\n const [language] = useLanguage();\n const q = useQueryParams();\n const submodule = q.get(QUERY_PARAMS.SUBMODULE) ?? \"\";\n\n const { types, metadata } = useMemo(() => {\n if (!jsonDocs.data) return { types: [] };\n\n const apiReference = jsonDocs.data?.apiReference;\n if (!apiReference) return { types: [] };\n\n return {\n types: [\n ...apiReference.classes,\n ...apiReference.constructs,\n ...apiReference.interfaces,\n ...apiReference.structs,\n ...apiReference.enums,\n ],\n metadata: jsonDocs.data.metadata,\n };\n }, [jsonDocs]);\n\n return useMemo(() => {\n if (!isApiPath(pathname)) {\n const [readmeSection] = menuItems;\n const readmeItems: MenuItem[] =\n readmeSection?.id === README_ITEM_ID ? readmeSection.children : [];\n\n return readmeItems;\n }\n\n const typeInfo = types.find((type) => type.displayName === typeId);\n return typeInfo && metadata\n ? schemaToSectionItems(typeInfo, language, submodule)\n : [];\n }, [language, menuItems, metadata, pathname, submodule, typeId, types]);\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { getSectionIdSet } from \".\";\nimport { getElementId } from \"./util\";\nimport { DOCS_CONTAINER_ID } from \"../constants\";\nimport { useSectionItems } from \"../useSectionItems\";\n\nconst intersectionObserverOptions: IntersectionObserverInit = {\n // Creates a margin for intersection boundary. For this margin, an entry will only be considered intersecting\n // if it is below the top 15% of the viewport, and above the bottom 15% of the viewport\n rootMargin: \"-15% 0% -15% 0%\",\n};\n\nconst mutationObserverOptions: MutationObserverInit = {\n attributes: false,\n childList: true,\n subtree: true,\n};\n\n/**\n * A hook which implements the logic to track the currently scrolled header. The value will always be within the bounds\n * of the right nav items, meaning it should never return undefined unless there are no right nav items.\n */\nexport const useIntersectingHeader = () => {\n const sectionItems = useSectionItems();\n\n // Create a set of section ids for faster lookups\n // This set will be re-defined whenever the sectionItems change.\n // It is tracked via ref so that we do not need to create a new MutationObserver every time our sectionIds change (i.e on page changes)\n const sectionIdSet = useRef(getSectionIdSet(sectionItems));\n\n // State to track currently intersecting header, defaults to first item in sectionIdsSet\n const [intersectingHeader, setIntersectingHeader] = useState<\n string | undefined\n >([...sectionIdSet.current][0]);\n\n // IntersectionObserver instance, which handles updating the intersectingHeader state\n const intersectionObserver: IntersectionObserver = useMemo(() => {\n const intersectionObserverHandler: IntersectionObserverCallback = (\n entries\n ) => {\n let entry: Element | undefined;\n\n entries.forEach((e) => {\n if (e.isIntersecting) {\n entry = e.target;\n }\n });\n\n if (entry) {\n setIntersectingHeader(getElementId(entry));\n }\n };\n\n return new IntersectionObserver(\n intersectionObserverHandler,\n intersectionObserverOptions\n );\n }, []);\n\n // When sectionItems updates, update the sectionIdSet ref and reset the intersectingHeader\n useEffect(() => {\n const newSectionIdSet = getSectionIdSet(sectionItems);\n sectionIdSet.current = newSectionIdSet;\n\n const [firstId] = newSectionIdSet;\n setIntersectingHeader(firstId);\n\n return () => {\n setIntersectingHeader(undefined);\n };\n }, [sectionItems]);\n\n // Initialize a mutationObserver, which is in charge of telling our intersectionObserver which elements to watch\n useEffect(() => {\n const docContainer = document.getElementById(DOCS_CONTAINER_ID);\n\n if (!docContainer) return;\n\n let sections: NodeListOf<Element>;\n\n const mutationCallback: MutationCallback = (records) => {\n // When mutations occur\n if (records.length) {\n // Stop observing old sections\n sections?.forEach((section) => {\n intersectionObserver.unobserve(section);\n });\n\n // Get new sections from dom\n sections = document.querySelectorAll(\"[data-heading-id]\");\n\n // Begin observing new sections which belong to sectionIdSet\n sections.forEach((section) => {\n const sectionId = getElementId(section);\n\n if (sectionIdSet.current.has(sectionId)) {\n intersectionObserver.observe(section);\n }\n });\n }\n };\n\n const mutationObserver = new MutationObserver(mutationCallback);\n\n mutationObserver.observe(docContainer, mutationObserverOptions);\n\n return () => {\n mutationObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n return intersectingHeader;\n};\n","import {\n FunctionComponent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { PACKAGE_ANALYTICS } from \"./constants\";\nimport { normalizeId, useIntersectingHeader } from \"./useIntersectingHeader\";\nimport { useSectionItems } from \"./useSectionItems\";\nimport { GetIsActiveItemFunction, NavTree } from \"../../components/NavTree\";\n\nexport const SecondaryDocNavigation: FunctionComponent = () => {\n const intersectingHeader = useIntersectingHeader();\n const sectionItems = useSectionItems();\n const { hash } = useLocation();\n\n // This ref is used to direct control over highlight state between\n // recentlyClickedItem and intersectingHeader\n const allowIntersectTakeover = useRef(false);\n\n // Tracks the link which was clicked, is set to undefined when the intersectingHeader state takes over\n const [recentlyClickedItem, setRecentlyClickedItem] = useState<\n string | undefined\n >(hash);\n\n // When a user clicks a link, we give control of highlights to the recentlyClickedItem state for 500ms\n // Afterwards, intersectingHeader state via intersection observer takes control of state\n useEffect(() => {\n setRecentlyClickedItem(hash);\n allowIntersectTakeover.current = false;\n\n setTimeout(() => {\n allowIntersectTakeover.current = true;\n }, 500);\n }, [hash]);\n\n // When intersectingHeader changes from scroll and allowIntersectTakeover is true,\n // we set the recentlyClickedItem state to undefined so link highlight state will be dictated\n // by the intersectingHeader state\n useEffect(() => {\n if (recentlyClickedItem && allowIntersectTakeover.current) {\n setRecentlyClickedItem(undefined);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [intersectingHeader]);\n\n // If recentlyClickedItem is defined, use it to compare for highlight state\n // Otherwise compare item id against intersectingHeader\n const getIsLinkActive: GetIsActiveItemFunction = useCallback(\n ({ path, id }) => {\n if (recentlyClickedItem) {\n return new URL(path ?? \"\", window.origin).hash === recentlyClickedItem;\n }\n\n return normalizeId(id) === intersectingHeader;\n },\n [intersectingHeader, recentlyClickedItem]\n );\n\n return (\n <NavTree\n data-event={PACKAGE_ANALYTICS.SCOPE}\n getIsActiveItem={getIsLinkActive}\n items={sectionItems}\n variant=\"sm\"\n />\n );\n};\n","import { Flex, FlexProps } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\nexport interface StickyNavContainerProps extends FlexProps {\n offset: string | number;\n}\n\nexport const StickyNavContainer: FunctionComponent<StickyNavContainerProps> = ({\n offset,\n ...props\n}) => (\n <Flex\n alignSelf=\"stretch\"\n as=\"nav\" // to be more semantic\n direction=\"column\"\n display={{ base: \"none\", lg: \"flex\" }}\n maxHeight={`calc(100vh - ${offset})`}\n overflow=\"hidden auto\"\n position=\"sticky\"\n {...props}\n />\n);\n","import { Box, Flex, Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent, useEffect } from \"react\";\nimport {\n Route,\n Switch,\n useRouteMatch,\n useLocation,\n Redirect,\n} from \"react-router-dom\";\nimport { ChooseSubmodule } from \"./ChooseSubmodule\";\nimport { API_URL_RESOURCE, DOCS_CONTAINER_ID } from \"./constants\";\nimport { NavDrawer } from \"./NavDrawer\";\nimport { PackageReadme } from \"./PackageReadme\";\nimport { usePackageState } from \"./PackageState\";\nimport { PackageTypeDocs } from \"./PackageTypeDocs\";\nimport { PrimaryDocNavigation } from \"./PrimaryDocNavigation\";\nimport { SecondaryDocNavigation } from \"./SecondaryDocNavigation\";\nimport { StickyNavContainer } from \"./StickyNavContainer\";\n\n// We want the nav to be sticky, but it should account for the sticky heading as well, which is 72px\nconst TOP_OFFSET = \"4.5rem\";\nconst DOCS_ROOT_ID = \"apidocs_header\";\n\nconst SubmoduleSelector: FunctionComponent = () => {\n const {\n assembly: { data },\n } = usePackageState();\n\n return Object.keys(data?.submodules ?? {}).length > 0 ? (\n <Flex\n borderBottom=\"1px solid\"\n borderColor=\"borderColor\"\n justify=\"center\"\n py={4}\n >\n <ChooseSubmodule />\n </Flex>\n ) : null;\n};\n\nexport const PackageDocs: FunctionComponent = () => {\n const { path } = useRouteMatch();\n const { markdownDocs } = usePackageState();\n\n const { hash, pathname, search } = useLocation();\n\n useEffect(() => {\n window.requestAnimationFrame(() => {\n if (hash) {\n const target = document.querySelector(\n `[data-heading-id=\"${hash}\"]`\n ) as HTMLElement;\n\n target?.scrollIntoView(true);\n } else {\n window.scrollTo(0, 0);\n }\n });\n // Subscribe to doc loading state so that we run this effect after docs load as well\n }, [hash, pathname, markdownDocs.isLoading]);\n\n return (\n <Grid\n columnGap={4}\n h=\"full\"\n templateColumns={{\n base: \"1fr\",\n lg: \"minmax(20rem, 1fr) 3fr minmax(16rem, 0.9fr)\",\n }}\n width=\"100%\"\n >\n {/* Primary Nav */}\n <StickyNavContainer\n borderRight=\"1px solid\"\n borderRightColor=\"borderColor\"\n offset={TOP_OFFSET}\n pl={6}\n pr={4}\n top={TOP_OFFSET}\n >\n <SubmoduleSelector />\n <Box overflowY=\"auto\" py={4}>\n <PrimaryDocNavigation />\n </Box>\n </StickyNavContainer>\n\n {/* Docs */}\n <Box\n h=\"max-content\"\n id={DOCS_CONTAINER_ID}\n maxWidth=\"100%\"\n overflow=\"hidden\"\n py={4}\n sx={{\n a: {\n scrollMarginTop: TOP_OFFSET,\n },\n }}\n >\n <Switch>\n <Redirect\n exact\n from={`${path}/${API_URL_RESOURCE}`}\n to={{ pathname: path, search }}\n />\n <Route exact path={path}>\n <PackageReadme />\n </Route>\n <Route exact path={`${path}/${API_URL_RESOURCE}/:typeId`}>\n <PackageTypeDocs rootId={DOCS_ROOT_ID} />\n </Route>\n </Switch>\n </Box>\n\n {/* Secondary Nav */}\n <StickyNavContainer\n borderLeft=\"1px solid\"\n borderLeftColor=\"borderColor\"\n offset={TOP_OFFSET}\n pl={6}\n pr={4}\n top={TOP_OFFSET}\n >\n <Box overflowY=\"auto\" py={4}>\n <SecondaryDocNavigation />\n </Box>\n </StickyNavContainer>\n <NavDrawer />\n </Grid>\n );\n};\n","import { ChevronDownIcon, ChevronUpIcon } from \"@chakra-ui/icons\";\nimport { Button, ButtonProps } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\n\ninterface ToggleButtonProps extends ButtonProps {\n isOpen: boolean;\n openText: string;\n closeText: string;\n}\n\nexport const ToggleButton: FunctionComponent<ToggleButtonProps> = ({\n openText,\n closeText,\n isOpen,\n ...buttonProps\n}) => (\n <Button\n color=\"link\"\n colorScheme=\"blue\"\n leftIcon={isOpen ? <ChevronUpIcon /> : <ChevronDownIcon />}\n variant=\"link\"\n {...buttonProps}\n >\n {isOpen ? closeText : openText}\n </Button>\n);\n","import { forwardRef } from \"@chakra-ui/react\";\nimport spdx from \"spdx-license-list\";\nimport { ExternalLink, ExternalLinkProps } from \"../ExternalLink\";\n\nexport interface LicenseLinkOptions {\n license: string;\n}\n\nexport interface LicenseLinkProps\n extends ExternalLinkProps,\n LicenseLinkOptions {}\n\nexport const LicenseLink = forwardRef<LicenseLinkProps, \"a\">(\n ({ license, ...linkProps }, ref) => {\n const url = spdx[license].url;\n\n return (\n <ExternalLink href={url} ref={ref} {...linkProps}>\n {license}\n </ExternalLink>\n );\n }\n);\n\nLicenseLink.displayName = \"LicenseLink\";\n","export const FORMATS = {\n PUBLISH_DATE: \"MMM dd, yyyy 'at' h:mmaaa\",\n} as const;\n","import { DownloadIcon } from \"@chakra-ui/icons\";\nimport {\n Box,\n Collapse,\n Stack,\n StackProps,\n Text,\n Tooltip,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport { Assembly } from \"@jsii/spec\";\nimport { Fragment, FunctionComponent, ReactNode } from \"react\";\nimport spdx from \"spdx-license-list\";\nimport { ToggleButton } from \"./ToggleButton\";\nimport { PackageLinkConfig } from \"../../../api/config\";\nimport { Metadata } from \"../../../api/package/metadata\";\nimport { PackageStats } from \"../../../api/stats\";\nimport { ExternalLink } from \"../../../components/ExternalLink\";\nimport { Highlight } from \"../../../components/Highlight\";\nimport { LicenseLink } from \"../../../components/LicenseLink\";\nimport { NavLink } from \"../../../components/NavLink\";\nimport { Time } from \"../../../components/Time\";\nimport { FORMATS } from \"../../../constants/dates\";\nimport { useConfigValue } from \"../../../hooks/useConfigValue\";\nimport { useStats } from \"../../../hooks/useStats\";\nimport { highlightsFrom } from \"../../../util/package\";\nimport { getRepoUrlAndHost, getSearchPath } from \"../../../util/url\";\nimport { usePackageState } from \"../PackageState\";\n\ninterface DetailsProps extends StackProps {}\n\nconst WithLabel: FunctionComponent<{ label: ReactNode; tooltip?: string }> = ({\n children,\n label,\n tooltip,\n}) => (\n <Tooltip hasArrow isDisabled={!tooltip} label={tooltip} placement=\"left\">\n <Text fontWeight=\"bold\">\n {label}{\" \"}\n <Box as=\"span\" fontWeight=\"normal\">\n {children}\n </Box>\n </Text>\n </Tooltip>\n);\n\nconst Downloads: FunctionComponent<{ downloads: number }> = ({ downloads }) => (\n <WithLabel\n label={\n <>\n <Box as=\"span\" mr={1}>\n <DownloadIcon />\n </Box>\n {downloads.toLocaleString()}\n </>\n }\n tooltip=\"Download numbers are periodically sourced from the npm registry\"\n >\n Weekly downloads\n </WithLabel>\n);\n\nconst getDetailItemsFromPackage = ({\n assembly,\n metadata,\n name,\n packageLinks,\n stats,\n}: {\n assembly?: Assembly;\n metadata?: Metadata;\n stats?: PackageStats;\n packageLinks?: PackageLinkConfig[];\n name: string;\n}): ReactNode[] => {\n const items: ReactNode[] = [];\n\n if (assembly || metadata || stats || packageLinks) {\n const downloads: number | undefined =\n stats?.packages?.[name]?.downloads?.npm;\n\n if (downloads !== undefined) {\n items.push(<Downloads downloads={downloads} />);\n }\n\n const username = assembly?.author.name;\n const repository = assembly?.repository;\n const license = assembly?.license;\n\n if (username) {\n const author = (\n <NavLink color=\"link\" to={getSearchPath({ query: username })}>\n {username}\n </NavLink>\n );\n items.push(<WithLabel label=\"Author\">{author}</WithLabel>);\n }\n\n const date = metadata?.date;\n\n if (date) {\n const publishDate = (\n <Time\n date={new Date(date)}\n fontWeight=\"normal\"\n format={FORMATS.PUBLISH_DATE}\n />\n );\n items.push(<WithLabel label=\"Published\">{publishDate}</WithLabel>);\n }\n\n if (repository) {\n const repo = getRepoUrlAndHost(repository.url);\n\n if (repo) {\n const repoLink = (\n <ExternalLink href={repo.url}>{repo.hostname}</ExternalLink>\n );\n items.push(<WithLabel label=\"Repository\">{repoLink}</WithLabel>);\n }\n }\n\n if (license && license in spdx) {\n const licenseLink = <LicenseLink license={license} />;\n items.push(<WithLabel label=\"License\">{licenseLink}</WithLabel>);\n }\n\n if (packageLinks?.length) {\n packageLinks.forEach(({ linkLabel, configKey, linkText }) => {\n const target = (metadata?.packageLinks ?? {})[configKey];\n if (target) {\n const link = (\n <ExternalLink href={target}>{linkText ?? target}</ExternalLink>\n );\n items.push(\n <WithLabel label={linkLabel}>\n {linkLabel}: {link}\n </WithLabel>\n );\n }\n });\n }\n\n const registry =\n metadata?.links?.npm ??\n `https://www.npmjs.com/package/${assembly?.name}/v/${assembly?.version}`;\n\n if (registry) {\n const registryLink = (\n <ExternalLink href={registry}>\n {new URL(registry).hostname}\n </ExternalLink>\n );\n\n items.push(<WithLabel label=\"Registry\">{registryLink}</WithLabel>);\n }\n }\n\n return items.map((item, i) => <Fragment key={i}>{item}</Fragment>);\n};\n\nexport const Details: FunctionComponent<DetailsProps> = (props) => {\n const state = usePackageState();\n const stats = useStats().data;\n const collapse = useDisclosure({ defaultIsOpen: true });\n const packageLinks = useConfigValue(\"packageLinks\");\n\n const assembly = state.assembly.data;\n const metadata = state.metadata.data;\n const name = state.scope ? `${state.scope}/${state.name}` : state.name;\n\n const [highlight] = highlightsFrom(metadata?.packageTags);\n\n const items = getDetailItemsFromPackage({\n assembly,\n metadata,\n name,\n packageLinks,\n stats,\n });\n\n if (!items.length) return null;\n\n const alwaysShow = items.slice(0, 2);\n const showWithCollapse = items.slice(2, items.length);\n\n return (\n <Stack\n align=\"start\"\n color=\"textPrimary\"\n fontSize=\".75rem\"\n mt={2}\n spacing={2}\n {...props}\n >\n {highlight && <Highlight {...highlight} />}\n {/* TODO: Highlight element */}\n {alwaysShow}\n {showWithCollapse.length > 0 && (\n <>\n <Collapse animateOpacity in={collapse.isOpen}>\n <Stack spacing={2}>{showWithCollapse}</Stack>\n </Collapse>\n <ToggleButton\n closeText={`See fewer details (${alwaysShow.length})`}\n fontSize=\"inherit\"\n isOpen={collapse.isOpen}\n onClick={collapse.onToggle}\n openText={`See more details (${showWithCollapse.length})`}\n />\n </>\n )}\n </Stack>\n );\n};\n","/**\n * @fileoverview CSS Related Utils\n */\n\n/**\n * Translates a series of grid row definitions into a grid area string\n * ```ts\n * const gridAreas = makeGridAreas(\n * [\"header\", \"header\", \"header\"],\n * [\"aside\", \"main\", \"main\"],\n * [\"aside\", \"footer\", \"footer\"]\n * ); // `\"header header header\" \"aside main main\" \"aside footer footer\"`\n *\n * const withBlank = makeGridAreas(\n * [\"header\", null, \"main\"]\n * ); // `\"header . main\"`\n * ```\n */\nexport const makeGridAreas = (...rows: (string | null)[][]): string => {\n return rows\n .map((row) => `\"${row.map((col) => col ?? \".\").join(\" \")}\"`)\n .join(\" \");\n};\n","import { Grid } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { makeGridAreas } from \"../../../util/css\";\n\nexport const GRID_AREAS = {\n HEADING: \"heading\",\n INSTALL: \"install\",\n LANGUAGES: \"languages\",\n META: \"meta\",\n};\n\nconst baseGridAreas = makeGridAreas(\n [GRID_AREAS.HEADING],\n [GRID_AREAS.META],\n [GRID_AREAS.LANGUAGES],\n [GRID_AREAS.INSTALL]\n);\n\nconst lgGridAreas = makeGridAreas(\n [GRID_AREAS.HEADING, GRID_AREAS.LANGUAGES, GRID_AREAS.INSTALL],\n [GRID_AREAS.HEADING, null, GRID_AREAS.META]\n);\n\nexport const HeaderContainer: FunctionComponent = ({ children }) => (\n <Grid\n bg=\"bgSecondary\"\n columnGap={{ md: 6, lg: 10 }}\n pt={{ base: 3, lg: 6 }}\n px={{ base: 5, md: 6, lg: 10 }}\n rowGap={{ base: 4, lg: 0 }}\n templateAreas={{ base: baseGridAreas, lg: lgGridAreas }}\n templateColumns={{ base: \"1fr\", lg: \"1fr auto 15rem\" }}\n templateRows={{ lg: \"auto 1fr\" }}\n >\n {children}\n </Grid>\n);\n","import { Select } from \"@chakra-ui/react\";\nimport { FunctionComponent, useMemo } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport semver from \"semver\";\nimport { useSearchContext } from \"../../../contexts/Search\";\nimport { getPackagePath } from \"../../../util/url\";\nimport { PACKAGE_ANALYTICS } from \"../constants\";\nimport { usePackageState } from \"../PackageState\";\nimport testIds from \"../testIds\";\n\nexport const SelectVersion: FunctionComponent = () => {\n const {\n scope,\n name,\n version: currentVersion,\n allVersions,\n language,\n } = usePackageState();\n const pkgName = scope ? `${scope}/${name}` : name;\n\n const searchAPI = useSearchContext()!;\n const { push, location } = useHistory();\n\n const packages = searchAPI.findByName(pkgName);\n\n const versions = useMemo(() => {\n // include major versions from catalog.json as a fallback if\n // allVersions request fails\n const majorVersions = packages.map((pkg) => pkg.version);\n const result = [\n ...new Set([...(allVersions ?? []), ...majorVersions, currentVersion]),\n ];\n\n // display highest versions first\n result.sort(semver.rcompare);\n return result;\n }, [packages, currentVersion, allVersions]);\n\n const onChangeVersion: React.ChangeEventHandler<HTMLSelectElement> = (\n evt\n ) => {\n const { pathname, hash } = location;\n\n // Need to include the api reference segment to persist the docs across version changes\n let api = \"\";\n\n if (pathname.includes(\"/api/\")) {\n // \"packages/foo/v/1.2.3/api/bar\" => [\"packages/foo/v/1.2.3\", \"bar\"]\n [, api] = pathname.split(\"/api/\");\n }\n\n const url = getPackagePath({\n name: pkgName,\n version: evt.target.value,\n language,\n api,\n });\n\n // Persist the hash if present\n const urlWithHash = [url, hash].join(\"\");\n\n push(urlWithHash);\n };\n\n return (\n <Select\n data-event={PACKAGE_ANALYTICS.SELECT_VERSION}\n data-testid={testIds.selectVersionDropdown}\n fontWeight=\"500\"\n onChange={onChangeVersion}\n size=\"sm\"\n value={currentVersion}\n width=\"10rem\"\n >\n {versions.map((ver) => (\n <option\n data-testid={testIds.selectVersionItem}\n data-value={ver}\n key={ver}\n value={ver}\n >{`v${ver}`}</option>\n ))}\n </Select>\n );\n};\n","import {\n Flex,\n Stack,\n StackProps,\n Heading as ChakraHeading,\n Text,\n} from \"@chakra-ui/react\";\nimport { Assembly } from \"@jsii/spec\";\nimport type { FunctionComponent } from \"react\";\nimport { SelectVersion } from \"./SelectVersion\";\nimport { mapConstructFrameworks } from \"../../../api/catalog-search/util\";\nimport { Metadata } from \"../../../api/package/metadata\";\nimport { CDKTypeBadge } from \"../../../components/CDKType\";\nimport { PackageTag } from \"../../../components/PackageTag\";\nimport { tagObjectsFrom } from \"../../../util/package\";\nimport { PACKAGE_ANALYTICS } from \"../constants\";\nimport testIds from \"../testIds\";\n\ninterface HeadingProps extends StackProps {\n assembly: Assembly;\n name: string;\n description?: string;\n metadata: Metadata;\n version: string;\n}\n\nexport const Heading: FunctionComponent<HeadingProps> = ({\n assembly,\n name,\n description,\n metadata,\n version,\n ...stackProps\n}) => {\n const tags = tagObjectsFrom({\n packageTags: metadata?.packageTags ?? [],\n keywords: assembly?.keywords ?? [],\n });\n\n const constructFrameworks = mapConstructFrameworks(metadata);\n const [constructFramework] = constructFrameworks;\n const [cdkName, majorVersion] = constructFramework ?? [];\n\n const dataEvent =\n constructFrameworks.size === 1\n ? PACKAGE_ANALYTICS.CDK_BADGE.eventName(\n `${cdkName}${majorVersion !== undefined ? ` v${majorVersion}` : \"\"}`\n )\n : undefined;\n\n return (\n <Stack\n lineHeight=\"1.5\"\n maxW=\"full\"\n overflow=\"hidden\"\n spacing={2}\n {...stackProps}\n >\n <Flex align=\"center\" wrap=\"wrap\">\n <ChakraHeading\n color=\"textPrimary\"\n flexShrink={1}\n fontSize=\"1.5rem\"\n isTruncated\n mr={4}\n >\n {name}\n </ChakraHeading>\n <SelectVersion />\n </Flex>\n\n <Text data-testid={testIds.description} fontSize=\"1rem\">\n {description}\n </Text>\n\n <Flex\n align=\"center\"\n direction=\"row\"\n pt={1}\n // Chakra doesn't yet support css gap via style props\n sx={{ gap: \"0.5rem\" }}\n wrap=\"wrap\"\n >\n <CDKTypeBadge\n constructFrameworks={constructFrameworks}\n data-event={dataEvent}\n />\n {tags.map(({ id, keyword: { label, color } = {} }) => (\n <PackageTag\n data-event={PACKAGE_ANALYTICS.KEYWORD.eventName(label!)}\n key={id}\n value={id}\n variant={color}\n >\n {label}\n </PackageTag>\n ))}\n </Flex>\n </Stack>\n );\n};\n","import {\n Box,\n Flex,\n FlexProps,\n Collapse,\n useDisclosure,\n} from \"@chakra-ui/react\";\nimport type { Assembly } from \"@jsii/spec\";\nimport type { Language as PrismLanguage } from \"prism-react-renderer\";\nimport type { FunctionComponent } from \"react\";\nimport { ToggleButton } from \"./ToggleButton\";\nimport { Code } from \"../../../components/Code\";\nimport { Language } from \"../../../constants/languages\";\nimport { usePackageState } from \"../PackageState\";\n\nconst getCodeSample = ({\n language,\n assembly,\n}: {\n language: Language;\n assembly: Assembly;\n}): string | undefined => {\n const version = assembly.version;\n if (language === Language.TypeScript) {\n const packageName = assembly.name;\n\n return `npm install ${packageName}@${version}`;\n } else if (language === Language.Python) {\n const packageName = assembly.targets?.python?.distName;\n\n if (!packageName) {\n return undefined;\n }\n\n return `pip install ${packageName}==${version}`;\n } else if (language === Language.Java) {\n const groupId = assembly.targets?.java?.maven?.groupId;\n const artifactId = assembly.targets?.java?.maven?.artifactId;\n\n if (!groupId || !artifactId) return undefined;\n\n return [\n \"// add this to your pom.xml\",\n \"<dependency>\",\n ` <groupId>${groupId}</groupId>`,\n ` <artifactId>${artifactId}</artifactId>`,\n ` <version>${version}</version>`,\n \"</dependency>\",\n ].join(\"\\n\");\n } else if (language === Language.DotNet) {\n const packageId = assembly.targets?.dotnet?.packageId;\n if (!packageId) return undefined;\n return `dotnet add package ${packageId} --version ${version}`;\n } else if (language === Language.Go) {\n const repositoryUrl = assembly?.targets?.go?.moduleName;\n\n if (!repositoryUrl) return undefined;\n\n return `go get ${repositoryUrl}`;\n }\n\n return undefined;\n};\n\nexport const Install: FunctionComponent<FlexProps> = (props) => {\n const {\n language,\n assembly: { data: assembly },\n } = usePackageState();\n\n const collapse = useDisclosure();\n\n if (!assembly) return null;\n\n const code = getCodeSample({ language, assembly });\n\n if (!code || !language) return null;\n\n return (\n <Flex\n align=\"start\"\n direction=\"column\"\n fontSize=\".75rem\"\n w=\"full\"\n {...props}\n >\n {language === Language.Java ? (\n <>\n <ToggleButton\n closeText=\"Hide\"\n fontSize=\"inherit\"\n isOpen={collapse.isOpen}\n mt={2}\n onClick={collapse.onToggle}\n openText=\"Install\"\n />\n <Box maxW=\"full\" overflow=\"hidden\">\n <Collapse in={collapse.isOpen}>\n <Code\n boxShadow=\"none\"\n code={code}\n fontSize=\"inherit\"\n language={language as PrismLanguage}\n mt={2}\n />\n </Collapse>\n </Box>\n </>\n ) : (\n <Code\n boxShadow=\"none\"\n code={code}\n fontSize=\"inherit\"\n language={language as PrismLanguage}\n lineHeight=\"2\"\n w=\"full\"\n />\n )}\n </Flex>\n );\n};\n","import { IconButton, Stack } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { PACKAGE_ANALYTICS } from \"./constants\";\nimport { LanguageSupportTooltip } from \"../../components/LanguageSupportTooltip\";\nimport {\n Language,\n TEMP_SUPPORTED_LANGUAGES,\n LANGUAGE_RENDER_MAP,\n LANGUAGES,\n} from \"../../constants/languages\";\nimport { clickEvent, useAnalytics } from \"../../contexts/Analytics\";\n\nexport interface LanguageBarProps {\n targetLanguages: readonly Language[];\n selectedLanguage: Language;\n setSelectedLanguage: (lang: Language) => void;\n}\n\nexport const LanguageBar: FunctionComponent<LanguageBarProps> = ({\n targetLanguages,\n selectedLanguage,\n setSelectedLanguage,\n}) => {\n const { trackCustomEvent } = useAnalytics();\n return (\n <Stack\n align=\"center\"\n data-testid=\"language-bar\"\n direction=\"row\"\n spacing={2}\n >\n {[...targetLanguages]\n .sort(\n (left, right) => LANGUAGES.indexOf(left) - LANGUAGES.indexOf(right)\n )\n .map((language: Language) => {\n const isDisabled = !TEMP_SUPPORTED_LANGUAGES.has(language);\n const isSelected = language === selectedLanguage;\n\n const { icon: LangIcon } = LANGUAGE_RENDER_MAP[language];\n\n const onClick = () => {\n if (isSelected) return;\n trackCustomEvent(\n clickEvent({\n name: PACKAGE_ANALYTICS.LANGUAGE.eventName(language),\n })\n );\n setSelectedLanguage(language);\n };\n\n return (\n <LanguageSupportTooltip key={language} language={language}>\n <IconButton\n aria-label={`Select ${language} icon`}\n bg=\"bgSecondary\"\n border=\"base\"\n borderColor={isSelected ? \"brand.500\" : \"borderColor\"}\n borderRadius=\"lg\"\n boxShadow=\"base\"\n colorScheme=\"brand\"\n cursor={isDisabled ? \"not-allowed\" : \"pointer\"}\n data-testid={`language-${language}`}\n disabled={isDisabled}\n icon={\n <LangIcon\n aria-label={`${language}-icon`}\n borderRadius=\"sm\"\n height={[4, 5, 6]}\n width={[4, 5, 6]}\n />\n }\n onClick={onClick}\n p={1}\n variant=\"outline\"\n w=\"max-content\"\n />\n </LanguageSupportTooltip>\n );\n })}\n </Stack>\n );\n};\n","import { FunctionComponent, useEffect } from \"react\";\nimport { LanguageBar } from \"./LanguageBar\";\nimport { usePackageState } from \"./PackageState\";\nimport { Language, LANGUAGES } from \"../../constants/languages\";\nimport { useLanguage } from \"../../hooks/useLanguage\";\n\nconst languageSet = new Set(LANGUAGES);\n\nexport const LanguageSelection: FunctionComponent = () => {\n const state = usePackageState();\n const assembly = state.assembly.data;\n const language = state.language;\n\n const [, setLanguage] = useLanguage({\n updateSaved: true,\n updateUrl: true,\n });\n\n const [, changeLanguage] = useLanguage({ updateUrl: true });\n\n const targets = [\n ...Object.keys(assembly?.targets ?? {}),\n // typescript is the source language and hence always supported.\n // (it doesn't appear in spec.targets)\n Language.TypeScript,\n ] as Language[];\n\n const selectedIsValid = targets.includes(language);\n\n useEffect(() => {\n if (!selectedIsValid) {\n changeLanguage(Language.TypeScript);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedIsValid]);\n\n const props = {\n selectedLanguage: selectedIsValid ? language : Language.TypeScript,\n setSelectedLanguage: setLanguage,\n targetLanguages: targets.filter((target) => languageSet.has(target)),\n };\n\n return <LanguageBar {...props} />;\n};\n","import { Divider, Flex, Spinner } from \"@chakra-ui/react\";\nimport { FunctionComponent } from \"react\";\nimport { Details } from \"./Details\";\nimport { HeaderContainer, GRID_AREAS } from \"./HeaderContainer\";\nimport { Heading } from \"./Heading\";\nimport { Install } from \"./Install\";\nimport { LanguageSelection } from \"../LanguageSelection\";\nimport { usePackageState } from \"../PackageState\";\n\nexport const PackageHeader: FunctionComponent = () => {\n const { assembly, metadata, version } = usePackageState();\n\n const { data: asm } = assembly;\n const { data: meta } = metadata;\n\n return asm && meta ? (\n <HeaderContainer>\n <Heading\n assembly={asm}\n description={asm.description}\n gridArea={GRID_AREAS.HEADING}\n metadata={meta}\n name={asm.name}\n version={version}\n />\n <Flex align=\"start\" gridArea={GRID_AREAS.LANGUAGES}>\n <LanguageSelection />\n </Flex>\n\n <Flex direction=\"column\" gridArea={GRID_AREAS.META}>\n <Divider borderBottom=\"base\" display={{ md: \"none\" }} mb={2} />\n\n <Details />\n\n <Divider borderBottom=\"base\" display={{ md: \"none\" }} mt={2} />\n </Flex>\n\n <Flex align=\"start\" gridArea={GRID_AREAS.INSTALL}>\n <Install />\n </Flex>\n </HeaderContainer>\n ) : (\n <Spinner mx=\"auto\" my={10} size=\"xl\" />\n );\n};\n","import {\n Box,\n Tab,\n TabList,\n TabPanel,\n TabPanels,\n Tabs,\n Image,\n Text,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent, useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { usePackageState } from \"./PackageState\";\nimport { Code } from \"../../components/Code\";\nimport { getPackagePath } from \"../../util/url\";\n\nexport const ShareInfo: FunctionComponent = () => {\n const [tabIndex, setTabIndex] = useState(0);\n\n const { scope, name } = usePackageState();\n const pkgName = scope ? `${scope}/${name}` : name;\n const encodedName = encodeURIComponent(pkgName);\n\n useEffect(() => {\n setTabIndex(0);\n }, []);\n\n const baseUrl = window.location.hostname; // e.g. \"constructs.dev\"\n const packagePath = getPackagePath({ name: pkgName });\n\n const imageUrl = `https://${baseUrl}/badge?package=${encodedName}`;\n const linkUrl = `https://${baseUrl}${packagePath}`;\n const markdown = `[![View on Construct Hub](${imageUrl})](${linkUrl})`;\n const html = `<a href=\"${linkUrl}\"><img src=\"${imageUrl}\" alt=\"View on Construct Hub\"/></a>`;\n\n return (\n <Box bg=\"bgPrimary\" py={1} width=\"100%\">\n <Text pb={3}>\n Use the snippets below in your Git repositories or elsewhere to add a\n button that links to this package. The button will automatically update\n to light mode or dark mode based on whether the user&apos;s client has\n requested a light or dark theme.\n </Text>\n <Link to={packagePath}>\n <Image src=\"/badge-dynamic.svg\" />\n </Link>\n\n <Tabs index={tabIndex} my={3} onChange={setTabIndex} variant=\"line\">\n <TabList borderBottom=\"base\" px={{ base: 0, lg: 6 }}>\n <Tab>Markdown</Tab>\n <Tab>HTML</Tab>\n </TabList>\n <TabPanels maxW=\"full\">\n <TabPanel>\n <Code\n boxShadow=\"none\"\n code={markdown}\n fontSize=\"inherit\"\n language={\"markdown\"}\n mt={2}\n />\n </TabPanel>\n\n <TabPanel>\n <Code\n boxShadow=\"none\"\n code={html}\n fontSize=\"inherit\"\n language={\"markdown\"}\n mt={2}\n />\n </TabPanel>\n </TabPanels>\n </Tabs>\n </Box>\n );\n};\n","import {\n Grid,\n Tab,\n TabList,\n TabPanel,\n TabPanels,\n Tabs,\n} from \"@chakra-ui/react\";\nimport { FunctionComponent, useState, useEffect } from \"react\";\nimport { PACKAGE_ANALYTICS } from \"./constants\";\nimport { DependenciesList } from \"./DependenciesList\";\nimport { FeedbackLinks } from \"./FeedbackLinks\";\nimport { PackageDocs } from \"./PackageDocs\";\nimport { PackageHeader } from \"./PackageHeader\";\nimport { usePackageState } from \"./PackageState\";\nimport { ShareInfo } from \"./ShareInfo\";\nimport testIds from \"./testIds\";\nimport { Page } from \"../../components/Page\";\n\nexport const PackageLayout: FunctionComponent = () => {\n const { pageDescription, pageTitle } = usePackageState();\n\n const [tabIndex, setTabIndex] = useState(0);\n\n useEffect(() => {\n setTabIndex(0);\n }, [pageTitle]);\n\n return (\n <Page\n meta={{ title: pageTitle, description: pageDescription }}\n pageName=\"packageProfile\"\n >\n <Grid\n bg=\"bgPrimary\"\n data-testid={testIds.page}\n maxW=\"100vw\"\n templateColumns=\"1fr\"\n templateRows=\"auto 1fr auto\"\n >\n <PackageHeader />\n\n <Tabs index={tabIndex} onChange={setTabIndex} variant=\"line\">\n <TabList bg=\"bgSecondary\" borderBottom=\"base\" px={{ base: 0, lg: 6 }}>\n <Tab data-event={PACKAGE_ANALYTICS.DOCUMENTATION.TAB}>\n Documentation\n </Tab>\n <Tab\n data-event={PACKAGE_ANALYTICS.DEPENDENCIES.TAB}\n data-testid={testIds.dependenciesTab}\n >\n Dependencies\n </Tab>\n <Tab\n data-event={PACKAGE_ANALYTICS.GITHUB_BADGE.TAB}\n data-testid={testIds.badgeTab}\n >\n Share\n </Tab>\n </TabList>\n <TabPanels maxW=\"full\">\n <TabPanel p={0}>\n <PackageDocs />\n </TabPanel>\n\n <TabPanel>\n <DependenciesList />\n </TabPanel>\n\n <TabPanel>\n <ShareInfo />\n </TabPanel>\n </TabPanels>\n </Tabs>\n\n <FeedbackLinks />\n </Grid>\n </Page>\n );\n};\n","import { FunctionComponent } from \"react\";\nimport { PackageLayout } from \"./PackageLayout\";\nimport { PackageStateProvider } from \"./PackageState\";\n\nexport const Package: FunctionComponent = () => {\n return (\n <PackageStateProvider>\n <PackageLayout />\n </PackageStateProvider>\n );\n};\n","import { Center, Spinner } from \"@chakra-ui/react\";\nimport type { FunctionComponent } from \"react\";\nimport { Redirect, useParams } from \"react-router-dom\";\nimport { Packages } from \"../../api/package/packages\";\nimport { getFullPackageName, findPackage } from \"../../api/package/util\";\nimport { useCatalog } from \"../../hooks/useCatalog\";\nimport NotFound from \"../NotFound\";\n\ninterface RouteParams {\n name: string;\n scope?: string;\n}\n\nconst buildRedirectUrl = (catalog: Packages, name: string, scope?: string) => {\n const prefix = \"/packages/\";\n const packageName = getFullPackageName(name, scope);\n const pkg = findPackage(catalog, packageName);\n\n if (!pkg) {\n return undefined;\n }\n\n const { version } = pkg;\n const suffix = `/v/${version}`;\n return `${prefix}${packageName}${suffix}`;\n};\n\nexport const PackageLatest: FunctionComponent = () => {\n const { name, scope }: RouteParams = useParams();\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 url = buildRedirectUrl(catalog.data, name, scope);\n\n return url ? <Redirect to={url} /> : <NotFound />;\n};\n","import type { FunctionComponent } from \"react\";\nimport { Switch, Route, useRouteMatch } from \"react-router-dom\";\nimport { NotFound } from \"../NotFound\";\nimport Package from \"../Package\";\nimport PackageLatest from \"../PackageLatest\";\n\nconst nameRegexp = \"[^@\\\\/]+\";\nconst scopeRegexp = \"@[^\\\\/]+\";\n\nexport const Packages: FunctionComponent = () => {\n const { path } = useRouteMatch();\n\n return (\n <Switch>\n <Route\n exact\n path={`${path}/:scope(${scopeRegexp})?/:name(${nameRegexp})`}\n >\n <PackageLatest />\n </Route>\n <Route\n path={`${path}/:scope(${scopeRegexp})?/:name(${nameRegexp})/v/:version`}\n >\n <Package />\n </Route>\n <Route path=\"*\">\n <NotFound />\n </Route>\n </Switch>\n );\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","PackageTag","value","_ref$label","zIndex","tagProps","_objectWithoutProperties","_excluded","NavLink","to","getSearchPath","keywords","Tag","_objectSpread","_hover","textDecoration","TagLabel","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","_Fragment","Helmet","process","content","charSet","map","_ref2","url","mimeType","href","rel","type","property","Time","forwardRef","ref","date","formatString","format","formattedDate","boxProps","Box","as","dateTime","toISOString","displayName","key","data","useConfig","defaultLang","Language","TypeScript","LOCAL_KEY","isValidLang","lang","useLanguage","options","arguments","length","undefined","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","_slicedToArray","setLanguage","set","toString","update","useCallback","val","setItem","_unused2","useMemo","URLSearchParams","mapPackageTags","packageTags","tag","_tag$keyword","Boolean","keyword","_tag$keyword2","id","mapPackageKeywords","KEYWORD_IGNORE_LIST","tagObjects","Array","tagLabels","Set","toLowerCase","push","add","reduce","accum","highlight","Picture","sources","props","source","idx","media","srcSet","bgSources","optimal","fallback","NotFound","Center","h","position","inset","Flex","justify","Button","Link","colorScheme","packageEvent","_len","e","_key","eventName","PACKAGE_ANALYTICS","SCOPE","SELECT_VERSION","CDK_BADGE","badge","KEYWORD","kw","DOCUMENTATION","TAB","DEPENDENCIES","GITHUB_BADGE","FEEDBACK","PUBLISHER","CONSTRUCT_HUB","ABUSE","DOCS_CONTAINER_ID","sanitize","input","appendMenuItem","items","item","last","level","splitOnHeaders","md","regex","RegExp","split","str","prev","startsWith","getHeaderAttributes","hdr","_hdr$match","_exec2","_attrs$dataHeadingT","_attrs$dataHeadingI","attrs","match","_exec","_str$split","_str$split2","exec","parsedValue","_ref3","_ref4","wEmoji","_emoji$get","emoji","encodeURIComponent","parseMarkdownStructure","_ref5","scope","version","submodule","nameSegment","basePath","query","separator","segments","apiReferenceStr","pop","readmeStr","apiReferenceSplit","readmeSplit","apiReferenceParsed","trim","baseReadmePath","readmeChildren","_str$match$length","_str$match","_getHeaderAttributes","normalizedTitle","endsWith","slice","normalizeTitle","menuItem","path","menuItems","README_ITEM_ID","types","prevType","prevLevel","forEach","_str$match$length2","_str$match2","isHeader","_getHeaderAttributes2","getApiPath","readme","apiReference","getFullPackageName","getAssetsPath","prefix","API_PATHS","PACKAGES_PREFIX","body","sanitizeVersion","ver","sanitized","substring","getDocsSuffix","extension","defaultVersions","packages","updated","fetchVersions","async","response","fetch","ALL_VERSIONS","ok","json","catch","err","console","error","warn","statusText","PackageStateContext","createContext","usePackageState","state","useContext","Error","PackageStateProvider","_q$get","_assembly$data$descri","_assembly$data","_assembly$data2","_assembly$data2$targe","_useParams","useParams","_useLanguage","SUBMODULE","versionData","useQuery","pkgName","allVersions","markdownDocs","docsSuffix","markdownPath","expectedContentType","contentType","headers","includes","text","fetchMarkdownDocs","languageFilename","jsonDocs","jsonPath","fetchJsonDocs","assembly","assemblyPath","ASSEMBLY_SUFFIX","fetchAssembly","metadata","sanitizedVersion","metadataPath","METADATA_SUFFIX","fetchMetadata","pageTitle","pageDescription","hasError","hasDocs","isLoading","targets","isLoadingDocs","parsedMd","Provider","testIds","createTestIds","DependenciesList","_assembly$dependencie","PageLoader","depEntries","Object","entries","dependencies","dependenciesList","mx","wrap","_first","ml","dependenciesLink","p","getPackagePath","GithubIcon","Icon","clipRule","d","fill","fillRule","iconProps","FeedbackLinks","_assembly$repository","orientation","useBreakpointValue","base","divider","Divider","borderColor","mr","repo","repository","repoUrl","_repo$url","backgroundColor","borderTop","borderTopColor","feedbackLinks","px","py","ExternalLink","githubLink","fontSize","hasIcon","rightIcon","variant","reportLink","CONSTRUCT_HUB_REPO_URL","reportAbuseLink","EmailIcon","SearchInput","inputRef","onChange","onSubmit","inputValue","setInputValue","useDebounce","Form","InputGroup","InputLeftElement","SearchIcon","Input","target","placeholder","SearchModal","isOpen","onClose","onInputChange","submodules","useRef","navigate","preventDefault","Modal","initialFocusRef","ModalOverlay","ModalContent","ModalCloseButton","ModalHeader","ModalBody","pb","UnorderedList","m","maxH","overflow","role","tabIndex","SearchItem","onClick","ChooseSubmodule","_assembly$data$submod","_usePackageState","allSubmodules","keys","_useDisclosure","useDisclosure","onOpen","currentSubmodule","submoduleText","setFilter","packageName","getUrl","submoduleName","results","submoduleDisplayName","borderRadius","leftIcon","ArrowBackIcon","onGoBack","flexGrow","ChevronDownIcon","NavItemWrapper","dataEvent","showToggle","sharedProps","bg","pl","marginLeft","textOverflow","whiteSpace","navTreeEvent","NavItem","_getIsActiveItem","_children$length","getIsActiveItem","trackCustomEvent","useAnalytics","defaultIsOpen","disclosure","linkIsActive","showChildren","nestedItems","_createElement","IconButton","ChevronRightIcon","onToggle","clickEvent","size","_before","bottom","left","top","display","NavTree","maxWidth","NavDrawer","drawer","location","hasSubmodules","lg","pos","right","boxShadow","ChevronUpIcon","Portal","Drawer","blockScrollOnMount","DrawerOverlay","DrawerContent","DrawerHeader","DrawerCloseButton","DrawerBody","mb","sx","button","justifyContent","DocsError","fontStyle","wordBreak","CopyButton","btnProps","_useClipboard","useClipboard","hasCopied","onCopy","CheckIcon","CopyIcon","minW","MultiLineRenderer","code","tokens","getLineProps","getTokenProps","borderTopRadius","overflowX","line","i","token","wordWrap","SingleLineRenderer","Grid","templateColumns","maxW","Code","codeTheme","nightOwlLight","nightOwl","defaultProps","theme","border","className","style","inline","_ref$language","InlineCode","marginTop","Children","toArray","child","BlockCode","stringContent","node","acc","HeadingLink","_active","visibility","_focus","alignItems","lineHeight","opacity","LinkIcon","boxSize","Headings","_dataElement$dataset$","_dataElement$dataset$2","elem","dataElement","DOMParser","parseFromString","ReactDOMServer","querySelector","dataset","headingTitle","headingId","borderBottom","mt","Heading","Markdown_testIds","components","a","linkProps","URL","hostname","window","blockquote","borderLeft","borderLeftColor","marginX","caption","TableCaption","em","h1","h2","h3","h4","h5","h6","hr","_props","img","li","ListItem","ol","OrderedList","my","pre","sup","_ref6","isArray","first","table","ChakraTable","tbody","Tbody","td","Td","tfoot","Tfoot","th","Th","thead","Thead","tr","Tr","ul","padding","ghSchema","githubSchema","attributes","span","_ghSchema$attributes$","rehypePlugins","rehypeRaw","rehypeSanitize","remarkPlugins","remarkGfm","remarkEmoji","GITHUB_REPO_REGEX","Markdown","repoConfig","directory","_match","owner","parseGitHubRepository","toAbsoluteUri","githubPrefix","githubSuffix","ReactMarkdown","uri","subdir","container","transformImageUri","transformLinkUri","PackageReadme","PackageDocsError","issueLink","PackageTypeDocs","rootId","_usePackageState2","docs","usePackageTypeDocs","typeId","PrimaryDocNavigation","primaryNavItems","pathUrl","origin","API_URL_RESOURCE","normalizeId","getItemIds","_item$children","ids","getElementId","el","getAttribute","getSectionIdSet","flat","getPathHelper","_id$split$slice","_id$split$slice2","_toArray","_arrayLikeToArray","docsSectionsMap","initializer","header","getValues","_e$initializer$parame","_e$initializer","parameters","getPath","instanceMethods","staticMethods","properties","constants","members","useSectionItems","useRouteMatch","_useMemo","_jsonDocs$data","classes","constructs","interfaces","structs","enums","parts","isApiPath","readmeSection","typeInfo","find","schemaToSectionItems","schemaKey","parentItem","childItems","_getPath","intersectionObserverOptions","rootMargin","mutationObserverOptions","childList","subtree","SecondaryDocNavigation","intersectingHeader","useIntersectingHeader","sectionItems","sectionIdSet","current","setIntersectingHeader","intersectionObserver","IntersectionObserver","entry","isIntersecting","newSectionIdSet","firstId","docContainer","document","getElementById","sections","mutationObserver","MutationObserver","records","_sections","section","unobserve","querySelectorAll","sectionId","observe","disconnect","allowIntersectTakeover","recentlyClickedItem","setRecentlyClickedItem","setTimeout","getIsLinkActive","StickyNavContainer","offset","alignSelf","maxHeight","TOP_OFFSET","SubmoduleSelector","_data$submodules","PackageDocs","requestAnimationFrame","scrollIntoView","scrollTo","columnGap","width","borderRight","borderRightColor","pr","overflowY","scrollMarginTop","Switch","Redirect","exact","from","Route","ToggleButton","openText","closeText","buttonProps","LicenseLink","license","spdx","FORMATS","WithLabel","tooltip","isDisabled","Downloads","downloads","DownloadIcon","toLocaleString","Details","stats","useStats","collapse","packageLinks","_highlightsFrom","highlightsFrom","_stats$packages","_stats$packages$name","_stats$packages$name$","_metadata$links$npm","_metadata$links","npm","username","author","publishDate","Date","getRepoUrlAndHost","repoLink","licenseLink","_metadata$packageLink","linkLabel","configKey","linkText","link","registry","links","registryLink","Fragment","getDetailItemsFromPackage","alwaysShow","showWithCollapse","Collapse","animateOpacity","in","makeGridAreas","rows","row","col","GRID_AREAS","baseGridAreas","lgGridAreas","HeaderContainer","pt","rowGap","templateAreas","templateRows","SelectVersion","currentVersion","searchAPI","useSearchContext","_useHistory","findByName","versions","majorVersions","pkg","result","sort","semver","Select","selectVersionDropdown","evt","api","_pathname$split","urlWithHash","selectVersionItem","_metadata$packageTags","_assembly$keywords","stackProps","tags","tagObjectsFrom","constructFrameworks","mapConstructFrameworks","constructFramework","cdkName","majorVersion","ChakraHeading","flexShrink","isTruncated","gap","CDKTypeBadge","_ref4$keyword","_ref4$keyword2","Install","Python","_assembly$targets","_assembly$targets$pyt","python","distName","Java","_assembly$targets2","_assembly$targets2$ja","_assembly$targets2$ja2","_assembly$targets3","_assembly$targets3$ja","_assembly$targets3$ja2","groupId","java","maven","artifactId","DotNet","_assembly$targets4","_assembly$targets4$do","packageId","dotnet","Go","_assembly$targets5","_assembly$targets5$go","repositoryUrl","go","moduleName","getCodeSample","LanguageBar","targetLanguages","selectedLanguage","setSelectedLanguage","LANGUAGES","indexOf","isSelected","LangIcon","LANGUAGE_RENDER_MAP","cursor","disabled","height","languageSet","LanguageSelection","_useLanguage3","changeLanguage","selectedIsValid","PackageHeader","asm","gridArea","Spinner","ShareInfo","setTabIndex","encodedName","baseUrl","packagePath","imageUrl","linkUrl","markdown","html","Tabs","index","TabList","Tab","TabPanels","TabPanel","PackageLayout","dependenciesTab","badgeTab","Package","buildRedirectUrl","catalog","findPackage","p1","p2","date1","getTime","PackageLatest","useCatalog","minH","nameRegexp","scopeRegexp","Packages"],"sourceRoot":""}