@eventcatalog/core 0.1.19 → 0.2.0

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 (356) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +126 -43
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1bay4w0 +1 -1
  6. package/.next/cache/next-server.js.nft.json +1 -1
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.json +1 -1
  13. package/.next/routes-manifest.json +1 -1
  14. package/.next/server/chunks/{730.js → 189.js} +184 -2
  15. package/.next/server/chunks/267.js +255 -0
  16. package/.next/server/chunks/{681.js → 29.js} +275 -40
  17. package/.next/server/chunks/484.js +12 -3
  18. package/.next/server/chunks/50.js +392 -0
  19. package/.next/server/chunks/526.js +15 -4
  20. package/.next/server/chunks/565.js +3 -3
  21. package/.next/server/chunks/778.js +76 -0
  22. package/.next/server/chunks/797.js +92 -0
  23. package/.next/server/chunks/854.js +103 -0
  24. package/.next/server/chunks/938.js +3 -2
  25. package/.next/server/chunks/944.js +102 -153
  26. package/.next/server/pages/404.html +1 -1
  27. package/.next/server/pages/500.html +1 -1
  28. package/.next/server/pages/_app.js +5 -1
  29. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +1 -0
  30. package/.next/server/pages/{events → domains/Shopping/events}/AddedItemToCart/logs.json +0 -0
  31. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +58 -0
  32. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -0
  33. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +65 -0
  34. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -0
  35. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +65 -0
  36. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +1 -0
  37. package/.next/server/pages/domains/Shopping/services/Basket Service.html +2 -0
  38. package/.next/server/pages/domains/Shopping/services/Basket Service.json +1 -0
  39. package/.next/server/pages/domains/Shopping/services/Data Lake.html +2 -0
  40. package/.next/server/pages/domains/Shopping/services/Data Lake.json +1 -0
  41. package/.next/server/pages/domains/Shopping.html +2 -0
  42. package/.next/server/pages/domains/Shopping.json +1 -0
  43. package/.next/server/pages/domains/[domain]/events/[name]/logs.js +243 -0
  44. package/.next/server/pages/domains/[domain]/events/[name]/logs.js.nft.json +1 -0
  45. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +352 -0
  46. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js.nft.json +1 -0
  47. package/.next/server/pages/domains/[domain]/events/[name].js +270 -0
  48. package/.next/server/pages/domains/[domain]/events/[name].js.nft.json +1 -0
  49. package/.next/server/pages/domains/[domain]/services/[name].js +318 -0
  50. package/.next/server/pages/domains/[domain]/services/[name].js.nft.json +1 -0
  51. package/.next/server/pages/domains/[domain].js +504 -0
  52. package/.next/server/pages/domains/[domain].js.nft.json +1 -0
  53. package/.next/server/pages/domains.html +2 -0
  54. package/.next/server/pages/domains.js +318 -0
  55. package/.next/server/pages/domains.js.nft.json +1 -0
  56. package/.next/server/pages/domains.json +1 -0
  57. package/.next/server/pages/events/OrderComplete/logs.html +1 -1
  58. package/.next/server/pages/events/OrderComplete.html +2 -2
  59. package/.next/server/pages/events/OrderComplete.json +1 -1
  60. package/.next/server/pages/events/OrderConfirmed/logs.html +1 -1
  61. package/.next/server/pages/events/OrderConfirmed.html +2 -2
  62. package/.next/server/pages/events/OrderConfirmed.json +1 -1
  63. package/.next/server/pages/events/OrderRequested/logs.html +1 -1
  64. package/.next/server/pages/events/OrderRequested.html +2 -2
  65. package/.next/server/pages/events/OrderRequested.json +1 -1
  66. package/.next/server/pages/events/PaymentProcessed/logs.html +1 -1
  67. package/.next/server/pages/events/PaymentProcessed.html +2 -2
  68. package/.next/server/pages/events/PaymentProcessed.json +1 -1
  69. package/.next/server/pages/events/RemovedItemFromCart/logs.html +1 -1
  70. package/.next/server/pages/events/RemovedItemFromCart.html +2 -2
  71. package/.next/server/pages/events/RemovedItemFromCart.json +1 -1
  72. package/.next/server/pages/events/ShipmentDelivered/logs.html +1 -1
  73. package/.next/server/pages/events/ShipmentDelivered.html +2 -2
  74. package/.next/server/pages/events/ShipmentDelivered.json +1 -1
  75. package/.next/server/pages/events/ShipmentDispatched/logs.html +1 -1
  76. package/.next/server/pages/events/ShipmentDispatched.html +2 -2
  77. package/.next/server/pages/events/ShipmentDispatched.json +1 -1
  78. package/.next/server/pages/events/ShipmentPrepared/logs.html +1 -1
  79. package/.next/server/pages/events/ShipmentPrepared.html +2 -2
  80. package/.next/server/pages/events/ShipmentPrepared.json +1 -1
  81. package/.next/server/pages/events/[name]/logs.js +1 -243
  82. package/.next/server/pages/events/[name]/logs.js.nft.json +1 -1
  83. package/.next/server/pages/events/[name]/v/[version].js +10 -5
  84. package/.next/server/pages/events/[name]/v/[version].js.nft.json +1 -1
  85. package/.next/server/pages/events/[name].js +2 -2
  86. package/.next/server/pages/events/[name].js.nft.json +1 -1
  87. package/.next/server/pages/events.html +3 -3
  88. package/.next/server/pages/events.js +39 -14
  89. package/.next/server/pages/events.js.nft.json +1 -1
  90. package/.next/server/pages/events.json +1 -1
  91. package/.next/server/pages/index.html +1 -1
  92. package/.next/server/pages/overview.html +1 -1
  93. package/.next/server/pages/overview.js +4 -4
  94. package/.next/server/pages/overview.js.nft.json +1 -1
  95. package/.next/server/pages/overview.json +1 -1
  96. package/.next/server/pages/services/Basket Service.html +1 -2
  97. package/.next/server/pages/services/Basket Service.json +1 -1
  98. package/.next/server/pages/services/Data Lake.html +1 -2
  99. package/.next/server/pages/services/Data Lake.json +1 -1
  100. package/.next/server/pages/services/Payment Service.html +2 -2
  101. package/.next/server/pages/services/Payment Service.json +1 -1
  102. package/.next/server/pages/services/Shipping Service.html +2 -2
  103. package/.next/server/pages/services/Shipping Service.json +1 -1
  104. package/.next/server/pages/services/[name].js +1 -505
  105. package/.next/server/pages/services/[name].js.nft.json +1 -1
  106. package/.next/server/pages/services.html +3 -3
  107. package/.next/server/pages/services.js +1 -1
  108. package/.next/server/pages/services.js.nft.json +1 -1
  109. package/.next/server/pages/services.json +1 -1
  110. package/.next/server/pages/users/[id].js +35 -13
  111. package/.next/server/pages/users/[id].js.nft.json +1 -1
  112. package/.next/server/pages/users/dboyne.html +6 -5
  113. package/.next/server/pages/users/dboyne.json +1 -1
  114. package/.next/server/pages/users/mSmith.html +3 -3
  115. package/.next/server/pages/users/mSmith.json +1 -1
  116. package/.next/server/pages/visualiser.html +4 -3
  117. package/.next/server/pages/visualiser.js +149 -149
  118. package/.next/server/pages/visualiser.js.nft.json +1 -1
  119. package/.next/server/pages/visualiser.json +1 -1
  120. package/.next/server/pages-manifest.json +6 -0
  121. package/.next/static/chunks/109-716dea1303010b4f.js +1 -0
  122. package/.next/static/chunks/169-b33dfdaf2847d062.js +1 -0
  123. package/.next/static/chunks/178-e9a666e11fb7c88d.js +1 -0
  124. package/.next/static/chunks/585-aa9262ea1bcf9d5b.js +1 -0
  125. package/.next/static/chunks/650-555944cc1eb7714e.js +1 -0
  126. package/.next/static/chunks/962-17a425b16c23bd0f.js +1 -0
  127. package/.next/static/chunks/pages/_app-d88c877888678e85.js +1 -0
  128. package/.next/static/chunks/pages/domains/[domain]/events/[name]/logs-7317f2121b8f0d8c.js +1 -0
  129. package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-a7fa6002267ccd3b.js +1 -0
  130. package/.next/static/chunks/pages/domains/[domain]/events/[name]-a5fb5b26471e703b.js +1 -0
  131. package/.next/static/chunks/pages/domains/[domain]/services/[name]-80d6d803e5466b81.js +1 -0
  132. package/.next/static/chunks/pages/domains/[domain]-e39d527b56fd45c8.js +1 -0
  133. package/.next/static/chunks/pages/domains-6ab78cb1bc2f4200.js +1 -0
  134. package/.next/static/chunks/pages/events/[name]/v/[version]-93d978734b0dc0a3.js +1 -0
  135. package/.next/static/chunks/pages/events/{[name]-813780e7042af288.js → [name]-d3d2a03948b8dfeb.js} +1 -1
  136. package/.next/static/chunks/pages/events-5a41c37b360b2fce.js +1 -0
  137. package/.next/static/chunks/pages/{overview-2f0bfad06c84e437.js → overview-dc5e91549c7e3d52.js} +1 -1
  138. package/.next/static/chunks/pages/services/[name]-148079bb388f8c53.js +1 -0
  139. package/.next/static/chunks/pages/services-7fe5a823f1b25f18.js +1 -0
  140. package/.next/static/chunks/pages/users/[id]-b255611073ef76e0.js +1 -0
  141. package/.next/static/chunks/pages/visualiser-2fc8224670ac5dff.js +1 -0
  142. package/.next/static/chunks/webpack-b17b8ef11b94ba66.js +1 -0
  143. package/{out/_next/static/css/4a01a08d48b115f7.css → .next/static/css/70ede87da43120f8.css} +1 -1
  144. package/.next/static/sTHntsHUajnk_njFTxiB5/_buildManifest.js +1 -0
  145. package/.next/static/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/_middlewareManifest.js +0 -0
  146. package/.next/static/sTHntsHUajnk_njFTxiB5/_ssgManifest.js +1 -0
  147. package/.next/trace +57 -56
  148. package/CHANGELOG.md +6 -0
  149. package/components/Grids/DomainGrid.tsx +53 -0
  150. package/components/Grids/EventGrid.tsx +12 -5
  151. package/components/Grids/ServiceGrid.tsx +3 -3
  152. package/components/Header.tsx +2 -1
  153. package/components/Mdx/NodeGraph/GraphElements.tsx +1 -1
  154. package/components/Mdx/NodeGraph/GraphLayout.ts +6 -2
  155. package/components/Mdx/NodeGraph/NodeGraph.tsx +13 -3
  156. package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +8 -4
  157. package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +2 -2
  158. package/components/Sidebars/DomainSidebar.tsx +55 -0
  159. package/components/Sidebars/EventSidebar.tsx +61 -111
  160. package/components/Sidebars/ServiceSidebar.tsx +47 -125
  161. package/components/Sidebars/components/ExternalLinks.tsx +28 -0
  162. package/components/Sidebars/components/ItemList.tsx +32 -0
  163. package/components/Sidebars/components/Owners.tsx +38 -0
  164. package/components/Sidebars/components/Tags.tsx +45 -0
  165. package/lib/__tests__/assets/domains/User/events/UserCreated/index.md +16 -0
  166. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.cs +31 -0
  167. package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.js +1 -0
  168. package/lib/__tests__/assets/domains/User/events/UserRemoved/index.md +16 -0
  169. package/lib/__tests__/assets/domains/User/events/UserRemoved/schema.json +4 -0
  170. package/lib/__tests__/assets/domains/User/index.md +12 -0
  171. package/lib/__tests__/assets/domains/User/services/User Service/index.md +15 -0
  172. package/lib/__tests__/assets/events/AddedItemToCart/index.md +0 -2
  173. package/lib/__tests__/assets/services/Basket Service/index.md +1 -1
  174. package/lib/__tests__/domains.spec.ts +267 -0
  175. package/lib/__tests__/events.spec.ts +216 -90
  176. package/lib/__tests__/graphs.spec.ts +4 -4
  177. package/lib/__tests__/services.spec.ts +62 -7
  178. package/lib/domains.ts +148 -0
  179. package/lib/events.ts +68 -22
  180. package/lib/graphs.ts +6 -3
  181. package/lib/services.ts +51 -13
  182. package/out/404/index.html +1 -1
  183. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5/domains/Shopping}/events/AddedItemToCart/logs.json +0 -0
  184. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -0
  185. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -0
  186. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart.json +1 -0
  187. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/services/Basket Service.json +1 -0
  188. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/services/Data Lake.json +1 -0
  189. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping.json +1 -0
  190. package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains.json +1 -0
  191. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/OrderComplete/logs.json +0 -0
  192. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderComplete.json +1 -0
  193. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/OrderConfirmed/logs.json +0 -0
  194. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderConfirmed.json +1 -0
  195. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/OrderRequested/logs.json +0 -0
  196. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderRequested.json +1 -0
  197. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/PaymentProcessed/logs.json +0 -0
  198. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/PaymentProcessed.json +1 -0
  199. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/RemovedItemFromCart/logs.json +0 -0
  200. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/RemovedItemFromCart.json +1 -0
  201. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/ShipmentDelivered/logs.json +0 -0
  202. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentDelivered.json +1 -0
  203. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/ShipmentDispatched/logs.json +0 -0
  204. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentDispatched.json +1 -0
  205. package/out/_next/data/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/events/ShipmentPrepared/logs.json +0 -0
  206. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentPrepared.json +1 -0
  207. package/out/_next/data/sTHntsHUajnk_njFTxiB5/events.json +1 -0
  208. package/out/_next/data/sTHntsHUajnk_njFTxiB5/overview.json +1 -0
  209. package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Basket Service.json +1 -0
  210. package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Data Lake.json +1 -0
  211. package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Payment Service.json +1 -0
  212. package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Shipping Service.json +1 -0
  213. package/out/_next/data/sTHntsHUajnk_njFTxiB5/services.json +1 -0
  214. package/out/_next/data/sTHntsHUajnk_njFTxiB5/users/dboyne.json +1 -0
  215. package/out/_next/data/sTHntsHUajnk_njFTxiB5/users/mSmith.json +1 -0
  216. package/out/_next/data/sTHntsHUajnk_njFTxiB5/visualiser.json +1 -0
  217. package/out/_next/static/chunks/109-716dea1303010b4f.js +1 -0
  218. package/out/_next/static/chunks/169-b33dfdaf2847d062.js +1 -0
  219. package/out/_next/static/chunks/178-e9a666e11fb7c88d.js +1 -0
  220. package/out/_next/static/chunks/585-aa9262ea1bcf9d5b.js +1 -0
  221. package/out/_next/static/chunks/650-555944cc1eb7714e.js +1 -0
  222. package/out/_next/static/chunks/962-17a425b16c23bd0f.js +1 -0
  223. package/out/_next/static/chunks/pages/_app-d88c877888678e85.js +1 -0
  224. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/logs-7317f2121b8f0d8c.js +1 -0
  225. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-a7fa6002267ccd3b.js +1 -0
  226. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-a5fb5b26471e703b.js +1 -0
  227. package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-80d6d803e5466b81.js +1 -0
  228. package/out/_next/static/chunks/pages/domains/[domain]-e39d527b56fd45c8.js +1 -0
  229. package/out/_next/static/chunks/pages/domains-6ab78cb1bc2f4200.js +1 -0
  230. package/out/_next/static/chunks/pages/events/[name]/v/[version]-93d978734b0dc0a3.js +1 -0
  231. package/out/_next/static/chunks/pages/events/{[name]-813780e7042af288.js → [name]-d3d2a03948b8dfeb.js} +1 -1
  232. package/out/_next/static/chunks/pages/events-5a41c37b360b2fce.js +1 -0
  233. package/out/_next/static/chunks/pages/{overview-2f0bfad06c84e437.js → overview-dc5e91549c7e3d52.js} +1 -1
  234. package/out/_next/static/chunks/pages/services/[name]-148079bb388f8c53.js +1 -0
  235. package/out/_next/static/chunks/pages/services-7fe5a823f1b25f18.js +1 -0
  236. package/out/_next/static/chunks/pages/users/[id]-b255611073ef76e0.js +1 -0
  237. package/out/_next/static/chunks/pages/visualiser-2fc8224670ac5dff.js +1 -0
  238. package/out/_next/static/chunks/webpack-b17b8ef11b94ba66.js +1 -0
  239. package/{.next/static/css/4a01a08d48b115f7.css → out/_next/static/css/70ede87da43120f8.css} +1 -1
  240. package/out/_next/static/sTHntsHUajnk_njFTxiB5/_buildManifest.js +1 -0
  241. package/out/_next/static/{jznFKGTbxJsAeYNZE4XtO → sTHntsHUajnk_njFTxiB5}/_middlewareManifest.js +0 -0
  242. package/out/_next/static/sTHntsHUajnk_njFTxiB5/_ssgManifest.js +1 -0
  243. package/out/domains/Shopping/events/AddedItemToCart/index.html +65 -0
  244. package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +1 -0
  245. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +58 -0
  246. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +65 -0
  247. package/out/domains/Shopping/index.html +2 -0
  248. package/out/domains/Shopping/services/Basket Service/index.html +2 -0
  249. package/out/domains/Shopping/services/Data Lake/index.html +2 -0
  250. package/out/domains/index.html +2 -0
  251. package/out/events/OrderComplete/index.html +2 -2
  252. package/out/events/OrderComplete/logs/index.html +1 -1
  253. package/out/events/OrderConfirmed/index.html +2 -2
  254. package/out/events/OrderConfirmed/logs/index.html +1 -1
  255. package/out/events/OrderRequested/index.html +2 -2
  256. package/out/events/OrderRequested/logs/index.html +1 -1
  257. package/out/events/PaymentProcessed/index.html +2 -2
  258. package/out/events/PaymentProcessed/logs/index.html +1 -1
  259. package/out/events/RemovedItemFromCart/index.html +2 -2
  260. package/out/events/RemovedItemFromCart/logs/index.html +1 -1
  261. package/out/events/ShipmentDelivered/index.html +2 -2
  262. package/out/events/ShipmentDelivered/logs/index.html +1 -1
  263. package/out/events/ShipmentDispatched/index.html +2 -2
  264. package/out/events/ShipmentDispatched/logs/index.html +1 -1
  265. package/out/events/ShipmentPrepared/index.html +2 -2
  266. package/out/events/ShipmentPrepared/logs/index.html +1 -1
  267. package/out/events/index.html +3 -3
  268. package/out/index.html +1 -1
  269. package/out/overview/index.html +1 -1
  270. package/out/services/Basket Service/index.html +1 -2
  271. package/out/services/Data Lake/index.html +1 -2
  272. package/out/services/Payment Service/index.html +2 -2
  273. package/out/services/Shipping Service/index.html +2 -2
  274. package/out/services/index.html +3 -3
  275. package/out/users/dboyne/index.html +6 -5
  276. package/out/users/mSmith/index.html +3 -3
  277. package/out/visualiser/index.html +4 -3
  278. package/package.json +2 -2
  279. package/pages/domains/[domain]/events/[name]/logs.tsx +29 -0
  280. package/pages/domains/[domain]/events/[name]/v/[version].tsx +39 -0
  281. package/pages/domains/[domain]/events/[name].tsx +46 -0
  282. package/pages/domains/[domain]/index.tsx +138 -0
  283. package/pages/domains/[domain]/services/[name].tsx +42 -0
  284. package/pages/domains.tsx +64 -0
  285. package/pages/events/[name]/logs.tsx +6 -4
  286. package/pages/events/[name]/v/[version].tsx +3 -2
  287. package/pages/events/[name].tsx +26 -12
  288. package/pages/events.tsx +59 -33
  289. package/pages/overview.tsx +3 -3
  290. package/pages/services/[name].tsx +8 -8
  291. package/pages/users/[id].tsx +15 -5
  292. package/pages/visualiser.tsx +98 -82
  293. package/scripts/move-schemas-for-download.js +25 -10
  294. package/tailwind.config.js +11 -1
  295. package/.next/server/pages/events/AddedItemToCart/logs.html +0 -1
  296. package/.next/server/pages/events/AddedItemToCart/v/0.0.1.html +0 -58
  297. package/.next/server/pages/events/AddedItemToCart/v/0.0.1.json +0 -1
  298. package/.next/server/pages/events/AddedItemToCart/v/0.0.2.html +0 -65
  299. package/.next/server/pages/events/AddedItemToCart/v/0.0.2.json +0 -1
  300. package/.next/server/pages/events/AddedItemToCart.html +0 -65
  301. package/.next/server/pages/events/AddedItemToCart.json +0 -1
  302. package/.next/static/chunks/109-a08539311d3d6672.js +0 -1
  303. package/.next/static/chunks/178-87f01d17ab32dd4f.js +0 -1
  304. package/.next/static/chunks/252-08ab418f9b6821dd.js +0 -1
  305. package/.next/static/chunks/650-343888e13f994a09.js +0 -1
  306. package/.next/static/chunks/962-20c87db3880df896.js +0 -1
  307. package/.next/static/chunks/pages/_app-f1bd719e11eb827e.js +0 -1
  308. package/.next/static/chunks/pages/events/[name]/v/[version]-33051dbc32f5fe4e.js +0 -1
  309. package/.next/static/chunks/pages/events-1f39499146c9c75f.js +0 -1
  310. package/.next/static/chunks/pages/services/[name]-142d7fa515cfc532.js +0 -1
  311. package/.next/static/chunks/pages/services-f52121c6dc1211aa.js +0 -1
  312. package/.next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js +0 -1
  313. package/.next/static/chunks/pages/visualiser-e4e3757e74f19df7.js +0 -1
  314. package/.next/static/chunks/webpack-fb340c369157e229.js +0 -1
  315. package/.next/static/jznFKGTbxJsAeYNZE4XtO/_buildManifest.js +0 -1
  316. package/.next/static/jznFKGTbxJsAeYNZE4XtO/_ssgManifest.js +0 -1
  317. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/AddedItemToCart/v/0.0.1.json +0 -1
  318. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/AddedItemToCart/v/0.0.2.json +0 -1
  319. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/AddedItemToCart.json +0 -1
  320. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/OrderComplete.json +0 -1
  321. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/OrderConfirmed.json +0 -1
  322. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/OrderRequested.json +0 -1
  323. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/PaymentProcessed.json +0 -1
  324. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/RemovedItemFromCart.json +0 -1
  325. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/ShipmentDelivered.json +0 -1
  326. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/ShipmentDispatched.json +0 -1
  327. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events/ShipmentPrepared.json +0 -1
  328. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/events.json +0 -1
  329. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/overview.json +0 -1
  330. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/services/Basket Service.json +0 -1
  331. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/services/Data Lake.json +0 -1
  332. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/services/Payment Service.json +0 -1
  333. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/services/Shipping Service.json +0 -1
  334. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/services.json +0 -1
  335. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/users/dboyne.json +0 -1
  336. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/users/mSmith.json +0 -1
  337. package/out/_next/data/jznFKGTbxJsAeYNZE4XtO/visualiser.json +0 -1
  338. package/out/_next/static/chunks/109-a08539311d3d6672.js +0 -1
  339. package/out/_next/static/chunks/178-87f01d17ab32dd4f.js +0 -1
  340. package/out/_next/static/chunks/252-08ab418f9b6821dd.js +0 -1
  341. package/out/_next/static/chunks/650-343888e13f994a09.js +0 -1
  342. package/out/_next/static/chunks/962-20c87db3880df896.js +0 -1
  343. package/out/_next/static/chunks/pages/_app-f1bd719e11eb827e.js +0 -1
  344. package/out/_next/static/chunks/pages/events/[name]/v/[version]-33051dbc32f5fe4e.js +0 -1
  345. package/out/_next/static/chunks/pages/events-1f39499146c9c75f.js +0 -1
  346. package/out/_next/static/chunks/pages/services/[name]-142d7fa515cfc532.js +0 -1
  347. package/out/_next/static/chunks/pages/services-f52121c6dc1211aa.js +0 -1
  348. package/out/_next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js +0 -1
  349. package/out/_next/static/chunks/pages/visualiser-e4e3757e74f19df7.js +0 -1
  350. package/out/_next/static/chunks/webpack-fb340c369157e229.js +0 -1
  351. package/out/_next/static/jznFKGTbxJsAeYNZE4XtO/_buildManifest.js +0 -1
  352. package/out/_next/static/jznFKGTbxJsAeYNZE4XtO/_ssgManifest.js +0 -1
  353. package/out/events/AddedItemToCart/index.html +0 -65
  354. package/out/events/AddedItemToCart/logs/index.html +0 -1
  355. package/out/events/AddedItemToCart/v/0.0.1/index.html +0 -58
  356. package/out/events/AddedItemToCart/v/0.0.2/index.html +0 -65
