@eventcatalog/core 1.2.7 → 2.0.1

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 (622) hide show
  1. package/.changeset/config.json +11 -0
  2. package/.github/CODEOWNERS +3 -0
  3. package/.github/ISSUE_TEMPLATE.md +1 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  5. package/.github/funding.yml +1 -0
  6. package/.github/workflows/lint.yml +22 -0
  7. package/.github/workflows/release.yml +34 -0
  8. package/.github/workflows/verify-build.yml +27 -0
  9. package/.prettierignore +7 -0
  10. package/.prettierrc +10 -0
  11. package/CHANGELOG.md +10 -0
  12. package/LICENSE.md +21 -0
  13. package/README.md +206 -5
  14. package/astro.config.mjs +57 -0
  15. package/bin/dist/eventcatalog.cjs +3139 -0
  16. package/bin/dist/eventcatalog.d.cts +1 -0
  17. package/bin/dist/eventcatalog.d.ts +1 -0
  18. package/bin/dist/eventcatalog.js +3141 -0
  19. package/images/example.png +0 -0
  20. package/package.json +59 -52
  21. package/public/icons/github.svg +1 -0
  22. package/public/icons/x-twitter.svg +1 -0
  23. package/public/logo.png +0 -0
  24. package/public/slack-icon.svg +1 -0
  25. package/scripts/build-ci.js +22 -0
  26. package/scripts/catalog-to-astro-content-directory.js +188 -0
  27. package/scripts/default-files-for-collections/commands.md +8 -0
  28. package/scripts/default-files-for-collections/domains.md +8 -0
  29. package/scripts/default-files-for-collections/events.md +8 -0
  30. package/scripts/default-files-for-collections/services.md +8 -0
  31. package/scripts/default-files-for-collections/teams.md +11 -0
  32. package/scripts/default-files-for-collections/users.md +11 -0
  33. package/scripts/start-catalog-locally.js +23 -0
  34. package/scripts/watcher.js +53 -0
  35. package/src/components/DocsNavigation.astro +110 -0
  36. package/src/components/Header.astro +65 -0
  37. package/src/components/Lists/BasicList.tsx +59 -0
  38. package/src/components/Lists/OwnersList.tsx +101 -0
  39. package/src/components/Lists/PillList.tsx +67 -0
  40. package/src/components/Lists/VersionList.astro +29 -0
  41. package/src/components/MDX/Accordion/Accordion.astro +10 -0
  42. package/src/components/MDX/Accordion/Accordion.tsx +29 -0
  43. package/src/components/MDX/Accordion/AccordionGroup.astro +16 -0
  44. package/{components/Mdx → src/components/MDX}/Admonition.tsx +6 -5
  45. package/src/components/MDX/File.tsx +43 -0
  46. package/src/components/MDX/NodeGraph/DownloadButton.tsx +58 -0
  47. package/src/components/MDX/NodeGraph/NodeGraph.astro +82 -0
  48. package/src/components/MDX/NodeGraph/NodeGraph.tsx +135 -0
  49. package/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +15 -0
  50. package/src/components/MDX/NodeGraph/Nodes/Command.tsx +74 -0
  51. package/src/components/MDX/NodeGraph/Nodes/Event.tsx +74 -0
  52. package/src/components/MDX/NodeGraph/Nodes/Service.tsx +83 -0
  53. package/src/components/MDX/OpenAPI/OpenAPI.tsx +35 -0
  54. package/src/components/MDX/Schema.tsx +45 -0
  55. package/src/components/MDX/components.tsx +24 -0
  56. package/src/components/Search.astro +108 -0
  57. package/src/components/Seo.astro +79 -0
  58. package/src/components/SideBars/DomainSideBar.astro +42 -0
  59. package/src/components/SideBars/MessageSideBar.astro +81 -0
  60. package/src/components/SideBars/ServiceSideBar.astro +93 -0
  61. package/src/components/Tables/DebouncedInput.tsx +32 -0
  62. package/src/components/Tables/Table.tsx +228 -0
  63. package/src/components/Tables/columns/DomainTableColumns.tsx +118 -0
  64. package/src/components/Tables/columns/MessageTableColumns.tsx +159 -0
  65. package/src/components/Tables/columns/ServiceTableColumns.tsx +162 -0
  66. package/src/components/Tables/columns/index.tsx +17 -0
  67. package/src/components/Tables/filters/custom-filters.ts +14 -0
  68. package/src/content/config.ts +119 -0
  69. package/src/env.d.ts +2 -0
  70. package/src/layouts/CustomDocsPageLayout.astro +100 -0
  71. package/src/layouts/DiscoverLayout.astro +120 -0
  72. package/src/layouts/DocsLayout.astro +59 -0
  73. package/src/layouts/PlainPage.astro +29 -0
  74. package/src/layouts/VisualiserLayout.astro +73 -0
  75. package/src/pages/discover/[type]/index.astro +36 -0
  76. package/src/pages/docs/[type]/[id]/[version]/index.astro +215 -0
  77. package/src/pages/docs/[type]/[id]/[version]/spec/index.astro +93 -0
  78. package/src/pages/docs/index.md +4 -0
  79. package/src/pages/docs/teams/[id]/index.astro +127 -0
  80. package/src/pages/docs/users/[id]/index.astro +132 -0
  81. package/src/pages/visualiser/[type]/[id]/[version]/index.astro +46 -0
  82. package/src/pages/visualiser/index.astro +25 -0
  83. package/src/remark-plugins/mermaid.ts +27 -0
  84. package/src/remark-plugins/remark-modified-time.mjs +9 -0
  85. package/src/types/index.ts +2 -0
  86. package/src/utils/collections/util.ts +22 -0
  87. package/src/utils/colors.ts +14 -0
  88. package/src/utils/commands/node-graph.ts +107 -0
  89. package/src/utils/commands.ts +60 -0
  90. package/src/utils/config/catalog.ts +2 -0
  91. package/src/utils/domains/domains.ts +50 -0
  92. package/src/utils/domains/node-graph.ts +60 -0
  93. package/src/utils/events/node-graph.ts +108 -0
  94. package/src/utils/events.ts +62 -0
  95. package/src/utils/example-remark-plugin.mjs +6 -0
  96. package/src/utils/messages.ts +7 -0
  97. package/src/utils/node-graph-utils/utils.ts +31 -0
  98. package/src/utils/services/node-graph.ts +133 -0
  99. package/src/utils/services/services.ts +88 -0
  100. package/src/utils/teams.ts +47 -0
  101. package/src/utils/users.ts +59 -0
  102. package/tailwind.config.mjs +24 -0
  103. package/tsconfig.json +11 -26
  104. package/.next/BUILD_ID +0 -1
  105. package/.next/build-manifest.json +0 -246
  106. package/.next/cache/.tsbuildinfo +0 -1
  107. package/.next/cache/config.json +0 -7
  108. package/.next/cache/eslint/.cache_1bay4w0 +0 -1
  109. package/.next/cache/next-server.js.nft.json +0 -1
  110. package/.next/cache/webpack/client-production/0.pack +0 -0
  111. package/.next/cache/webpack/client-production/index.pack +0 -0
  112. package/.next/cache/webpack/server-production/0.pack +0 -0
  113. package/.next/cache/webpack/server-production/index.pack +0 -0
  114. package/.next/export-detail.json +0 -1
  115. package/.next/export-marker.json +0 -1
  116. package/.next/images-manifest.json +0 -1
  117. package/.next/next-server.js.nft.json +0 -1
  118. package/.next/package.json +0 -1
  119. package/.next/prerender-manifest.json +0 -1
  120. package/.next/react-loadable-manifest.json +0 -2112
  121. package/.next/required-server-files.json +0 -1
  122. package/.next/routes-manifest.json +0 -1
  123. package/.next/server/chunks/109.js +0 -608
  124. package/.next/server/chunks/237.js +0 -109
  125. package/.next/server/chunks/267.js +0 -257
  126. package/.next/server/chunks/274.js +0 -32
  127. package/.next/server/chunks/29.js +0 -675
  128. package/.next/server/chunks/331.js +0 -750
  129. package/.next/server/chunks/362.js +0 -570
  130. package/.next/server/chunks/428.js +0 -84
  131. package/.next/server/chunks/50.js +0 -466
  132. package/.next/server/chunks/526.js +0 -159
  133. package/.next/server/chunks/537.js +0 -136
  134. package/.next/server/chunks/788.js +0 -162
  135. package/.next/server/chunks/797.js +0 -92
  136. package/.next/server/chunks/8.js +0 -173
  137. package/.next/server/chunks/854.js +0 -107
  138. package/.next/server/chunks/938.js +0 -140
  139. package/.next/server/chunks/944.js +0 -721
  140. package/.next/server/chunks/962.js +0 -13
  141. package/.next/server/chunks/97.js +0 -2829
  142. package/.next/server/chunks/992.js +0 -50
  143. package/.next/server/chunks/font-manifest.json +0 -1
  144. package/.next/server/font-manifest.json +0 -1
  145. package/.next/server/middleware-manifest.json +0 -6
  146. package/.next/server/pages/404.html +0 -12
  147. package/.next/server/pages/500.html +0 -12
  148. package/.next/server/pages/_app.js +0 -623
  149. package/.next/server/pages/_app.js.nft.json +0 -1
  150. package/.next/server/pages/_document.js +0 -120
  151. package/.next/server/pages/_document.js.nft.json +0 -1
  152. package/.next/server/pages/_error.js +0 -148
  153. package/.next/server/pages/_error.js.nft.json +0 -1
  154. package/.next/server/pages/domains/Orders/events/OrderComplete/logs.html +0 -1
  155. package/.next/server/pages/domains/Orders/events/OrderComplete/logs.json +0 -1
  156. package/.next/server/pages/domains/Orders/events/OrderComplete.html +0 -40
  157. package/.next/server/pages/domains/Orders/events/OrderComplete.json +0 -1
  158. package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.html +0 -1
  159. package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.json +0 -1
  160. package/.next/server/pages/domains/Orders/events/OrderConfirmed.html +0 -40
  161. package/.next/server/pages/domains/Orders/events/OrderConfirmed.json +0 -1
  162. package/.next/server/pages/domains/Orders/events/OrderCreated/logs.html +0 -1
  163. package/.next/server/pages/domains/Orders/events/OrderCreated/logs.json +0 -1
  164. package/.next/server/pages/domains/Orders/events/OrderCreated.html +0 -2
  165. package/.next/server/pages/domains/Orders/events/OrderCreated.json +0 -1
  166. package/.next/server/pages/domains/Orders/events/OrderRequested/logs.html +0 -1
  167. package/.next/server/pages/domains/Orders/events/OrderRequested/logs.json +0 -1
  168. package/.next/server/pages/domains/Orders/events/OrderRequested.html +0 -40
  169. package/.next/server/pages/domains/Orders/events/OrderRequested.json +0 -1
  170. package/.next/server/pages/domains/Orders/services/Orders Service.html +0 -2
  171. package/.next/server/pages/domains/Orders/services/Orders Service.json +0 -1
  172. package/.next/server/pages/domains/Orders.html +0 -2
  173. package/.next/server/pages/domains/Orders.json +0 -1
  174. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +0 -1
  175. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
  176. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +0 -59
  177. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
  178. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +0 -66
  179. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
  180. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +0 -65
  181. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +0 -1
  182. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.html +0 -1
  183. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
  184. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.html +0 -48
  185. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.json +0 -1
  186. package/.next/server/pages/domains/Shopping.html +0 -2
  187. package/.next/server/pages/domains/Shopping.json +0 -1
  188. package/.next/server/pages/domains/[domain]/events/[name]/logs.js +0 -345
  189. package/.next/server/pages/domains/[domain]/events/[name]/logs.js.nft.json +0 -1
  190. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +0 -435
  191. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js.nft.json +0 -1
  192. package/.next/server/pages/domains/[domain]/events/[name].js +0 -354
  193. package/.next/server/pages/domains/[domain]/events/[name].js.nft.json +0 -1
  194. package/.next/server/pages/domains/[domain]/services/[name].js +0 -402
  195. package/.next/server/pages/domains/[domain]/services/[name].js.nft.json +0 -1
  196. package/.next/server/pages/domains/[domain].js +0 -549
  197. package/.next/server/pages/domains/[domain].js.nft.json +0 -1
  198. package/.next/server/pages/domains.html +0 -3
  199. package/.next/server/pages/domains.js +0 -576
  200. package/.next/server/pages/domains.js.nft.json +0 -1
  201. package/.next/server/pages/domains.json +0 -1
  202. package/.next/server/pages/events/PaymentProcessed/logs.html +0 -1
  203. package/.next/server/pages/events/PaymentProcessed/logs.json +0 -1
  204. package/.next/server/pages/events/PaymentProcessed.html +0 -44
  205. package/.next/server/pages/events/PaymentProcessed.json +0 -1
  206. package/.next/server/pages/events/ShipmentDelivered/logs.html +0 -1
  207. package/.next/server/pages/events/ShipmentDelivered/logs.json +0 -1
  208. package/.next/server/pages/events/ShipmentDelivered.html +0 -44
  209. package/.next/server/pages/events/ShipmentDelivered.json +0 -1
  210. package/.next/server/pages/events/ShipmentDispatched/logs.html +0 -1
  211. package/.next/server/pages/events/ShipmentDispatched/logs.json +0 -1
  212. package/.next/server/pages/events/ShipmentDispatched.html +0 -44
  213. package/.next/server/pages/events/ShipmentDispatched.json +0 -1
  214. package/.next/server/pages/events/ShipmentPrepared/logs.html +0 -1
  215. package/.next/server/pages/events/ShipmentPrepared/logs.json +0 -1
  216. package/.next/server/pages/events/ShipmentPrepared.html +0 -2
  217. package/.next/server/pages/events/ShipmentPrepared.json +0 -1
  218. package/.next/server/pages/events/[name]/logs.js +0 -263
  219. package/.next/server/pages/events/[name]/logs.js.nft.json +0 -1
  220. package/.next/server/pages/events/[name]/v/[version].js +0 -431
  221. package/.next/server/pages/events/[name]/v/[version].js.nft.json +0 -1
  222. package/.next/server/pages/events/[name].js +0 -354
  223. package/.next/server/pages/events/[name].js.nft.json +0 -1
  224. package/.next/server/pages/events.html +0 -11
  225. package/.next/server/pages/events.js +0 -789
  226. package/.next/server/pages/events.js.nft.json +0 -1
  227. package/.next/server/pages/events.json +0 -1
  228. package/.next/server/pages/index.html +0 -1
  229. package/.next/server/pages/index.js.nft.json +0 -1
  230. package/.next/server/pages/overview.html +0 -1
  231. package/.next/server/pages/overview.js +0 -240
  232. package/.next/server/pages/overview.js.nft.json +0 -1
  233. package/.next/server/pages/overview.json +0 -1
  234. package/.next/server/pages/services/Orders Service.html +0 -1
  235. package/.next/server/pages/services/Orders Service.json +0 -1
  236. package/.next/server/pages/services/Payment Service.html +0 -2
  237. package/.next/server/pages/services/Payment Service.json +0 -1
  238. package/.next/server/pages/services/Shipping Service.html +0 -2
  239. package/.next/server/pages/services/Shipping Service.json +0 -1
  240. package/.next/server/pages/services/[name].js +0 -319
  241. package/.next/server/pages/services/[name].js.nft.json +0 -1
  242. package/.next/server/pages/services.html +0 -4
  243. package/.next/server/pages/services.js +0 -741
  244. package/.next/server/pages/services.js.nft.json +0 -1
  245. package/.next/server/pages/services.json +0 -1
  246. package/.next/server/pages/users/[id].js +0 -475
  247. package/.next/server/pages/users/[id].js.nft.json +0 -1
  248. package/.next/server/pages/users/dboyne.html +0 -16
  249. package/.next/server/pages/users/dboyne.json +0 -1
  250. package/.next/server/pages/users/mSmith.html +0 -13
  251. package/.next/server/pages/users/mSmith.json +0 -1
  252. package/.next/server/pages/users.html +0 -1
  253. package/.next/server/pages/users.js.nft.json +0 -1
  254. package/.next/server/pages/visualiser.html +0 -16
  255. package/.next/server/pages/visualiser.js +0 -739
  256. package/.next/server/pages/visualiser.js.nft.json +0 -1
  257. package/.next/server/pages/visualiser.json +0 -1
  258. package/.next/server/pages-manifest.json +0 -23
  259. package/.next/server/webpack-runtime.js +0 -259
  260. package/.next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
  261. package/.next/static/chunks/1093.67f04e0e6b50c9e5.js +0 -1
  262. package/.next/static/chunks/1178-c3c8c74ac08d7c77.js +0 -1
  263. package/.next/static/chunks/1254.a78e9444e102b061.js +0 -1
  264. package/.next/static/chunks/130.fa515915f80e17f9.js +0 -1
  265. package/.next/static/chunks/1318.a5349c1b3da2b184.js +0 -1
  266. package/.next/static/chunks/1415.55c7c89ef0a8aab1.js +0 -1
  267. package/.next/static/chunks/1455-8df9e334899797b2.js +0 -1
  268. package/.next/static/chunks/172-940ad0353b57ff98.js +0 -1
  269. package/.next/static/chunks/1733.1bead33faaa9eeb0.js +0 -1
  270. package/.next/static/chunks/1806.3ed762ab3ecedc9d.js +0 -1
  271. package/.next/static/chunks/2157.cd3aa9fee64d976e.js +0 -1
  272. package/.next/static/chunks/2566.4084969752c613a9.js +0 -1
  273. package/.next/static/chunks/2620-21775e17d8a6a407.js +0 -1
  274. package/.next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
  275. package/.next/static/chunks/3116-446dd88b93c44018.js +0 -1
  276. package/.next/static/chunks/3193.f69abc67598575a9.js +0 -1
  277. package/.next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
  278. package/.next/static/chunks/3271.83723868c9b8e7c1.js +0 -1
  279. package/.next/static/chunks/3287.f50c49237cef9ae8.js +0 -1
  280. package/.next/static/chunks/39a9cf3f.8cc8ac3887be2999.js +0 -1
  281. package/.next/static/chunks/3ede58a6.44fda8e0e5284248.js +0 -1
  282. package/.next/static/chunks/40.16abe9d3c57256d6.js +0 -1
  283. package/.next/static/chunks/407.3078ab29e8d18c02.js +0 -1
  284. package/.next/static/chunks/438.dea6dada9bd4b683.js +0 -1
  285. package/.next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
  286. package/.next/static/chunks/4466.dc03dbcd026995cc.js +0 -1
  287. package/.next/static/chunks/4737.ae583b848d202a93.js +0 -1
  288. package/.next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
  289. package/.next/static/chunks/5092.8ead508f86f4b11c.js +0 -1
  290. package/.next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
  291. package/.next/static/chunks/5835.a9405ab0913544df.js +0 -1
  292. package/.next/static/chunks/6067.cc75c37618cf0147.js +0 -1
  293. package/.next/static/chunks/6121.758a43c0db92ca23.js +0 -1
  294. package/.next/static/chunks/6229.7a9f0c8b204b76dc.js +0 -1
  295. package/.next/static/chunks/6487.44c6e83c098ed47f.js +0 -1
  296. package/.next/static/chunks/6582.06af6897be0d24b3.js +0 -1
  297. package/.next/static/chunks/6724.ed1280c926906c76.js +0 -1
  298. package/.next/static/chunks/6772-fc6143a6584acf9b.js +0 -1
  299. package/.next/static/chunks/6790-f4527d80153a3e25.js +0 -1
  300. package/.next/static/chunks/7005-09e42f99859b8d03.js +0 -1
  301. package/.next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
  302. package/.next/static/chunks/7374.a673e317f007d3b6.js +0 -1
  303. package/.next/static/chunks/74030e57.9636ad3c5c96940b.js +0 -1
  304. package/.next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
  305. package/.next/static/chunks/7469.d932a6b01168373b.js +0 -1
  306. package/.next/static/chunks/7636.9eaf88a09c2a88ed.js +0 -1
  307. package/.next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
  308. package/.next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
  309. package/.next/static/chunks/828-1a4a120d2fbea802.js +0 -1
  310. package/.next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
  311. package/.next/static/chunks/8470.c811187bd2982a8a.js +0 -1
  312. package/.next/static/chunks/9076.0a13d7d5aab7bfa1.js +0 -1
  313. package/.next/static/chunks/9097.1efc23284d82765c.js +0 -1
  314. package/.next/static/chunks/9270.a4c64e6be4a278a4.js +0 -1
  315. package/.next/static/chunks/9404.a44dfe8858add605.js +0 -1
  316. package/.next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
  317. package/.next/static/chunks/9930.28415573db2b7806.js +0 -7
  318. package/.next/static/chunks/b2f22a9c-0216e9400ac0ac1c.js +0 -1
  319. package/.next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
  320. package/.next/static/chunks/eb6e03f4.3dd8d555aebe18ff.js +0 -1
  321. package/.next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
  322. package/.next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
  323. package/.next/static/chunks/main-da37322a396d572a.js +0 -1
  324. package/.next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
  325. package/.next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
  326. package/.next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
  327. package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-45b0d7bc42f6f81c.js +0 -1
  328. package/.next/static/chunks/pages/domains/[domain]/events/[name]-15bb0ef487953fa1.js +0 -1
  329. package/.next/static/chunks/pages/domains/[domain]/services/[name]-a4857d4d0aa4d04b.js +0 -1
  330. package/.next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
  331. package/.next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
  332. package/.next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
  333. package/.next/static/chunks/pages/events/[name]/v/[version]-b718302d7185dcb0.js +0 -1
  334. package/.next/static/chunks/pages/events/[name]-8cb0b3b469bd7845.js +0 -1
  335. package/.next/static/chunks/pages/events-83c9161a6e696533.js +0 -1
  336. package/.next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
  337. package/.next/static/chunks/pages/overview-4251cc856f776fc2.js +0 -1
  338. package/.next/static/chunks/pages/services/[name]-7030da24d73a8ea3.js +0 -1
  339. package/.next/static/chunks/pages/services-7069c0a5295e53ae.js +0 -1
  340. package/.next/static/chunks/pages/users/[id]-00aeace648436383.js +0 -1
  341. package/.next/static/chunks/pages/users-412f257b1de51363.js +0 -1
  342. package/.next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
  343. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  344. package/.next/static/chunks/webpack-1ea4cabfc6778694.js +0 -1
  345. package/.next/static/css/7e14b4dede1671ad.css +0 -1
  346. package/.next/static/css/94b9a747218712b2.css +0 -3
  347. package/.next/static/css/ae8abf3666c55019.css +0 -5
  348. package/.next/static/css/cc3c8fcadcf7a58b.css +0 -1
  349. package/.next/static/css/deb57cf90a65a90f.css +0 -1
  350. package/.next/static/css/ed97de5465a152bb.css +0 -1
  351. package/.next/static/wZIh57Hs672ULoPeUaYa1/_buildManifest.js +0 -1
  352. package/.next/static/wZIh57Hs672ULoPeUaYa1/_ssgManifest.js +0 -1
  353. package/.next/trace +0 -141
  354. package/bin/eventcatalog.js +0 -141
  355. package/components/BreadCrumbs.tsx +0 -50
  356. package/components/ContentView.tsx +0 -123
  357. package/components/Footer.tsx +0 -31
  358. package/components/Grids/DomainGrid.tsx +0 -61
  359. package/components/Grids/EventGrid.tsx +0 -102
  360. package/components/Grids/ServiceGrid.tsx +0 -84
  361. package/components/Grids/UserGrid.tsx +0 -55
  362. package/components/Header.tsx +0 -74
  363. package/components/Mdx/AsyncApiSpec.tsx +0 -25
  364. package/components/Mdx/Examples.tsx +0 -70
  365. package/components/Mdx/NodeGraph/GraphElements.tsx +0 -294
  366. package/components/Mdx/NodeGraph/GraphLayout.ts +0 -110
  367. package/components/Mdx/NodeGraph/Node.tsx +0 -15
  368. package/components/Mdx/NodeGraph/NodeGraph.tsx +0 -168
  369. package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +0 -102
  370. package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +0 -115
  371. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphElements.spec.ts.snap +0 -559
  372. package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphLayout.spec.ts.snap +0 -81
  373. package/components/Mdx/OpenApiSpec.tsx +0 -21
  374. package/components/Mdx/SchemaViewer/SchemaViewer.module.css +0 -5
  375. package/components/Mdx/SchemaViewer/SchemaViewer.tsx +0 -34
  376. package/components/Mermaid/index.tsx +0 -58
  377. package/components/NotFound/index.tsx +0 -40
  378. package/components/Sidebars/DomainSidebar.tsx +0 -55
  379. package/components/Sidebars/EventSidebar.tsx +0 -172
  380. package/components/Sidebars/ServiceSidebar.tsx +0 -128
  381. package/components/Sidebars/components/ExternalLinks.tsx +0 -28
  382. package/components/Sidebars/components/ItemList.tsx +0 -32
  383. package/components/Sidebars/components/Owners.tsx +0 -38
  384. package/components/Sidebars/components/Tags.tsx +0 -45
  385. package/components/SyntaxHighlighter.tsx +0 -42
  386. package/eventcatalog.config.js +0 -58
  387. package/eventcatalog.styles.css +0 -15
  388. package/hooks/EventCatalog.tsx +0 -54
  389. package/lib/__tests__/assets/domains/User/events/UserCreated/index.md +0 -20
  390. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.cs +0 -31
  391. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.js +0 -1
  392. package/lib/__tests__/assets/domains/User/events/UserRemoved/index.md +0 -16
  393. package/lib/__tests__/assets/domains/User/events/UserRemoved/schema.json +0 -4
  394. package/lib/__tests__/assets/domains/User/index.md +0 -16
  395. package/lib/__tests__/assets/domains/User/services/User Service/index.md +0 -19
  396. package/lib/__tests__/assets/events/AddedItemToCart/index.md +0 -25
  397. package/lib/__tests__/assets/events/EmailSent/index.md +0 -15
  398. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.cs +0 -31
  399. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.js +0 -1
  400. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/index.md +0 -8
  401. package/lib/__tests__/assets/events/EventWithSchemaAndExamples/schema.json +0 -4
  402. package/lib/__tests__/assets/events/EventWithVersions/index.md +0 -10
  403. package/lib/__tests__/assets/events/EventWithVersions/versioned/0.0.1/index.md +0 -10
  404. package/lib/__tests__/assets/services/Basket Service/index.md +0 -26
  405. package/lib/__tests__/assets/services/Email Platform/index.md +0 -17
  406. package/lib/__tests__/assets/services/Payment Service/index.md +0 -7
  407. package/lib/__tests__/domains.spec.ts +0 -416
  408. package/lib/__tests__/events.spec.ts +0 -514
  409. package/lib/__tests__/file-reader.spec.ts +0 -69
  410. package/lib/__tests__/graphs.spec.ts +0 -88
  411. package/lib/__tests__/services.spec.ts +0 -268
  412. package/lib/analytics.ts +0 -30
  413. package/lib/domains.ts +0 -160
  414. package/lib/events.ts +0 -313
  415. package/lib/file-reader.ts +0 -76
  416. package/lib/graphs.ts +0 -92
  417. package/lib/services.ts +0 -126
  418. package/next-env.d.ts +0 -5
  419. package/next.config.js +0 -11
  420. package/out/404/index.html +0 -12
  421. package/out/404.html +0 -12
  422. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderComplete/logs.json +0 -1
  423. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderComplete.json +0 -1
  424. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderConfirmed/logs.json +0 -1
  425. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderConfirmed.json +0 -1
  426. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderCreated/logs.json +0 -1
  427. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderCreated.json +0 -1
  428. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderRequested/logs.json +0 -1
  429. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderRequested.json +0 -1
  430. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/services/Orders Service.json +0 -1
  431. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders.json +0 -1
  432. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
  433. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
  434. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
  435. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart.json +0 -1
  436. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
  437. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/RemovedItemFromCart.json +0 -1
  438. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping.json +0 -1
  439. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains.json +0 -1
  440. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/PaymentProcessed/logs.json +0 -1
  441. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/PaymentProcessed.json +0 -1
  442. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDelivered/logs.json +0 -1
  443. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDelivered.json +0 -1
  444. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDispatched/logs.json +0 -1
  445. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDispatched.json +0 -1
  446. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentPrepared/logs.json +0 -1
  447. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentPrepared.json +0 -1
  448. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events.json +0 -1
  449. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/overview.json +0 -1
  450. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Orders Service.json +0 -1
  451. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Payment Service.json +0 -1
  452. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Shipping Service.json +0 -1
  453. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services.json +0 -1
  454. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/users/dboyne.json +0 -1
  455. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/users/mSmith.json +0 -1
  456. package/out/_next/data/wZIh57Hs672ULoPeUaYa1/visualiser.json +0 -1
  457. package/out/_next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
  458. package/out/_next/static/chunks/1093.67f04e0e6b50c9e5.js +0 -1
  459. package/out/_next/static/chunks/1178-c3c8c74ac08d7c77.js +0 -1
  460. package/out/_next/static/chunks/1254.a78e9444e102b061.js +0 -1
  461. package/out/_next/static/chunks/130.fa515915f80e17f9.js +0 -1
  462. package/out/_next/static/chunks/1318.a5349c1b3da2b184.js +0 -1
  463. package/out/_next/static/chunks/1415.55c7c89ef0a8aab1.js +0 -1
  464. package/out/_next/static/chunks/1455-8df9e334899797b2.js +0 -1
  465. package/out/_next/static/chunks/172-940ad0353b57ff98.js +0 -1
  466. package/out/_next/static/chunks/1733.1bead33faaa9eeb0.js +0 -1
  467. package/out/_next/static/chunks/1806.3ed762ab3ecedc9d.js +0 -1
  468. package/out/_next/static/chunks/2157.cd3aa9fee64d976e.js +0 -1
  469. package/out/_next/static/chunks/2566.4084969752c613a9.js +0 -1
  470. package/out/_next/static/chunks/2620-21775e17d8a6a407.js +0 -1
  471. package/out/_next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
  472. package/out/_next/static/chunks/3116-446dd88b93c44018.js +0 -1
  473. package/out/_next/static/chunks/3193.f69abc67598575a9.js +0 -1
  474. package/out/_next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
  475. package/out/_next/static/chunks/3271.83723868c9b8e7c1.js +0 -1
  476. package/out/_next/static/chunks/3287.f50c49237cef9ae8.js +0 -1
  477. package/out/_next/static/chunks/39a9cf3f.8cc8ac3887be2999.js +0 -1
  478. package/out/_next/static/chunks/3ede58a6.44fda8e0e5284248.js +0 -1
  479. package/out/_next/static/chunks/40.16abe9d3c57256d6.js +0 -1
  480. package/out/_next/static/chunks/407.3078ab29e8d18c02.js +0 -1
  481. package/out/_next/static/chunks/438.dea6dada9bd4b683.js +0 -1
  482. package/out/_next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
  483. package/out/_next/static/chunks/4466.dc03dbcd026995cc.js +0 -1
  484. package/out/_next/static/chunks/4737.ae583b848d202a93.js +0 -1
  485. package/out/_next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
  486. package/out/_next/static/chunks/5092.8ead508f86f4b11c.js +0 -1
  487. package/out/_next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
  488. package/out/_next/static/chunks/5835.a9405ab0913544df.js +0 -1
  489. package/out/_next/static/chunks/6067.cc75c37618cf0147.js +0 -1
  490. package/out/_next/static/chunks/6121.758a43c0db92ca23.js +0 -1
  491. package/out/_next/static/chunks/6229.7a9f0c8b204b76dc.js +0 -1
  492. package/out/_next/static/chunks/6487.44c6e83c098ed47f.js +0 -1
  493. package/out/_next/static/chunks/6582.06af6897be0d24b3.js +0 -1
  494. package/out/_next/static/chunks/6724.ed1280c926906c76.js +0 -1
  495. package/out/_next/static/chunks/6772-fc6143a6584acf9b.js +0 -1
  496. package/out/_next/static/chunks/6790-f4527d80153a3e25.js +0 -1
  497. package/out/_next/static/chunks/7005-09e42f99859b8d03.js +0 -1
  498. package/out/_next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
  499. package/out/_next/static/chunks/7374.a673e317f007d3b6.js +0 -1
  500. package/out/_next/static/chunks/74030e57.9636ad3c5c96940b.js +0 -1
  501. package/out/_next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
  502. package/out/_next/static/chunks/7469.d932a6b01168373b.js +0 -1
  503. package/out/_next/static/chunks/7636.9eaf88a09c2a88ed.js +0 -1
  504. package/out/_next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
  505. package/out/_next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
  506. package/out/_next/static/chunks/828-1a4a120d2fbea802.js +0 -1
  507. package/out/_next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
  508. package/out/_next/static/chunks/8470.c811187bd2982a8a.js +0 -1
  509. package/out/_next/static/chunks/9076.0a13d7d5aab7bfa1.js +0 -1
  510. package/out/_next/static/chunks/9097.1efc23284d82765c.js +0 -1
  511. package/out/_next/static/chunks/9270.a4c64e6be4a278a4.js +0 -1
  512. package/out/_next/static/chunks/9404.a44dfe8858add605.js +0 -1
  513. package/out/_next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
  514. package/out/_next/static/chunks/9930.28415573db2b7806.js +0 -7
  515. package/out/_next/static/chunks/b2f22a9c-0216e9400ac0ac1c.js +0 -1
  516. package/out/_next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
  517. package/out/_next/static/chunks/eb6e03f4.3dd8d555aebe18ff.js +0 -1
  518. package/out/_next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
  519. package/out/_next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
  520. package/out/_next/static/chunks/main-da37322a396d572a.js +0 -1
  521. package/out/_next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
  522. package/out/_next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
  523. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
  524. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-45b0d7bc42f6f81c.js +0 -1
  525. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-15bb0ef487953fa1.js +0 -1
  526. package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-a4857d4d0aa4d04b.js +0 -1
  527. package/out/_next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
  528. package/out/_next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
  529. package/out/_next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
  530. package/out/_next/static/chunks/pages/events/[name]/v/[version]-b718302d7185dcb0.js +0 -1
  531. package/out/_next/static/chunks/pages/events/[name]-8cb0b3b469bd7845.js +0 -1
  532. package/out/_next/static/chunks/pages/events-83c9161a6e696533.js +0 -1
  533. package/out/_next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
  534. package/out/_next/static/chunks/pages/overview-4251cc856f776fc2.js +0 -1
  535. package/out/_next/static/chunks/pages/services/[name]-7030da24d73a8ea3.js +0 -1
  536. package/out/_next/static/chunks/pages/services-7069c0a5295e53ae.js +0 -1
  537. package/out/_next/static/chunks/pages/users/[id]-00aeace648436383.js +0 -1
  538. package/out/_next/static/chunks/pages/users-412f257b1de51363.js +0 -1
  539. package/out/_next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
  540. package/out/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  541. package/out/_next/static/chunks/webpack-1ea4cabfc6778694.js +0 -1
  542. package/out/_next/static/css/7e14b4dede1671ad.css +0 -1
  543. package/out/_next/static/css/94b9a747218712b2.css +0 -3
  544. package/out/_next/static/css/ae8abf3666c55019.css +0 -5
  545. package/out/_next/static/css/cc3c8fcadcf7a58b.css +0 -1
  546. package/out/_next/static/css/deb57cf90a65a90f.css +0 -1
  547. package/out/_next/static/css/ed97de5465a152bb.css +0 -1
  548. package/out/_next/static/wZIh57Hs672ULoPeUaYa1/_buildManifest.js +0 -1
  549. package/out/_next/static/wZIh57Hs672ULoPeUaYa1/_ssgManifest.js +0 -1
  550. package/out/domains/Orders/events/OrderComplete/index.html +0 -40
  551. package/out/domains/Orders/events/OrderComplete/logs/index.html +0 -1
  552. package/out/domains/Orders/events/OrderConfirmed/index.html +0 -40
  553. package/out/domains/Orders/events/OrderConfirmed/logs/index.html +0 -1
  554. package/out/domains/Orders/events/OrderCreated/index.html +0 -2
  555. package/out/domains/Orders/events/OrderCreated/logs/index.html +0 -1
  556. package/out/domains/Orders/events/OrderRequested/index.html +0 -40
  557. package/out/domains/Orders/events/OrderRequested/logs/index.html +0 -1
  558. package/out/domains/Orders/index.html +0 -2
  559. package/out/domains/Orders/services/Orders Service/index.html +0 -2
  560. package/out/domains/Shopping/events/AddedItemToCart/index.html +0 -65
  561. package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +0 -1
  562. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +0 -59
  563. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +0 -66
  564. package/out/domains/Shopping/events/RemovedItemFromCart/index.html +0 -48
  565. package/out/domains/Shopping/events/RemovedItemFromCart/logs/index.html +0 -1
  566. package/out/domains/Shopping/index.html +0 -2
  567. package/out/domains/index.html +0 -3
  568. package/out/events/PaymentProcessed/index.html +0 -44
  569. package/out/events/PaymentProcessed/logs/index.html +0 -1
  570. package/out/events/ShipmentDelivered/index.html +0 -44
  571. package/out/events/ShipmentDelivered/logs/index.html +0 -1
  572. package/out/events/ShipmentDispatched/index.html +0 -44
  573. package/out/events/ShipmentDispatched/logs/index.html +0 -1
  574. package/out/events/ShipmentPrepared/index.html +0 -2
  575. package/out/events/ShipmentPrepared/logs/index.html +0 -1
  576. package/out/events/index.html +0 -11
  577. package/out/favicon.ico +0 -0
  578. package/out/index.html +0 -1
  579. package/out/logo-random.svg +0 -114
  580. package/out/logo.svg +0 -44
  581. package/out/opengraph.png +0 -0
  582. package/out/overview/index.html +0 -1
  583. package/out/services/Orders Service/index.html +0 -1
  584. package/out/services/Payment Service/index.html +0 -2
  585. package/out/services/Shipping Service/index.html +0 -2
  586. package/out/services/index.html +0 -4
  587. package/out/users/dboyne/index.html +0 -16
  588. package/out/users/index.html +0 -1
  589. package/out/users/mSmith/index.html +0 -13
  590. package/out/visualiser/index.html +0 -16
  591. package/pages/_app.tsx +0 -111
  592. package/pages/_document.tsx +0 -18
  593. package/pages/domains/[domain]/events/[name]/logs.tsx +0 -35
  594. package/pages/domains/[domain]/events/[name]/v/[version].tsx +0 -39
  595. package/pages/domains/[domain]/events/[name].tsx +0 -46
  596. package/pages/domains/[domain]/index.tsx +0 -137
  597. package/pages/domains/[domain]/services/[name].tsx +0 -42
  598. package/pages/domains.tsx +0 -210
  599. package/pages/events/[name]/logs.tsx +0 -177
  600. package/pages/events/[name]/v/[version].tsx +0 -38
  601. package/pages/events/[name].tsx +0 -223
  602. package/pages/events.tsx +0 -357
  603. package/pages/index.tsx +0 -56
  604. package/pages/overview.tsx +0 -89
  605. package/pages/services/[name].tsx +0 -164
  606. package/pages/services.tsx +0 -311
  607. package/pages/users/[id].tsx +0 -101
  608. package/pages/users.tsx +0 -43
  609. package/pages/visualiser.tsx +0 -322
  610. package/postcss.config.js +0 -6
  611. package/public/logo-random.svg +0 -114
  612. package/public/logo.svg +0 -44
  613. package/scripts/__tests__/assets/eventcatalog.config.js +0 -32
  614. package/scripts/__tests__/generate.spec.ts +0 -36
  615. package/scripts/generate.js +0 -28
  616. package/scripts/move-schemas-for-download.js +0 -80
  617. package/styles/Home.module.css +0 -116
  618. package/styles/globals.css +0 -85
  619. package/tailwind.config.js +0 -36
  620. package/types/index.ts +0 -7
  621. package/utils/random-bg.ts +0 -13
  622. /package/{lib/__tests__/assets/services/Payment Service/openapi.yaml → public/openapi.yml} +0 -0