@@ -0,0 +1,138 @@
1
+ import Head from 'next/head';
2
+ import { MDXRemote } from 'next-mdx-remote';
3
+
4
+ import { Domain } from '@eventcatalog/types';
5
+ import ContentView from '@/components/ContentView';
6
+ import { getDomainByName } from '@/lib/domains';
7
+
8
+ import Admonition from '@/components/Mdx/Admonition';
9
+ import DomainSideBar from '@/components/Sidebars/DomainSidebar';
10
+ import BreadCrumbs from '@/components/BreadCrumbs';
11
+ import NotFound from '@/components/NotFound';
12
+ import { useConfig, useUrl } from '@/hooks/EventCatalog';
13
+
14
+ import getBackgroundColor from '@/utils/random-bg';
15
+
16
+ import { MarkdownFile } from '@/types/index';
17
+ import NodeGraph from '@/components/Mdx/NodeGraph/NodeGraph';
18
+
19
+ interface DomainsPageProps {
20
+ domain: Domain;
21
+ markdown: MarkdownFile;
22
+ notFound?: boolean;
23
+ }
24
+
25
+ const getComponents = (domain: Domain) => ({
26
+ Admonition,
27
+ NodeGraph: ({
28
+ title,
29
+ maxHeight,
30
+ maxZoom,
31
+ fitView,
32
+ zoomOnScroll,
33
+ isAnimated,
34
+ isDraggable,
35
+ }: // isHorizontal,
36
+ {
37
+ title?: string;
38
+ maxHeight?: number;
39
+ maxZoom?: number;
40
+ fitView?: boolean;
41
+ zoomOnScroll?: boolean;
42
+ isAnimated?: boolean;
43
+ isDraggable?: boolean;
44
+ // isHorizontal?: boolean;
45
+ }) => (
46
+ <div className="mx-auto w-full">
47
+ {title && <h2 className="text-lg font-medium text-gray-900 underline">{title}</h2>}
48
+ <NodeGraph
49
+ source="domain"
50
+ data={domain}
51
+ rootNodeColor={getBackgroundColor(domain.name)}
52
+ maxHeight={maxHeight}
53
+ maxZoom={maxZoom}
54
+ fitView={fitView}
55
+ zoomOnScroll={zoomOnScroll}
56
+ isAnimated={isAnimated}
57
+ isDraggable={isDraggable}
58
+ // isHorizontal={isHorizontal}
59
+ />
60
+ </div>
61
+ ),
62
+ });
63
+
64
+ export default function Domains(props: DomainsPageProps) {
65
+ const { domain, markdown, notFound } = props;
66
+ const { title } = useConfig();
67
+ const { getEditUrl, hasEditUrl } = useUrl();
68
+
69
+ if (notFound)
70
+ return (
71
+ // TODO: Allow domain not found
72
+ <NotFound type="service" name={domain.name} editUrl={hasEditUrl ? getEditUrl(`/domains/${domain.name}/index.md`) : ''} />
73
+ );
74
+
75
+ const { name, summary } = domain;
76
+ const { lastModifiedDate } = markdown;
77
+
78
+ const mdxComponents = getComponents(domain);
79
+
80
+ const pages = [
81
+ { name: 'Domains', href: '/domains', current: false },
82
+ { name, href: `/domains/${name}`, current: true },
83
+ ];
84
+
85
+ return (
86
+ <>
87
+ <Head>
88
+ <title>
89
+ {title} - {name}
90
+ </title>
91
+ </Head>
92
+ <ContentView
93
+ title={name}
94
+ editUrl={hasEditUrl ? getEditUrl(`/domains/${name}/index.md`) : ''}
95
+ subtitle={summary}
96
+ lastModifiedDate={lastModifiedDate}
97
+ breadCrumbs={<BreadCrumbs pages={pages} homePath="/domains" />}
98
+ sidebar={<DomainSideBar domain={domain} />}
99
+ >
100
+ {/* @ts-ignore */}
101
+ <MDXRemote {...markdown.source} components={mdxComponents} />
102
+ </ContentView>
103
+ </>
104
+ );
105
+ }
106
+
107
+ export async function getStaticProps({ params }) {
108
+ try {
109
+ const { domain, markdown } = await getDomainByName({ domainName: params.domain });
110
+
111
+ return {
112
+ props: {
113
+ domain,
114
+ markdown,
115
+ },
116
+ };
117
+ } catch (error) {
118
+ return {
119
+ props: {
120
+ notFound: true,
121
+ service: { name: params.name },
122
+ },
123
+ };
124
+ }
125
+ }
126
+
127
+ export async function getStaticPaths() {
128
+ // Get all Domains....
129
+
130
+ const domains = [{ name: 'Shopping', events: [], owners: [], services: [] }];
131
+
132
+ // const services = getAllServices();
133
+ const paths = domains.map((domain) => ({ params: { domain: domain.name } }));
134
+ return {
135
+ paths,
136
+ fallback: false,
137
+ };
138
+ }
@@ -0,0 +1,42 @@
1
+ import ServicePage from '../../../services/[name]';
2
+ import { getServiceByName } from '@/lib/services';
3
+ import { getAllServicesFromDomains } from '@/lib/domains';
4
+
5
+ export default ServicePage;
6
+
7
+ export async function getStaticProps({ params }) {
8
+ try {
9
+ const { service, markdown } = await getServiceByName({
10
+ serviceName: params.name,
11
+ domain: params.domain,
12
+ });
13
+
14
+ return {
15
+ props: {
16
+ service,
17
+ markdown,
18
+ breadCrumbs: [
19
+ { name: 'Domain', href: '/domains', current: false },
20
+ { name: service.domain, href: `/domains/${service.domain}`, current: false },
21
+ { name: 'Services', href: `/services`, current: false },
22
+ { name: service.name, href: `/domains/${service.domain}/services/${service.name}`, current: true },
23
+ ],
24
+ },
25
+ };
26
+ } catch (error) {
27
+ return {
28
+ props: {
29
+ notFound: true,
30
+ service: { name: params.name },
31
+ },
32
+ };
33
+ }
34
+ }
35
+ export async function getStaticPaths() {
36
+ const services = getAllServicesFromDomains();
37
+ const paths = services.map((service) => ({ params: { name: service.name, domain: service.domain } }));
38
+ return {
39
+ paths,
40
+ fallback: false,
41
+ };
42
+ }
@@ -0,0 +1,64 @@
1
+ import Head from 'next/head';
2
+ import { Service, Domain } from '@eventcatalog/types';
3
+
4
+ import DomainGrid from '@/components/Grids/DomainGrid';
5
+ import { getAllServices } from '@/lib/services';
6
+ import { useConfig } from '@/hooks/EventCatalog';
7
+ import { getAllDomains } from '@/lib/domains';
8
+
9
+ export interface PageProps {
10
+ services: Service[];
11
+ domains: Domain[];
12
+ }
13
+
14
+ export default function Page({ domains }: PageProps) {
15
+ const { title } = useConfig();
16
+
17
+ return (
18
+ <>
19
+ <Head>
20
+ <title>{title} - All Domains</title>
21
+ </Head>
22
+ <main className="max-w-7xl mx-auto md:min-h-screen px-4 md:px-0">
23
+ <div className="relative z-10 flex items-baseline justify-between pt-8 pb-6 border-b border-gray-200">
24
+ <h1 className="text-2xl font-extrabold tracking-tight text-gray-900">Domains ({domains.length})</h1>
25
+ </div>
26
+
27
+ <section className="pt-6 pb-24">
28
+ <div className="grid grid-cols-4 gap-x-8 gap-y-10">
29
+ <form className="hidden lg:block">
30
+ <div className="border-b border-gray-200 pb-6">
31
+ <h3 className="-my-3 flow-root">
32
+ <div className="py-3 bg-white w-full flex items-center justify-between text-sm text-gray-400 hover:text-gray-500">
33
+ <span className="font-medium text-gray-900">Features</span>
34
+ </div>
35
+ </h3>
36
+ <div className="mt-4 text-xs text-gray-400">No Filters for Domains</div>
37
+ </div>
38
+ </form>
39
+
40
+ <div className="col-span-4 lg:col-span-3">
41
+ <div>
42
+ <h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">Domains</h2>
43
+ <DomainGrid domains={domains} />
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </section>
48
+ </main>
49
+ </>
50
+ );
51
+ }
52
+
53
+ export async function getStaticProps() {
54
+ const services = getAllServices();
55
+ const allDomains = await getAllDomains();
56
+ const domains = allDomains.map((item) => item.domain);
57
+
58
+ return {
59
+ props: {
60
+ services,
61
+ domains,
62
+ },
63
+ };
64
+ }
@@ -144,8 +144,8 @@ function Logs({ changes, name: eventName, currentVersion }: LogsProps) {
144
144
  export const getStaticProps = async ({ params }) => {
145
145
  const { name: eventName } = params;
146
146
 
147
- const history = await getLogsForEvent(eventName);
148
- const { event: { version } = {} } = await getEventByName(eventName);
147
+ const history = await getLogsForEvent({ eventName });
148
+ const { event: { version } = {} } = await getEventByName({ eventName });
149
149
 
150
150
  return {
151
151
  props: {
@@ -157,8 +157,10 @@ export const getStaticProps = async ({ params }) => {
157
157
  };
158
158
 
159
159
  export async function getStaticPaths() {
160
- const services = getAllEvents();
161
- const paths = services.map((event) => ({ params: { name: event.name } }));
160
+ const events = getAllEvents();
161
+ const eventsWithoutDomains = events.filter((event) => !event.domain);
162
+ const paths = eventsWithoutDomains.map((event) => ({ params: { name: event.name } }));
163
+
162
164
  return {
163
165
  paths,
164
166
  fallback: false,
@@ -7,7 +7,7 @@ export default function Events(props: EventsPageProps) {
7
7
 
8
8
  export async function getStaticProps({ params }) {
9
9
  const { name: eventName, version } = params;
10
- const { event, markdown } = await getEventByName(eventName, version);
10
+ const { event, markdown } = await getEventByName({ eventName, version });
11
11
 
12
12
  return {
13
13
  props: {
@@ -20,10 +20,11 @@ export async function getStaticProps({ params }) {
20
20
 
21
21
  export async function getStaticPaths() {
22
22
  const allEventsAndVersions = getAllEventsAndVersionsFlattened();
23
+ const eventsWithDomains = allEventsAndVersions.filter((item) => !!item.domain === false);
23
24
 
24
25
  // all but current one
25
26
 
26
- const paths = allEventsAndVersions.map(({ eventName, version }: any) => ({ params: { name: eventName, version } }));
27
+ const paths = eventsWithDomains.map(({ eventName, version }: any) => ({ params: { name: eventName, version } }));
27
28
  return {
28
29
  paths,
29
30
  fallback: false,
@@ -23,6 +23,8 @@ import NodeGraph from '@/components/Mdx/NodeGraph/NodeGraph';
23
23
 
24
24
  export interface EventsPageProps {
25
25
  event: Event;
26
+ eventPath: string;
27
+ breadCrumbs: any;
26
28
  markdown: MarkdownFile;
27
29
  notFound?: boolean;
28
30
  loadedVersion?: string;
@@ -129,7 +131,7 @@ export const getComponents = ({ event, schema, examples }: any) => ({
129
131
  });
130
132
 
131
133
  export default function Events(props: EventsPageProps) {
132
- const { event, markdown, loadedVersion, notFound } = props;
134
+ const { event, markdown, loadedVersion, notFound, breadCrumbs, eventPath } = props;
133
135
  const { title } = useConfig();
134
136
  const { getEditUrl, hasEditUrl } = useUrl();
135
137
 
@@ -140,11 +142,6 @@ export default function Events(props: EventsPageProps) {
140
142
 
141
143
  const { lastModifiedDate } = markdown;
142
144
 
143
- const pages = [
144
- { name: 'Events', href: '/events', current: false },
145
- { name, href: `/services/${name}`, current: true },
146
- ];
147
-
148
145
  const mdxComponents = getComponents({ event, schema, examples });
149
146
 
150
147
  return (
@@ -156,16 +153,23 @@ export default function Events(props: EventsPageProps) {
156
153
  </Head>
157
154
  <ContentView
158
155
  title={name}
159
- editUrl={hasEditUrl ? getEditUrl(`/events/${name}/index.md`) : ''}
156
+ editUrl={hasEditUrl ? getEditUrl(`${eventPath}/index.md`) : ''}
160
157
  subtitle={summary}
161
158
  draft={draft}
162
159
  lastModifiedDate={lastModifiedDate}
163
160
  tags={[{ label: `v${version}` }]}
164
- breadCrumbs={<BreadCrumbs pages={pages} />}
161
+ breadCrumbs={<BreadCrumbs pages={breadCrumbs} />}
165
162
  isOldVersion={loadedVersion !== 'latest'}
166
- latestVersionUrl={`/events/${name}`}
163
+ latestVersionUrl={eventPath}
167
164
  version={loadedVersion}
168
- sidebar={<EventSideBar event={event} loadedVersion={loadedVersion} isOldVersion={loadedVersion !== 'latest'} />}
165
+ sidebar={
166
+ <EventSideBar
167
+ event={event}
168
+ urlPath={eventPath}
169
+ loadedVersion={loadedVersion}
170
+ isOldVersion={loadedVersion !== 'latest'}
171
+ />
172
+ }
169
173
  >
170
174
  <MDXRemote {...markdown.source} components={mdxComponents} />
171
175
  </ContentView>
@@ -175,10 +179,18 @@ export default function Events(props: EventsPageProps) {
175
179
 
176
180
  export async function getStaticProps({ params }) {
177
181
  try {
178
- const { event, markdown } = await getEventByName(params.name);
182
+ const { event, markdown } = await getEventByName({
183
+ eventName: params.name,
184
+ });
185
+
179
186
  return {
180
187
  props: {
181
188
  event,
189
+ eventPath: `/events/${event.name}`,
190
+ breadCrumbs: [
191
+ { name: 'Events', href: '/events', current: false },
192
+ { name: event.name, href: `/events/${event.name}`, current: true },
193
+ ],
182
194
  markdown,
183
195
  loadedVersion: 'latest',
184
196
  },
@@ -195,7 +207,9 @@ export async function getStaticProps({ params }) {
195
207
 
196
208
  export async function getStaticPaths() {
197
209
  const events = getAllEvents();
198
- const paths = events.map((event) => ({ params: { name: event.name } }));
210
+ const eventsWithoutDomains = events.filter((event) => !event.domain);
211
+
212
+ const paths = eventsWithoutDomains.map((event) => ({ params: { name: event.name } }));
199
213
 
200
214
  return {
201
215
  paths,
package/pages/events.tsx CHANGED
@@ -7,6 +7,7 @@ import { Menu, Transition } from '@headlessui/react';
7
7
  import { ChevronDownIcon, SearchIcon } from '@heroicons/react/solid';
8
8
  import EventGrid from '@/components/Grids/EventGrid';
9
9
  import { getAllEvents, getUniqueServicesNamesFromEvents } from '@/lib/events';
10
+ import { getUniqueDomainNamesFromEvents } from '@/lib/domains';
10
11
  import { useConfig } from '@/hooks/EventCatalog';
11
12
 
12
13
  function classNames(...classes) {
@@ -21,11 +22,21 @@ const sortOptions = [
21
22
 
22
23
  export interface PageProps {
23
24
  events: Event[];
24
- services: [Service];
25
+ services: Service[];
26
+ domains: string[];
25
27
  }
26
28
 
27
- export default function Page({ events, services }: PageProps) {
29
+ export default function Page({ events, services, domains }: PageProps) {
28
30
  const filters = [
31
+ {
32
+ id: 'domains',
33
+ name: `Filter by Domains (${domains.length})`,
34
+ options: domains.map((domain) => ({
35
+ value: domain,
36
+ label: domain,
37
+ checked: false,
38
+ })),
39
+ },
29
40
  {
30
41
  id: 'services',
31
42
  name: `Filter by Services (${services.length})`,
@@ -37,12 +48,14 @@ export default function Page({ events, services }: PageProps) {
37
48
  },
38
49
  ];
39
50
 
40
- const [selectedFilters, setSelectedFilters] = useState({ services: [] });
51
+ const [selectedFilters, setSelectedFilters] = useState({ services: [], domains: [] });
41
52
  const [showMermaidDiagrams, setShowMermaidDiagrams] = useState(false);
42
53
  const [eventsToRender, setEventsToRender] = useState(events);
43
54
  const [searchFilter, setSearchFilter] = useState('');
44
55
 
45
56
  const handleFilterSelection = (option, type, event) => {
57
+ console.log(option, type, event);
58
+
46
59
  if (event.target.checked) {
47
60
  const newFilters = selectedFilters[type].concat([option.value]);
48
61
  setSelectedFilters({ ...selectedFilters, [type]: newFilters });
@@ -53,7 +66,7 @@ export default function Page({ events, services }: PageProps) {
53
66
  };
54
67
 
55
68
  const getFilteredEvents = (): any => {
56
- if (!selectedFilters.services && !searchFilter) return events;
69
+ if (!selectedFilters.services && !searchFilter && !selectedFilters.domains) return events;
57
70
 
58
71
  let filteredEvents = events;
59
72
 
@@ -62,13 +75,21 @@ export default function Page({ events, services }: PageProps) {
62
75
  filteredEvents = filteredEvents.filter((event) => {
63
76
  const { services: serviceFilters } = selectedFilters;
64
77
 
65
- const hasConsumersFromFilters = event.consumers.some((consumerId) => serviceFilters.indexOf(consumerId) > -1);
66
- const hasProducersFromFilters = event.producers.some((producerId) => serviceFilters.indexOf(producerId) > -1);
78
+ const hasConsumersFromFilters = event.consumerNames.some((consumerId) => serviceFilters.indexOf(consumerId) > -1);
79
+ const hasProducersFromFilters = event.producerNames.some((producerId) => serviceFilters.indexOf(producerId) > -1);
67
80
 
68
81
  return hasConsumersFromFilters || hasProducersFromFilters;
69
82
  });
70
83
  }
71
84
 
85
+ if (selectedFilters.domains.length > 0) {
86
+ // @ts-ignore
87
+ filteredEvents = filteredEvents.filter((event) => {
88
+ const { domains: domainFilters } = selectedFilters;
89
+ return domainFilters.indexOf(event.domain) > -1;
90
+ });
91
+ }
92
+
72
93
  if (searchFilter) {
73
94
  filteredEvents = filteredEvents.filter((event) => event.name.toLowerCase().includes(searchFilter.toLowerCase()));
74
95
  }
@@ -168,35 +189,38 @@ export default function Page({ events, services }: PageProps) {
168
189
  />
169
190
  </div>
170
191
  </div>
171
- {filters.map((section: any) => (
172
- <div key={section.id} className="border-b border-gray-200 py-6">
173
- <h3 className="-my-3 flow-root">
174
- <div className="py-3 bg-white w-full flex items-center justify-between text-sm text-gray-400 hover:text-gray-500">
175
- <span className="font-bold font-medium text-gray-900">{section.name}</span>
176
- </div>
177
- </h3>
178
- <div className="pt-6">
179
- <div className="space-y-4">
180
- {section.options.map((option, optionIdx) => (
181
- <div key={option.value} className="flex items-center">
182
- <input
183
- id={`filter-${section.id}-${optionIdx}`}
184
- name={`${section.id}[]`}
185
- defaultValue={option.value}
186
- type="checkbox"
187
- onChange={(event) => handleFilterSelection(option, section.id, event)}
188
- defaultChecked={option.checked}
189
- className="h-4 w-4 border-gray-300 rounded text-gray-600 focus:ring-gray-500"
190
- />
191
- <label htmlFor={`filter-${section.id}-${optionIdx}`} className="ml-3 text-sm text-gray-600">
192
- {option.label}
193
- </label>
194
- </div>
195
- ))}
192
+ {filters.map((section: any) => {
193
+ if (!section.options.length) return null;
194
+ return (
195
+ <div key={section.id} className="border-b border-gray-200 py-6">
196
+ <h3 className="-my-3 flow-root">
197
+ <div className="py-3 bg-white w-full flex items-center justify-between text-sm text-gray-400 hover:text-gray-500">
198
+ <span className="font-bold font-medium text-gray-900">{section.name}</span>
199
+ </div>
200
+ </h3>
201
+ <div className="pt-6">
202
+ <div className="space-y-4">
203
+ {section.options.map((option, optionIdx) => (
204
+ <div key={option.value} className="flex items-center">
205
+ <input
206
+ id={`filter-${section.id}-${optionIdx}`}
207
+ name={`${section.id}[]`}
208
+ defaultValue={option.value}
209
+ type="checkbox"
210
+ onChange={(event) => handleFilterSelection(option, section.id, event)}
211
+ defaultChecked={option.checked}
212
+ className="h-4 w-4 border-gray-300 rounded text-gray-600 focus:ring-gray-500"
213
+ />
214
+ <label htmlFor={`filter-${section.id}-${optionIdx}`} className="ml-3 text-sm text-gray-600">
215
+ {option.label}
216
+ </label>
217
+ </div>
218
+ ))}
219
+ </div>
196
220
  </div>
197
221
  </div>
198
- </div>
199
- ))}
222
+ );
223
+ })}
200
224
 
201
225
  <div className="border-b border-gray-200 py-6">
202
226
  <h3 className="-my-3 flow-root">
@@ -251,12 +275,14 @@ export default function Page({ events, services }: PageProps) {
251
275
  export const getStaticProps = () => {
252
276
  const events = getAllEvents();
253
277
  const services = getUniqueServicesNamesFromEvents(events);
278
+ const domains = getUniqueDomainNamesFromEvents(events);
254
279
 
255
280
  return {
256
281
  props: {
257
282
  events,
258
283
  // @ts-ignore
259
284
  services: [...new Set(services)],
285
+ domains,
260
286
  },
261
287
  };
262
288
  };
@@ -28,9 +28,9 @@ function Graph({ events, services }: PageProps) {
28
28
 
29
29
  // Create all links
30
30
  const links = events.reduce((nodes, event) => {
31
- const { consumers = [], producers = [], name } = event;
32
- const consumerNodes = consumers.map((consumer) => ({ source: truncateNode(name), target: truncateNode(consumer) }));
33
- const producerNodes = producers.map((producer) => ({ source: truncateNode(producer), target: truncateNode(name) }));
31
+ const { consumerNames = [], producerNames = [], name } = event;
32
+ const consumerNodes = consumerNames.map((consumer) => ({ source: truncateNode(name), target: truncateNode(consumer) }));
33
+ const producerNodes = producerNames.map((producer) => ({ source: truncateNode(producer), target: truncateNode(name) }));
34
34
  return nodes.concat(consumerNodes).concat(producerNodes);
35
35
  }, []);
36
36
 
@@ -20,6 +20,7 @@ interface ServicesPageProps {
20
20
  service: Service;
21
21
  markdown: MarkdownFile;
22
22
  notFound?: boolean;
23
+ breadCrumbs: any;
23
24
  }
24
25
 
25
26
  function MermaidComponent({ title, service, charts }: { title?: string; service: Service; charts?: string[] }) {
@@ -74,7 +75,7 @@ const getComponents = (service) => ({
74
75
  });
75
76
 
76
77
  export default function Services(props: ServicesPageProps) {
77
- const { service, markdown, notFound } = props;
78
+ const { service, markdown, notFound, breadCrumbs } = props;
78
79
  const { title } = useConfig();
79
80
  const { getEditUrl, hasEditUrl } = useUrl();
80
81
 
@@ -88,11 +89,6 @@ export default function Services(props: ServicesPageProps) {
88
89
 
89
90
  const mdxComponents = getComponents(service);
90
91
 
91
- const pages = [
92
- { name: 'Services', href: '/services', current: false },
93
- { name, href: `/services/${name}`, current: true },
94
- ];
95
-
96
92
  return (
97
93
  <>
98
94
  <Head>
@@ -106,7 +102,7 @@ export default function Services(props: ServicesPageProps) {
106
102
  subtitle={summary}
107
103
  draft={draft}
108
104
  lastModifiedDate={lastModifiedDate}
109
- breadCrumbs={<BreadCrumbs pages={pages} homePath="/services" />}
105
+ breadCrumbs={<BreadCrumbs pages={breadCrumbs} homePath="/services" />}
110
106
  sidebar={<ServiceSidebar service={service} />}
111
107
  >
112
108
  {/* @ts-ignore */}
@@ -118,12 +114,16 @@ export default function Services(props: ServicesPageProps) {
118
114
 
119
115
  export async function getStaticProps({ params }) {
120
116
  try {
121
- const { service, markdown } = await getServiceByName(params.name);
117
+ const { service, markdown } = await getServiceByName({ serviceName: params.name });
122
118
 
123
119
  return {
124
120
  props: {
125
121
  service,
126
122
  markdown,
123
+ breadCrumbs: [
124
+ { name: 'Services', href: '/services', current: false },
125
+ { name: service.name, href: `/services/${service.name}`, current: true },
126
+ ],
127
127
  },
128
128
  };
129
129
  } catch (error) {
@@ -1,18 +1,22 @@
1
- import { Event, Service } from '@eventcatalog/types';
1
+ import { Domain, Event, Service } from '@eventcatalog/types';
2
2
  import EventGrid from '@/components/Grids/EventGrid';
3
3
  import ServiceGrid from '@/components/Grids/ServiceGrid';
4
+ import DomainGrid from '@/components/Grids/DomainGrid';
5
+
4
6
  import { getAllEventsByOwnerId, getAllOwners } from '@/lib/events';
5
7
  import { getAllServicesByOwnerId } from '@/lib/services';
8
+ import { getAllDomainsByOwnerId } from '@/lib/domains';
6
9
 
7
10
  import { useUser } from '@/hooks/EventCatalog';
8
11
 
9
12
  interface UserPageProps {
10
13
  events: Event[];
11
14
  services: Service[];
15
+ domains: Domain[];
12
16
  userId: string;
13
17
  }
14
18
 
15
- export default function UserPage({ events, services, userId }: UserPageProps) {
19
+ export default function UserPage({ events, services, domains, userId }: UserPageProps) {
16
20
  const { getUserById } = useUser();
17
21
 
18
22
  const user = getUserById(userId);
@@ -28,14 +32,18 @@ export default function UserPage({ events, services, userId }: UserPageProps) {
28
32
  <h1 className="text-3xl font-bold text-gray-900 relative">{user.name}</h1>
29
33
  </div>
30
34
  </div>
31
- <div className=" border-b border-gray-100 pb-6">
35
+ <div className="border-b border-gray-100 pb-6">
32
36
  <h1 className="text-lg font-bold text-gray-800 relative mt-4">Owner of Events ({events.length})</h1>
33
37
  <EventGrid events={events} />
34
38
  </div>
35
- <div>
36
- <h1 className="text-lg font-bold text-gray-800 relative mt-4">Owner of Services ({services.length})</h1>
39
+ <div className="border-b border-gray-100 pb-6">
40
+ <h1 className="text-lg font-bold text-gray-800 relative mt-4 ">Owner of Services ({services.length})</h1>
37
41
  <ServiceGrid services={services} />
38
42
  </div>
43
+ <div>
44
+ <h1 className="text-lg font-bold text-gray-800 relative mt-4">Owner of Domains ({domains.length})</h1>
45
+ <DomainGrid domains={domains} />
46
+ </div>
39
47
  </div>
40
48
  <div className="px-8">
41
49
  <div className="flex items-center space-x-5 mt-4 ">
@@ -63,10 +71,12 @@ export const getStaticProps = async ({ params }) => {
63
71
  const { id: userId } = params;
64
72
  const userEvents = await getAllEventsByOwnerId(userId);
65
73
  const services = await getAllServicesByOwnerId(userId);
74
+ const domains = await getAllDomainsByOwnerId(userId);
66
75
 
67
76
  return {
68
77
  props: {
69
78
  events: userEvents,
79
+ domains,
70
80
  services,
71
81
  userId,
72
82
  },