@@ -0,0 +1,135 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { createPortal } from 'react-dom';
3
+ import ReactFlow, { Background, ConnectionLineType, Controls, Panel, ReactFlowProvider, type Edge, type Node } from 'reactflow';
4
+ import 'reactflow/dist/style.css';
5
+ import ServiceNode from './Nodes/Service';
6
+ import EventNode from './Nodes/Event';
7
+ import CommandNode from './Nodes/Command';
8
+ import type { CollectionEntry } from 'astro:content';
9
+ import { navigate } from 'astro:transitions/client';
10
+ import type { CollectionTypes } from '@types';
11
+ import DownloadButton from './DownloadButton';
12
+
13
+ interface Props {
14
+ nodes: any;
15
+ edges: any;
16
+ title?: string;
17
+ subtitle?: string;
18
+ includeBackground?: boolean;
19
+ includeControls?: boolean;
20
+ linkTo: 'docs' | 'visualiser';
21
+ }
22
+
23
+ const getDocUrlForCollection = (collectionItem: CollectionEntry<CollectionTypes>) => {
24
+ return `/docs/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}`;
25
+ };
26
+ const getVisualiserUrlForCollection = (collectionItem: CollectionEntry<CollectionTypes>) => {
27
+ return `/visualiser/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}`;
28
+ };
29
+
30
+ // const NodeGraphBuilder = ({ title, subtitle, includeBackground = true, includeControls = true }: Props) => {
31
+ const NodeGraphBuilder = ({ nodes, edges, title, includeBackground = true, linkTo = 'docs' }: Props) => {
32
+ // const { fitView, viewportInitialized } = useReactFlow();
33
+
34
+ // const nodeTypes = useMemo(() => ({ service: ServiceNode, event: EventNode, command: CommandNode }), []);
35
+ const nodeTypes = useMemo(() => ({ services: ServiceNode, events: EventNode, commands: CommandNode }), []);
36
+ const nodeOrigin = [0.5, 0.5];
37
+
38
+ const handleNodeClick = (_: any, node: Node) => {
39
+ if (node.type === 'events' || node.type === 'commands') {
40
+ // return (window.location.href = linkTo === 'docs' ? getDocUrlForCollection(node.data.message) : getVisualiserUrlForCollection(node.data.message));
41
+ navigate(linkTo === 'docs' ? getDocUrlForCollection(node.data.message) : getVisualiserUrlForCollection(node.data.message));
42
+ }
43
+ if (node.type === 'services') {
44
+ navigate(linkTo === 'docs' ? getDocUrlForCollection(node.data.service) : getVisualiserUrlForCollection(node.data.service));
45
+ // return (window.location.href = linkTo === 'docs' ? getDocUrlForCollection(node.data.service) : getVisualiserUrlForCollection(node.data.service));
46
+ }
47
+ };
48
+
49
+ return (
50
+ // @ts-ignore
51
+ <ReactFlow
52
+ nodeTypes={nodeTypes}
53
+ nodes={nodes}
54
+ edges={edges}
55
+ fitView
56
+ nodesDraggable
57
+ connectionLineType={ConnectionLineType.SmoothStep}
58
+ // @ts-ignore
59
+ nodeOrigin={nodeOrigin}
60
+ onNodeClick={handleNodeClick}
61
+ >
62
+ {title && (
63
+ <Panel position="top-right">
64
+ <span className="block shadow-sm bg-white text-xl z-10 text-black px-4 py-2 border-gray-200 rounded-md border">
65
+ <strong>Visualiser</strong> | {title}
66
+ </span>
67
+ </Panel>
68
+ )}
69
+ <DownloadButton filename={title} addPadding={!!title} />
70
+ {includeBackground && <Background color="#bbb" gap={16} />}
71
+ {includeBackground && <Controls />}
72
+ <Panel position="bottom-right">
73
+ <div className=" bg-white font-light px-4 text-[14px] shadow-md py-1 rounded-md">
74
+ <span className="font-bold">Key</span>
75
+ <ul>
76
+ <li className="flex space-x-2 items-center text-[12px]">
77
+ <span className="w-2 h-2 bg-orange-500 block" />
78
+ <span className="block">Event</span>
79
+ </li>
80
+ <li className="flex space-x-2 items-center text-[12px]">
81
+ <span className="w-2 h-2 bg-pink-500 block" />
82
+ <span className="block">Service</span>
83
+ </li>
84
+ <li className="flex space-x-2 items-center text-[12px]">
85
+ <span className="w-2 h-2 bg-blue-500 block" />
86
+ <span className="block">Command</span>
87
+ </li>
88
+ </ul>
89
+ </div>
90
+ </Panel>
91
+ </ReactFlow>
92
+ );
93
+ };
94
+
95
+ interface NodeGraphProps {
96
+ id: string;
97
+ title?: string;
98
+ href?: string;
99
+ hrefLabel?: string;
100
+ nodes: Node[];
101
+ edges: Edge[];
102
+ linkTo: 'docs' | 'visualiser';
103
+ }
104
+
105
+ const NodeGraph = ({ id, nodes, edges, title, href, linkTo = 'docs', hrefLabel = 'Open in visualiser' }: NodeGraphProps) => {
106
+ const [elem, setElem] = useState(null);
107
+
108
+ useEffect(() => {
109
+ // @ts-ignore
110
+ setElem(document.getElementById(`${id}-portal`));
111
+ }, []);
112
+
113
+ if (!elem) return null;
114
+
115
+ return (
116
+ <div>
117
+ {createPortal(
118
+ <ReactFlowProvider>
119
+ <NodeGraphBuilder edges={edges} nodes={nodes} title={title} linkTo={linkTo} />
120
+
121
+ {href && (
122
+ <div className="py-2 w-full text-right">
123
+ <a className=" text-sm no-underline py-2 text-gray-800 hover:text-purple-500" href={href}>
124
+ {hrefLabel} &rarr;
125
+ </a>
126
+ </div>
127
+ )}
128
+ </ReactFlowProvider>,
129
+ elem
130
+ )}
131
+ </div>
132
+ );
133
+ };
134
+
135
+ export default NodeGraph;
@@ -0,0 +1,15 @@
1
+ const NodeGraphPortal = (props: any) => {
2
+ return (
3
+ <div
4
+ className="h-[30em] my-6 mb-12 w-full relative border border-gray-200 rounded-md"
5
+ id={`${props.id}-portal`}
6
+ style={{
7
+ maxHeight: props.maxHeight ? `${props.maxHeight}em` : `30em`,
8
+ }}
9
+ >
10
+ {/* <span className="absolute top-2 right-4 bg-white font-bold z-10">{props.title}</span> */}
11
+ </div>
12
+ );
13
+ };
14
+
15
+ export default NodeGraphPortal;
@@ -0,0 +1,74 @@
1
+ import { EnvelopeIcon } from '@heroicons/react/16/solid';
2
+ import type { CollectionEntry } from 'astro:content';
3
+ import { Handle } from 'reactflow';
4
+
5
+ interface Data {
6
+ title: string;
7
+ label: string;
8
+ bgColor: string;
9
+ color: string;
10
+ mode: 'simple' | 'full';
11
+ message: CollectionEntry<'commands'>;
12
+ showTarget?: boolean;
13
+ showSource?: boolean;
14
+ }
15
+
16
+ function classNames(...classes: any) {
17
+ return classes.filter(Boolean).join(' ');
18
+ }
19
+
20
+ export default function CommandNode({ data, sourcePosition, targetPosition }: any) {
21
+ const { mode, message, showSource = true, showTarget = true } = data as Data;
22
+
23
+ const { name, version, summary, owners = [], producers = [], consumers = [] } = message.data;
24
+
25
+ const renderTarget = showTarget || (targetPosition && producers.length > 0);
26
+ const renderSource = showSource || (sourcePosition && consumers.length > 0);
27
+
28
+ return (
29
+ <div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-blue-400')}>
30
+ <div
31
+ className={classNames(
32
+ 'bg-gradient-to-b from-blue-500 to-blue-700 relative flex items-center w-5 justify-center rounded-l-sm text-blue-100-500',
33
+ `border-r-[1px] border-blue-500`
34
+ )}
35
+ >
36
+ <EnvelopeIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
37
+ {mode === 'full' && (
38
+ <span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
39
+ Command
40
+ </span>
41
+ )}
42
+ </div>
43
+ <div className="p-1">
44
+ {renderTarget && <Handle type="target" position={targetPosition} />}
45
+ {renderSource && <Handle type="source" position={sourcePosition} />}
46
+ <div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
47
+ <span className="text-xs font-bold block pb-0.5">{name}</span>
48
+ <div className="flex justify-between">
49
+ <span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
50
+ {mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Command</span>}
51
+ </div>
52
+ </div>
53
+ {mode === 'full' && (
54
+ <div className="divide-y divide-gray-200 ">
55
+ <div className="leading-3 py-1">
56
+ <span className="text-[8px] font-light">{summary}</span>
57
+ </div>
58
+ <div className="grid grid-cols-2 gap-x-4 py-1">
59
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
60
+ Producers: {producers.length}
61
+ </span>
62
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
63
+ Consumers: {consumers.length}
64
+ </span>
65
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
66
+ Owners: {owners.length}
67
+ </span>
68
+ </div>
69
+ </div>
70
+ )}
71
+ </div>
72
+ </div>
73
+ );
74
+ }
@@ -0,0 +1,74 @@
1
+ import { EnvelopeIcon } from '@heroicons/react/16/solid';
2
+ import type { CollectionEntry } from 'astro:content';
3
+ import { Handle } from 'reactflow';
4
+
5
+ interface Data {
6
+ title: string;
7
+ label: string;
8
+ bgColor: string;
9
+ color: string;
10
+ mode: 'simple' | 'full';
11
+ message: CollectionEntry<'events'>;
12
+ showTarget?: boolean;
13
+ showSource?: boolean;
14
+ }
15
+
16
+ function classNames(...classes: any) {
17
+ return classes.filter(Boolean).join(' ');
18
+ }
19
+
20
+ export default function EventNode({ data, sourcePosition, targetPosition }: any) {
21
+ const { mode, message, showTarget = true, showSource = true } = data as Data;
22
+
23
+ const { name, version, summary, owners = [], producers = [], consumers = [] } = message.data;
24
+
25
+ const renderTarget = showTarget || (targetPosition && producers.length > 0);
26
+ const renderSource = showSource || (sourcePosition && consumers.length > 0);
27
+
28
+ return (
29
+ <div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-orange-400')}>
30
+ <div
31
+ className={classNames(
32
+ 'bg-gradient-to-b from-orange-500 to-orange-700 relative flex items-center w-5 justify-center rounded-l-sm text-orange-100-500',
33
+ `border-r-[1px] border-orange-500`
34
+ )}
35
+ >
36
+ <EnvelopeIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
37
+ {mode === 'full' && (
38
+ <span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
39
+ Event
40
+ </span>
41
+ )}
42
+ </div>
43
+ <div className="p-1">
44
+ {renderTarget && <Handle type="target" position={targetPosition} />}
45
+ {renderSource && <Handle type="source" position={sourcePosition} />}
46
+ <div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
47
+ <span className="text-xs font-bold block pb-0.5">{name}</span>
48
+ <div className="flex justify-between">
49
+ <span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
50
+ {mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Event</span>}
51
+ </div>
52
+ </div>
53
+ {mode === 'full' && (
54
+ <div className="divide-y divide-gray-200 ">
55
+ <div className="leading-3 py-1">
56
+ <span className="text-[8px] font-light">{summary}</span>
57
+ </div>
58
+ <div className="grid grid-cols-2 gap-x-4 py-1">
59
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
60
+ Producers: {producers.length}
61
+ </span>
62
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
63
+ Consumers: {consumers.length}
64
+ </span>
65
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
66
+ Owners: {owners.length}
67
+ </span>
68
+ </div>
69
+ </div>
70
+ )}
71
+ </div>
72
+ </div>
73
+ );
74
+ }
@@ -0,0 +1,83 @@
1
+ import { ServerIcon } from '@heroicons/react/16/solid';
2
+ import type { CollectionEntry } from 'astro:content';
3
+ import { Handle } from 'reactflow';
4
+
5
+ interface Data {
6
+ label: string;
7
+ bgColor: string;
8
+ color: string;
9
+ mode: 'simple' | 'full';
10
+ service: CollectionEntry<'services'>;
11
+ showTarget?: boolean;
12
+ showSource?: boolean;
13
+ }
14
+
15
+ function classNames(...classes: any) {
16
+ return classes.filter(Boolean).join(' ');
17
+ }
18
+
19
+ export default function ServiceNode({ data, sourcePosition, targetPosition }: any) {
20
+ const { label, bgColor = 'bg-blue-500', mode, service, showTarget = true, showSource = true } = data as Data;
21
+
22
+ const { version, owners = [], sends = [], receives = [], name } = service.data;
23
+
24
+ const renderTarget = showTarget;
25
+ const renderSource = showSource;
26
+
27
+ return (
28
+ <div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-pink-500')}>
29
+ <div
30
+ className={classNames(
31
+ 'bg-gradient-to-b from-pink-500 to-pink-700 relative flex items-center w-5 justify-center rounded-l-sm text-red-100-500',
32
+ `border-r-[1px] border-pink-500`
33
+ )}
34
+ >
35
+ <ServerIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
36
+ {mode === 'full' && (
37
+ <span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
38
+ Service
39
+ </span>
40
+ )}
41
+ </div>
42
+ <div className="p-1">
43
+ {showTarget && <Handle type="target" position={targetPosition} />}
44
+ {showSource && <Handle type="source" position={sourcePosition} />}
45
+ {/* {mode === 'full' && (
46
+ <div className="flex justify-end font-thin space-x-1 border-b border-orange-200 pb-0.5 " style={{ fontSize: '0.2em' }}>
47
+ <span>Service</span>
48
+ <ServerIcon className="w-2 h-2 opacity-90" />
49
+ </div>
50
+ )} */}
51
+ <div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
52
+ <span className="text-xs font-bold block pt-0.5 pb-0.5">{name}</span>
53
+ <div className="flex justify-between">
54
+ <span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
55
+ {mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Service</span>}
56
+ </div>
57
+ {/* <div className="flex justify-end">
58
+ <span className="text-[8px] text-gray-500 font-light block pt-0.5 pb-0.5 ">View service</span>
59
+ </div> */}
60
+ </div>
61
+ {mode === 'full' && (
62
+ <div className="divide-y divide-gray-200 ">
63
+ <div className="leading-3 py-1">
64
+ <span className="text-[8px] font-light">{service.data.summary}</span>
65
+ </div>
66
+
67
+ <div className="grid grid-cols-2 gap-x-4 py-1">
68
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
69
+ Receives messages: {receives.length}
70
+ </span>
71
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
72
+ Publishes messages: {sends.length}
73
+ </span>
74
+ <span className="text-xs" style={{ fontSize: '0.2em' }}>
75
+ Owners: {owners.length}
76
+ </span>
77
+ </div>
78
+ </div>
79
+ )}
80
+ </div>
81
+ </div>
82
+ );
83
+ }
@@ -0,0 +1,35 @@
1
+ import type { CollectionTypes } from '@types';
2
+ import type { CollectionEntry } from 'astro:content';
3
+ import * as path from 'path';
4
+ import { existsSync } from 'node:fs';
5
+
6
+ const OpenAPI = (props: CollectionEntry<CollectionTypes>) => {
7
+ // @ts-ignore
8
+ const collectionPath = props?.catalog?.path;
9
+ // @ts-ignore
10
+ const publicPath = props?.catalog?.publicPath;
11
+ const fileName = 'openapi.yml';
12
+
13
+ const fileExists = existsSync(path.join(process.cwd(), 'public', publicPath, fileName));
14
+
15
+ return (
16
+ <div className="mb-4" id="openapi-component">
17
+ <span className="text-3xl font-bold">OpenAPI</span>
18
+ {!fileExists && (
19
+ <div className="text-sm text-red-500">
20
+ OpenAPI file not found. Put your OpenAPI file inside your {collectionPath} directory.
21
+ </div>
22
+ )}
23
+ {fileExists && (
24
+ <div>
25
+ This {props.collection.slice(0, -1)} has an OpenAPI file{' '}
26
+ <a className="text-purple-500" href={`/docs/${props.collection}/${props.data.id}/${props.data.version}/spec`}>
27
+ you can view here.
28
+ </a>
29
+ </div>
30
+ )}
31
+ </div>
32
+ );
33
+ };
34
+
35
+ export default OpenAPI;
@@ -0,0 +1,45 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+
4
+ const Schema = ({ file = 'schema.json', catalog, title }: any) => {
5
+ try {
6
+ const exists = fs.existsSync(path.join(catalog.filePath, file));
7
+
8
+ if (exists) {
9
+ const text = fs.readFileSync(path.join(catalog.filePath, file), 'utf-8');
10
+ return (
11
+ <div className="not-prose max-w-4xl overflow-x-auto">
12
+ <pre className="expressive-code" data-language="json">
13
+ <figure className="frame has-title">
14
+ <figcaption className="header">
15
+ {title && <span className="title">{title}</span>}
16
+ {!title && <span className="title">{file}</span>}
17
+ </figcaption>
18
+ <pre data-language="js">
19
+ <code>
20
+ <div className="ec-line">
21
+ <div className="code">{text}</div>
22
+ </div>
23
+ </code>
24
+ </pre>
25
+ <div className="copy">
26
+ <button title="Copy to clipboard" data-copied="Copied!" data-code={text}>
27
+ <div></div>
28
+ </button>
29
+ </div>
30
+ </figure>
31
+ </pre>
32
+ </div>
33
+ );
34
+ } else {
35
+ return (
36
+ <div className="italic">Tried to load schema from {path.join(catalog.filePath, file)}, but no schema can be found</div>
37
+ );
38
+ }
39
+ } catch (error) {
40
+ console.log('Failed to load schema file', error);
41
+ return null;
42
+ }
43
+ };
44
+
45
+ export default Schema;
@@ -0,0 +1,24 @@
1
+ // Astro components
2
+
3
+ // React components
4
+ import Schema from '@components/MDX/Schema';
5
+ import File from '@components/MDX/File';
6
+ import Accordion from '@components/MDX/Accordion/Accordion.astro';
7
+ import AccordionGroup from '@components/MDX/Accordion/AccordionGroup.astro';
8
+ import Admonition from '@components/MDX/Admonition';
9
+ import NodeGraphPortal from '@components/MDX/NodeGraph/NodeGraphPortal';
10
+ import OpenAPI from '@components/MDX/OpenAPI/OpenAPI';
11
+
12
+ const components = (props: any) => {
13
+ return {
14
+ AccordionGroup,
15
+ Accordion,
16
+ OpenAPI: (mdxProp: any) => <OpenAPI {...mdxProp} {...props} />,
17
+ Admonition: (mdxProp: any) => <Admonition {...mdxProp} {...props} />,
18
+ File: (mdxProp: any) => File({ ...props, ...mdxProp }),
19
+ Schema: (mdxProp: any) => Schema({ ...props, ...mdxProp }),
20
+ NodeGraph: (mdxProp: any) => NodeGraphPortal({ ...props.data, ...mdxProp }),
21
+ };
22
+ };
23
+
24
+ export default components;
@@ -0,0 +1,108 @@
1
+ ---
2
+ import PageFindSearch from 'astro-pagefind/components/Search';
3
+ ---
4
+
5
+ <div>
6
+ <div class="relative mt-2 flex items-center">
7
+ <input
8
+ id="search-dummy-input"
9
+ type="text"
10
+ name="search"
11
+ id="search"
12
+ placeholder="Search EventCatalog"
13
+ class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 sm:text-sm sm:leading-6 px-4"
14
+ />
15
+ <div class="absolute inset-y-0 right-0 flex py-1.5 pr-1.5">
16
+ <kbd class="inline-flex items-center rounded border border-gray-200 px-1 font-sans text-xs text-gray-400">⌘K</kbd>
17
+ </div>
18
+ </div>
19
+ </div>
20
+
21
+ <div id="search-dialog" class="hidden relative z-10" role="dialog" aria-modal="true">
22
+ <div class="fixed inset-0 bg-gray-500 bg-opacity-25 transition-opacity search-background backdrop-blur-sm bg-black/10"></div>
23
+ <div id="search-background" class="fixed inset-0 z-10 w-screen overflow-y-auto p-4 sm:p-6 md:p-20">
24
+ <div id="command-pal" class="mx-auto max-w-xl divide-y divide-gray-100 overflow-hidden rounded-xl bg-white shadow-2xl ring-1 ring-black ring-opacity-5 transition-all">
25
+ <div class="relative">
26
+ <svg class="pointer-events-none absolute left-4 top-3.5 h-5 w-5 text-gray-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
27
+ <path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd"></path>
28
+ </svg>
29
+ <PageFindSearch id="search" className="pagefind-ui" uiOptions={{ showImages: false }} />
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+
35
+ <script>
36
+ const dummyInput = document.getElementById('search-dummy-input');
37
+ const dialog = document.getElementById('search-dialog');
38
+
39
+ // Listen for the short cut keys
40
+ window.addEventListener('keydown', (event) => {
41
+ if ((event.metaKey || event.ctrlKey) && event.key === 'k') {
42
+ event.preventDefault();
43
+ dummyInput?.click();
44
+ }
45
+ if(event.key === 'Escape') {
46
+ if(dialog){
47
+ dialog.style.display = 'none';
48
+ }
49
+ }
50
+ });
51
+
52
+ // Fake input, to load the dialog
53
+ if (dummyInput) {
54
+ dummyInput.addEventListener('click', function (e) {
55
+ e.preventDefault();
56
+ this.blur();
57
+ const input = document.querySelector('.pagefind-ui__search-input');
58
+ setTimeout(() => {
59
+ // @ts-ignore
60
+ input && input.focus();
61
+ }, 10);
62
+ // @ts-ignore
63
+ dialog.style.display = 'block';
64
+ });
65
+ }
66
+
67
+ // Close it
68
+ dialog?.addEventListener('click', function (e) {
69
+ // @ts-ignore
70
+ if (e.target.id === 'search-background') {
71
+ dialog.style.display = 'none';
72
+ }
73
+ });
74
+
75
+ // document.getElementById('search-dummy-input').addEventListener('click', function () {
76
+ // document.getElementById('search-dialog').style.display = 'block';
77
+ // });
78
+ </script>
79
+
80
+ <style is:global>
81
+ .pagefind-ui__search-input,
82
+ #search-dummy-input {
83
+ outline: none;
84
+ }
85
+
86
+ .pagefind-ui__drawer {
87
+ padding: 0 1em !important;
88
+ }
89
+
90
+ .pagefind-ui__result {
91
+ padding: 0.5em 0 !important;
92
+ }
93
+
94
+ .pagefind-ui__results-area {
95
+ margin: 0 !important;
96
+ }
97
+ </style>
98
+
99
+ <!--
100
+ Command palette, show/hide based on modal state.
101
+
102
+ Entering: "ease-out duration-300"
103
+ From: "opacity-0 scale-95"
104
+ To: "opacity-100 scale-100"
105
+ Leaving: "ease-in duration-200"
106
+ From: "opacity-100 scale-100"
107
+ To: "opacity-0 scale-95"
108
+ -->
@@ -0,0 +1,79 @@
1
+ ---
2
+ import { SEO } from 'astro-seo';
3
+ import config from '@config';
4
+ import defaultImageFile from '../../public/opengraph.png';
5
+
6
+ const {
7
+ title = config.title,
8
+ description = config.tagline,
9
+ ogTitle = title,
10
+ ogType = 'website',
11
+ } = Astro.props;
12
+
13
+ const siteBaseURL = new URL(Astro.url);
14
+ const defaultImage = new URL(defaultImageFile.src, siteBaseURL);
15
+
16
+ let { image: _image } = Astro.props;
17
+ _image = _image || defaultImage;
18
+
19
+ let image = null;
20
+ if (typeof _image === 'string') {
21
+ image = new URL(_image, siteBaseURL);
22
+ } else if (_image && typeof _image['href'] !== 'undefined') {
23
+ image = new URL(_image['href'], siteBaseURL);
24
+ } else {
25
+ image = defaultImage;
26
+ }
27
+
28
+ ---
29
+
30
+ <meta charset="UTF-8" />
31
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
32
+ <meta name="viewport" content="width=device-width" />
33
+ <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
34
+
35
+ <SEO
36
+ title={title}
37
+ description={description}
38
+ openGraph={{
39
+ basic: {
40
+ url: config.homepageLink,
41
+ title: ogTitle,
42
+ type: ogType,
43
+ image: _image?.src ? _image.src : defaultImage.toString(),
44
+ },
45
+ image: {
46
+ url: image.toString(),
47
+ secureUrl: image.toString(),
48
+ alt: ogTitle,
49
+ height: _image?.height,
50
+ width: _image?.width,
51
+ type: _image?.format && `image/${_image.format}`,
52
+ },
53
+ }}
54
+ twitter={{
55
+ creator: '@liran_tal',
56
+ image: image ? image.toString() : undefined,
57
+ imageAlt: ogTitle,
58
+ title: ogTitle,
59
+ site: '@liran_tal',
60
+ description: description,
61
+ card: image ? 'summary_large_image' : 'summary',
62
+ }}
63
+ extend={{
64
+ meta: [
65
+ {
66
+ name: 'og:locale',
67
+ content: 'en_US',
68
+ },
69
+ {
70
+ name: 'og:description',
71
+ content: description,
72
+ },
73
+ {
74
+ name: 'og:site_name',
75
+ content: config.homepageLink,
76
+ }
77
+ ]
78
+ }}
79
+ />