@eventcatalog/core 0.2.9 → 0.2.12

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 (230) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +67 -55
  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/react-loadable-manifest.json +2 -2
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/29.js +14 -0
  16. package/.next/server/chunks/484.js +9 -23
  17. package/.next/server/chunks/50.js +61 -20
  18. package/.next/server/chunks/944.js +1 -1
  19. package/.next/server/pages/404.html +1 -1
  20. package/.next/server/pages/500.html +1 -1
  21. package/.next/server/pages/domains/Orders/events/OrderComplete/logs.html +1 -1
  22. package/.next/server/pages/domains/Orders/events/OrderComplete.html +2 -2
  23. package/.next/server/pages/domains/Orders/events/OrderComplete.json +1 -1
  24. package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.html +1 -1
  25. package/.next/server/pages/domains/Orders/events/OrderConfirmed.html +2 -2
  26. package/.next/server/pages/domains/Orders/events/OrderConfirmed.json +1 -1
  27. package/.next/server/pages/domains/Orders/events/OrderRequested/logs.html +1 -1
  28. package/.next/server/pages/domains/Orders/events/OrderRequested.html +2 -2
  29. package/.next/server/pages/domains/Orders/events/OrderRequested.json +1 -1
  30. package/.next/server/pages/domains/Orders/services/Orders Service.html +2 -2
  31. package/.next/server/pages/domains/Orders/services/Orders Service.json +1 -1
  32. package/.next/server/pages/domains/Orders.html +2 -2
  33. package/.next/server/pages/domains/Orders.json +1 -1
  34. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +1 -1
  35. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +2 -2
  36. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -1
  37. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +2 -2
  38. package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -1
  39. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +2 -2
  40. package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +1 -1
  41. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.html +1 -1
  42. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.html +2 -2
  43. package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.json +1 -1
  44. package/.next/server/pages/domains/Shopping.html +2 -2
  45. package/.next/server/pages/domains/Shopping.json +1 -1
  46. package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +1 -1
  47. package/.next/server/pages/domains/[domain]/events/[name].js +1 -1
  48. package/.next/server/pages/domains/[domain]/services/[name].js +7 -0
  49. package/.next/server/pages/domains.html +2 -2
  50. package/.next/server/pages/events/PaymentProcessed/logs.html +1 -1
  51. package/.next/server/pages/events/PaymentProcessed.html +2 -2
  52. package/.next/server/pages/events/PaymentProcessed.json +1 -1
  53. package/.next/server/pages/events/ShipmentDelivered/logs.html +1 -1
  54. package/.next/server/pages/events/ShipmentDelivered.html +2 -2
  55. package/.next/server/pages/events/ShipmentDelivered.json +1 -1
  56. package/.next/server/pages/events/ShipmentDispatched/logs.html +1 -1
  57. package/.next/server/pages/events/ShipmentDispatched.html +2 -2
  58. package/.next/server/pages/events/ShipmentDispatched.json +1 -1
  59. package/.next/server/pages/events/ShipmentPrepared/logs.html +1 -1
  60. package/.next/server/pages/events/ShipmentPrepared.html +2 -2
  61. package/.next/server/pages/events/ShipmentPrepared.json +1 -1
  62. package/.next/server/pages/events/[name]/v/[version].js +1 -1
  63. package/.next/server/pages/events/[name].js +1 -1
  64. package/.next/server/pages/events.html +2 -2
  65. package/.next/server/pages/index.html +1 -1
  66. package/.next/server/pages/overview.html +1 -1
  67. package/.next/server/pages/services/Orders Service.html +1 -1
  68. package/.next/server/pages/services/Payment Service.html +2 -2
  69. package/.next/server/pages/services/Payment Service.json +1 -1
  70. package/.next/server/pages/services/Shipping Service.html +2 -2
  71. package/.next/server/pages/services/Shipping Service.json +1 -1
  72. package/.next/server/pages/services/[name].js +7 -0
  73. package/.next/server/pages/services.html +2 -2
  74. package/.next/server/pages/users/dboyne.html +2 -2
  75. package/.next/server/pages/users/mSmith.html +2 -2
  76. package/.next/server/pages/visualiser.html +2 -2
  77. package/.next/static/P5kR3NJnMI8_LCcCh0vDK/_buildManifest.js +1 -0
  78. package/.next/static/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/_middlewareManifest.js +0 -0
  79. package/.next/static/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/_ssgManifest.js +0 -0
  80. package/.next/static/chunks/102-8f499174d959ae76.js +1 -0
  81. package/.next/static/chunks/109-d34abdcb3eb2dcd9.js +1 -0
  82. package/.next/static/chunks/178-7604eb85b765379d.js +1 -0
  83. package/.next/static/chunks/223-30d08619b4edda15.js +1 -0
  84. package/.next/static/chunks/379.1804d2aabaeb062b.js +1 -0
  85. package/.next/static/chunks/40247457-5e8b57cf2f01f630.js +1 -0
  86. package/.next/static/chunks/470-f4091fe4e0b2b803.js +1 -0
  87. package/.next/static/chunks/681-0739f8ea484461b9.js +1 -0
  88. package/.next/static/chunks/{7f5d3f51-83121b73403fb948.js → 7f5d3f51-910a6c1f7e252346.js} +1 -1
  89. package/.next/static/chunks/903-34d2b253285a8ae4.js +1 -0
  90. package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/{[version]-a7fa6002267ccd3b.js → [version]-d1aa840823fe776a.js} +1 -1
  91. package/.next/static/chunks/pages/domains/[domain]/events/{[name]-a5fb5b26471e703b.js → [name]-f4cdf2a266e66be5.js} +1 -1
  92. package/.next/static/chunks/pages/domains/[domain]/services/{[name]-80d6d803e5466b81.js → [name]-49bce8da5b1625d0.js} +1 -1
  93. package/.next/static/chunks/pages/events/[name]/v/{[version]-93d978734b0dc0a3.js → [version]-eb1b8cbc04f132e4.js} +1 -1
  94. package/.next/static/chunks/pages/events/{[name]-d3d2a03948b8dfeb.js → [name]-a4c0d33ba9dfc927.js} +1 -1
  95. package/{out/_next/static/chunks/pages/overview-7ada2cb9fcb9a9ea.js → .next/static/chunks/pages/overview-3fc16cb1ae9c6206.js} +1 -1
  96. package/.next/static/chunks/pages/services/[name]-5355630da956ee4f.js +1 -0
  97. package/.next/static/chunks/webpack-5243ea3e842fcabb.js +1 -0
  98. package/.next/static/css/996136b57250cdf7.css +3 -0
  99. package/.next/static/css/bc1af6b16510c531.css +2 -0
  100. package/.next/trace +65 -57
  101. package/CHANGELOG.md +18 -0
  102. package/components/Mdx/NodeGraph/GraphLayout.ts +4 -3
  103. package/components/Mdx/NodeGraph/NodeGraph.tsx +33 -44
  104. package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +19 -8
  105. package/components/Mdx/OpenApiSpec.tsx +18 -0
  106. package/components/Sidebars/EventSidebar.tsx +1 -1
  107. package/lib/__tests__/assets/services/Payment Service/index.md +7 -0
  108. package/lib/__tests__/assets/services/Payment Service/openapi.yaml +94 -0
  109. package/lib/__tests__/file-reader.spec.ts +19 -1
  110. package/lib/__tests__/services.spec.ts +25 -12
  111. package/lib/file-reader.ts +13 -0
  112. package/lib/services.ts +2 -1
  113. package/out/404/index.html +1 -1
  114. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderComplete/logs.json +0 -0
  115. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderComplete.json +1 -1
  116. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderConfirmed/logs.json +0 -0
  117. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderConfirmed.json +1 -1
  118. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderRequested/logs.json +0 -0
  119. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders/events/OrderRequested.json +1 -1
  120. package/out/_next/data/P5kR3NJnMI8_LCcCh0vDK/domains/Orders/services/Orders Service.json +1 -0
  121. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Orders.json +1 -1
  122. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/AddedItemToCart/logs.json +0 -0
  123. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -1
  124. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -1
  125. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/AddedItemToCart.json +1 -1
  126. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -0
  127. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains/Shopping/events/RemovedItemFromCart.json +1 -1
  128. package/out/_next/data/P5kR3NJnMI8_LCcCh0vDK/domains/Shopping.json +1 -0
  129. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/domains.json +0 -0
  130. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/PaymentProcessed/logs.json +0 -0
  131. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/PaymentProcessed.json +1 -1
  132. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentDelivered/logs.json +0 -0
  133. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentDelivered.json +1 -1
  134. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentDispatched/logs.json +0 -0
  135. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentDispatched.json +1 -1
  136. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentPrepared/logs.json +0 -0
  137. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events/ShipmentPrepared.json +1 -1
  138. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/events.json +0 -0
  139. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/overview.json +0 -0
  140. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/services/Orders Service.json +0 -0
  141. package/out/_next/data/P5kR3NJnMI8_LCcCh0vDK/services/Payment Service.json +1 -0
  142. package/out/_next/data/P5kR3NJnMI8_LCcCh0vDK/services/Shipping Service.json +1 -0
  143. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/services.json +0 -0
  144. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/users/dboyne.json +0 -0
  145. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/users/mSmith.json +0 -0
  146. package/out/_next/data/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/visualiser.json +0 -0
  147. package/out/_next/static/P5kR3NJnMI8_LCcCh0vDK/_buildManifest.js +1 -0
  148. package/out/_next/static/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/_middlewareManifest.js +0 -0
  149. package/out/_next/static/{053__bBTIZvPKam2MmLPC → P5kR3NJnMI8_LCcCh0vDK}/_ssgManifest.js +0 -0
  150. package/out/_next/static/chunks/102-8f499174d959ae76.js +1 -0
  151. package/out/_next/static/chunks/109-d34abdcb3eb2dcd9.js +1 -0
  152. package/out/_next/static/chunks/178-7604eb85b765379d.js +1 -0
  153. package/out/_next/static/chunks/223-30d08619b4edda15.js +1 -0
  154. package/out/_next/static/chunks/379.1804d2aabaeb062b.js +1 -0
  155. package/out/_next/static/chunks/40247457-5e8b57cf2f01f630.js +1 -0
  156. package/out/_next/static/chunks/470-f4091fe4e0b2b803.js +1 -0
  157. package/out/_next/static/chunks/681-0739f8ea484461b9.js +1 -0
  158. package/out/_next/static/chunks/{7f5d3f51-83121b73403fb948.js → 7f5d3f51-910a6c1f7e252346.js} +1 -1
  159. package/out/_next/static/chunks/903-34d2b253285a8ae4.js +1 -0
  160. package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/{[version]-a7fa6002267ccd3b.js → [version]-d1aa840823fe776a.js} +1 -1
  161. package/out/_next/static/chunks/pages/domains/[domain]/events/{[name]-a5fb5b26471e703b.js → [name]-f4cdf2a266e66be5.js} +1 -1
  162. package/out/_next/static/chunks/pages/domains/[domain]/services/{[name]-80d6d803e5466b81.js → [name]-49bce8da5b1625d0.js} +1 -1
  163. package/out/_next/static/chunks/pages/events/[name]/v/{[version]-93d978734b0dc0a3.js → [version]-eb1b8cbc04f132e4.js} +1 -1
  164. package/out/_next/static/chunks/pages/events/{[name]-d3d2a03948b8dfeb.js → [name]-a4c0d33ba9dfc927.js} +1 -1
  165. package/{.next/static/chunks/pages/overview-7ada2cb9fcb9a9ea.js → out/_next/static/chunks/pages/overview-3fc16cb1ae9c6206.js} +1 -1
  166. package/out/_next/static/chunks/pages/services/[name]-5355630da956ee4f.js +1 -0
  167. package/out/_next/static/chunks/webpack-5243ea3e842fcabb.js +1 -0
  168. package/out/_next/static/css/996136b57250cdf7.css +3 -0
  169. package/out/_next/static/css/bc1af6b16510c531.css +2 -0
  170. package/out/domains/Orders/events/OrderComplete/index.html +2 -2
  171. package/out/domains/Orders/events/OrderComplete/logs/index.html +1 -1
  172. package/out/domains/Orders/events/OrderConfirmed/index.html +2 -2
  173. package/out/domains/Orders/events/OrderConfirmed/logs/index.html +1 -1
  174. package/out/domains/Orders/events/OrderRequested/index.html +2 -2
  175. package/out/domains/Orders/events/OrderRequested/logs/index.html +1 -1
  176. package/out/domains/Orders/index.html +2 -2
  177. package/out/domains/Orders/services/Orders Service/index.html +2 -2
  178. package/out/domains/Shopping/events/AddedItemToCart/index.html +2 -2
  179. package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +1 -1
  180. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +2 -2
  181. package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +2 -2
  182. package/out/domains/Shopping/events/RemovedItemFromCart/index.html +2 -2
  183. package/out/domains/Shopping/events/RemovedItemFromCart/logs/index.html +1 -1
  184. package/out/domains/Shopping/index.html +2 -2
  185. package/out/domains/index.html +2 -2
  186. package/out/events/PaymentProcessed/index.html +2 -2
  187. package/out/events/PaymentProcessed/logs/index.html +1 -1
  188. package/out/events/ShipmentDelivered/index.html +2 -2
  189. package/out/events/ShipmentDelivered/logs/index.html +1 -1
  190. package/out/events/ShipmentDispatched/index.html +2 -2
  191. package/out/events/ShipmentDispatched/logs/index.html +1 -1
  192. package/out/events/ShipmentPrepared/index.html +2 -2
  193. package/out/events/ShipmentPrepared/logs/index.html +1 -1
  194. package/out/events/index.html +2 -2
  195. package/out/index.html +1 -1
  196. package/out/overview/index.html +1 -1
  197. package/out/services/Orders Service/index.html +1 -1
  198. package/out/services/Payment Service/index.html +2 -2
  199. package/out/services/Shipping Service/index.html +2 -2
  200. package/out/services/index.html +2 -2
  201. package/out/users/dboyne/index.html +2 -2
  202. package/out/users/mSmith/index.html +2 -2
  203. package/out/visualiser/index.html +2 -2
  204. package/package.json +7 -5
  205. package/pages/services/[name].tsx +6 -1
  206. package/styles/globals.css +19 -0
  207. package/.next/static/053__bBTIZvPKam2MmLPC/_buildManifest.js +0 -1
  208. package/.next/static/chunks/109-7e910ba645edff2d.js +0 -1
  209. package/.next/static/chunks/178-c0d21132335f7d58.js +0 -1
  210. package/.next/static/chunks/5-6380a6f543e8372a.js +0 -1
  211. package/.next/static/chunks/585-8ff3ec10b43fcb10.js +0 -1
  212. package/.next/static/chunks/650-7b49ecd97114e917.js +0 -1
  213. package/.next/static/chunks/802.7a3e85882c0aeb52.js +0 -1
  214. package/.next/static/chunks/pages/services/[name]-148079bb388f8c53.js +0 -1
  215. package/.next/static/chunks/webpack-e5e3b0fb197a3a00.js +0 -1
  216. package/.next/static/css/0a26a4437a9215b6.css +0 -3
  217. package/out/_next/data/053__bBTIZvPKam2MmLPC/domains/Orders/services/Orders Service.json +0 -1
  218. package/out/_next/data/053__bBTIZvPKam2MmLPC/domains/Shopping.json +0 -1
  219. package/out/_next/data/053__bBTIZvPKam2MmLPC/services/Payment Service.json +0 -1
  220. package/out/_next/data/053__bBTIZvPKam2MmLPC/services/Shipping Service.json +0 -1
  221. package/out/_next/static/053__bBTIZvPKam2MmLPC/_buildManifest.js +0 -1
  222. package/out/_next/static/chunks/109-7e910ba645edff2d.js +0 -1
  223. package/out/_next/static/chunks/178-c0d21132335f7d58.js +0 -1
  224. package/out/_next/static/chunks/5-6380a6f543e8372a.js +0 -1
  225. package/out/_next/static/chunks/585-8ff3ec10b43fcb10.js +0 -1
  226. package/out/_next/static/chunks/650-7b49ecd97114e917.js +0 -1
  227. package/out/_next/static/chunks/802.7a3e85882c0aeb52.js +0 -1
  228. package/out/_next/static/chunks/pages/services/[name]-148079bb388f8c53.js +0 -1
  229. package/out/_next/static/chunks/webpack-e5e3b0fb197a3a00.js +0 -1
  230. package/out/_next/static/css/0a26a4437a9215b6.css +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @eventcatalog/core
2
2
 
3
+ ## 0.2.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [`4269b19`](https://github.com/boyney123/eventcatalog/commit/4269b199809807bd08968ce4f9c6e025c5d14794) [#241](https://github.com/boyney123/eventcatalog/pull/241) Thanks [@donaldpipowitch](https://github.com/donaldpipowitch)! - chore: improve typings
8
+
9
+ ## 0.2.11
10
+
11
+ ### Patch Changes
12
+
13
+ - [`8c3c719`](https://github.com/boyney123/eventcatalog/commit/8c3c719b94e005921f6caec16106466da3f86992) [#244](https://github.com/boyney123/eventcatalog/pull/244) Thanks [@otbe](https://github.com/otbe)! - Fix broken links for services that have no domain on events detail page
14
+
15
+ ## 0.2.10
16
+
17
+ ### Patch Changes
18
+
19
+ - [`41f6b5a`](https://github.com/boyney123/eventcatalog/commit/41f6b5a03645bfac2006f80c013ed7315cbe3add) [#229](https://github.com/boyney123/eventcatalog/pull/229) Thanks [@rtoro](https://github.com/rtoro)! - feat(core): allow the use of swagger ui in service pages
20
+
3
21
  ## 0.2.9
4
22
 
5
23
  ### Patch Changes
@@ -1,5 +1,6 @@
1
1
  import { isNode, Elements, Position } from 'react-flow-renderer';
2
2
  import dagre from 'dagre';
3
+ import { DataSource } from './NodeGraph';
3
4
 
4
5
  const nodeDefaultWidth = 150;
5
6
  const nodeDefaultHeight = 36;
@@ -92,16 +93,16 @@ export default function createGraphLayout(elements: Elements, isHorizontal: bool
92
93
  }
93
94
 
94
95
  // Helper - ReactFlow canvas height calculator
95
- export const calcCanvasHeight = (data, type): number => {
96
+ export const calcCanvasHeight = ({ source, data }: DataSource): number => {
96
97
  const minHeight = 300;
97
98
  const nodeSpacing = nodeDefaultHeight + verticalOffset;
98
99
  let nodesHeight = 0;
99
100
 
100
- if (type === 'event') {
101
+ if (source === 'event') {
101
102
  nodesHeight = Math.max(data.producerNames.length, data.consumerNames.length) * nodeSpacing;
102
103
  }
103
104
 
104
- if (type === 'service') {
105
+ if (source === 'service') {
105
106
  nodesHeight = Math.max(data.publishes.length, data.subscribes.length) * nodeSpacing;
106
107
  }
107
108
 
@@ -11,9 +11,29 @@ interface CombinedEventsAndServices {
11
11
  name?: string;
12
12
  }
13
13
 
14
- interface NodeGraphBuilderProps {
15
- data: Event | Service | Domain | CombinedEventsAndServices;
16
- source: 'event' | 'service' | 'domain' | 'all';
14
+ interface CombinedEventsAndServicesSource {
15
+ data: CombinedEventsAndServices;
16
+ source: 'all';
17
+ }
18
+
19
+ interface DomainSource {
20
+ data: Domain;
21
+ source: 'domain';
22
+ }
23
+
24
+ interface ServiceSource {
25
+ data: Service;
26
+ source: 'service';
27
+ }
28
+
29
+ interface EventSource {
30
+ data: Event;
31
+ source: 'event';
32
+ }
33
+
34
+ export type DataSource = CombinedEventsAndServicesSource | DomainSource | ServiceSource | EventSource;
35
+
36
+ interface NodeGraphBuilderSharedProps {
17
37
  title?: string;
18
38
  subtitle?: string;
19
39
  rootNodeColor?: string;
@@ -28,10 +48,12 @@ interface NodeGraphBuilderProps {
28
48
  includeNodeIcons?: boolean;
29
49
  }
30
50
 
31
- interface NodeGraphProps extends NodeGraphBuilderProps {
51
+ type NodeGraphBuilderProps = NodeGraphBuilderSharedProps & DataSource;
52
+
53
+ type NodeGraphProps = NodeGraphBuilderProps & {
32
54
  maxHeight?: number | string;
33
55
  renderWithBorder?: boolean;
34
- }
56
+ };
35
57
 
36
58
  // NodeGraphBuilder component wrapping ReactFlow
37
59
  function NodeGraphBuilder({
@@ -52,9 +74,8 @@ function NodeGraphBuilder({
52
74
  }: NodeGraphBuilderProps) {
53
75
  const getElements = useCallback(() => {
54
76
  if (source === 'domain' || source === 'all') {
55
- const graphData = source === 'domain' ? (data as Domain) : (data as CombinedEventsAndServices);
56
- const totalEventElements = graphData.events.map((event) => getEventElements(event, rootNodeColor, isAnimated, true, true));
57
- const totalServiceElements = graphData.services.map((service) =>
77
+ const totalEventElements = data.events.map((event) => getEventElements(event, rootNodeColor, isAnimated, true, true));
78
+ const totalServiceElements = data.services.map((service) =>
58
79
  getServiceElements(service, rootNodeColor, isAnimated, true, true)
59
80
  );
60
81
  const eventsWithServices = totalEventElements.flat().concat(totalServiceElements.flat());
@@ -120,50 +141,18 @@ function NodeGraphBuilder({
120
141
  }
121
142
 
122
143
  // NodeGraph wrapping NodeGraphBuilder Component
123
- function NodeGraph({
124
- data,
125
- source,
126
- rootNodeColor,
127
- maxHeight,
128
- maxZoom,
129
- fitView,
130
- zoomOnScroll,
131
- isAnimated,
132
- isDraggable,
133
- isHorizontal,
134
- includeBackground,
135
- renderWithBorder = true,
136
- title,
137
- subtitle,
138
- includeEdgeLabels,
139
- includeNodeIcons,
140
- }: NodeGraphProps) {
144
+ function NodeGraph({ maxHeight, renderWithBorder = true, ...builderProps }: NodeGraphProps) {
141
145
  // Set dynamic height of node graph
142
- const dynamicHeight = maxHeight || calcCanvasHeight(data, source);
146
+ const dynamicHeight = maxHeight || calcCanvasHeight(builderProps);
143
147
 
144
148
  const borderClasses = `border-dashed border-2 border-slate-300`;
145
149
 
146
150
  return (
147
151
  <div className={`node-graph w-full h-screen ${renderWithBorder ? borderClasses : ''}`} style={{ height: dynamicHeight }}>
148
152
  <ReactFlowProvider>
149
- <NodeGraphBuilder
150
- source={source}
151
- data={data}
152
- rootNodeColor={rootNodeColor}
153
- maxZoom={maxZoom}
154
- fitView={fitView}
155
- includeBackground={includeBackground}
156
- zoomOnScroll={zoomOnScroll}
157
- isAnimated={isAnimated}
158
- isDraggable={isDraggable}
159
- isHorizontal={isHorizontal}
160
- includeEdgeLabels={includeEdgeLabels}
161
- includeNodeIcons={includeNodeIcons}
162
- title={title}
163
- subtitle={subtitle}
164
- />
153
+ <NodeGraphBuilder {...builderProps} />
165
154
  </ReactFlowProvider>
166
- <Link href={`/visualiser?type=${source}&name=${data.name}`}>
155
+ <Link href={`/visualiser?type=${builderProps.source}&name=${builderProps.data.name}`}>
167
156
  <a className="block text-right underline text-xs mt-4">Open in Visualiser &rarr;</a>
168
157
  </Link>
169
158
  </div>
@@ -1,3 +1,4 @@
1
+ import { Event, Service } from '@eventcatalog/types';
1
2
  import { Elements } from 'react-flow-renderer';
2
3
  import createGraphLayout, { calcCanvasHeight } from '../GraphLayout';
3
4
 
@@ -84,20 +85,30 @@ describe('GraphLayout', () => {
84
85
 
85
86
  describe('calcCanvasHeight', () => {
86
87
  it('takes all events and calculate the canvas height', () => {
87
- const data = {
88
- producerNames: [1, 2, 3, 4, 5, 6, 7, 8],
89
- consumerNames: [1, 2, 3, 4, 5],
88
+ const data: Event = {
89
+ producerNames: ['1', '2', '3', '4', '5', '6', '7', '8'],
90
+ consumerNames: ['1', '2', '3', '4', '5'],
91
+ name: 'mock',
92
+ version: '1.0.0',
90
93
  };
91
- const result = calcCanvasHeight(data, 'event');
94
+ const result = calcCanvasHeight({ data, source: 'event' });
92
95
  expect(result).toEqual(544);
93
96
  });
94
97
 
95
98
  it('takes all services and calculate the canvas height', () => {
96
- const data = {
97
- publishes: [1, 2, 3, 4, 5, 6, 7, 8, 9],
98
- subscribes: [1, 2, 3, 4, 5],
99
+ const event: Event = {
100
+ producerNames: [],
101
+ consumerNames: [],
102
+ name: 'mock',
103
+ version: '1.0.0',
99
104
  };
100
- const result = calcCanvasHeight(data, 'service');
105
+ const data: Service = {
106
+ publishes: [event, event, event, event, event, event, event, event, event],
107
+ subscribes: [event, event, event, event, event],
108
+ name: 'mock',
109
+ summary: 'mock',
110
+ };
111
+ const result = calcCanvasHeight({ data, source: 'service' });
101
112
  expect(result).toEqual(612);
102
113
  });
103
114
  });
@@ -0,0 +1,18 @@
1
+ import SwaggerUI from 'swagger-ui-react';
2
+ import 'swagger-ui-react/swagger-ui.css';
3
+
4
+ interface OpenApiSpecProps {
5
+ spec: string;
6
+ showTitle?: boolean;
7
+ }
8
+
9
+ export default function OpenApiSpec({ spec, showTitle = true }: OpenApiSpecProps) {
10
+ const className = !showTitle ? 'swagger-hide-title' : '';
11
+
12
+ return (
13
+ <div className={`my-4 border border-gray-300 border-dashed px-5 eventcatalog-swagger ${className}`}>
14
+ {!showTitle && <span className="text-2xl block mt-10 font-bold -mb-8">OpenAPI Specification</span>}
15
+ <SwaggerUI spec={spec} tryItOutEnabled={false} />
16
+ </div>
17
+ );
18
+ }
@@ -18,7 +18,7 @@ interface EventSideBarProps {
18
18
  const getServiceLink = (serviceName: string, event: Event) => {
19
19
  const allEventServices = [...event.consumers, ...event.producers];
20
20
  const matchedService = allEventServices.find((service) => service.name === serviceName);
21
- if (matchedService) return `/domains/${matchedService.domain}/services/${serviceName}`;
21
+ if (matchedService && matchedService.domain) return `/domains/${matchedService.domain}/services/${serviceName}`;
22
22
  return `/services/${serviceName}`;
23
23
  };
24
24
 
@@ -0,0 +1,7 @@
1
+ ---
2
+ name: Payment Service
3
+ summary: |
4
+ Event based application that integrates with Stripe.
5
+ ---
6
+
7
+ # Testing
@@ -0,0 +1,94 @@
1
+ openapi: 3.0.0
2
+ info:
3
+ description: A Payment Service API
4
+ version: 0.0.1
5
+ title: Payment service API
6
+ servers:
7
+ - url: http://payment.example.com/v1
8
+ description: Optional server description, e.g. Main (production) server
9
+ - url: http://payment.example.com
10
+ description: Optional server description, e.g. Internal staging server for testing
11
+ paths:
12
+ /getSinglePaymentURL:
13
+ get:
14
+ tags:
15
+ - PaymentServices
16
+ summary: Generate a Payment endpoint URL
17
+ operationId: singlepaymenturlUsingGET
18
+ consumes:
19
+ - application/json
20
+ produces:
21
+ - application/xml
22
+ parameters:
23
+ - name: transType
24
+ in: query
25
+ description: transType
26
+ required: true
27
+ type: string
28
+ - name: invoiceNumber
29
+ in: query
30
+ description: invoiceNumber
31
+ required: true
32
+ type: string
33
+ - name: approvedPage
34
+ in: query
35
+ description: approvedPage
36
+ required: true
37
+ type: string
38
+ - name: declinedPage
39
+ in: query
40
+ description: declinedPage
41
+ required: true
42
+ type: string
43
+ - in: query
44
+ name: errorPage
45
+ description: errorPage
46
+ required: true
47
+ type: string
48
+ - in: query
49
+ name: totalItemsAmount
50
+ description: totalItemsAmount
51
+ required: true
52
+ type: string
53
+ - name: ref1
54
+ in: query
55
+ description: ref1
56
+ required: false
57
+ type: string
58
+ - name: ref2
59
+ in: query
60
+ description: ref2
61
+ required: false
62
+ type: string
63
+ - name: ref3
64
+ in: query
65
+ description: ref3
66
+ required: false
67
+ type: string
68
+ - name: minutesToExpire
69
+ in: query
70
+ description: minutesToExpire
71
+ required: true
72
+ type: string
73
+ responses:
74
+ '200':
75
+ description: Successful operation
76
+ schema:
77
+ $ref: '#/definitions/SinglePaymentResponse'
78
+ '401':
79
+ description: Unauthorized
80
+ '403':
81
+ description: Forbidden
82
+ '404':
83
+ description: Not Found
84
+ definitions:
85
+ SinglePaymentResponse:
86
+ type: object
87
+ properties:
88
+ respCode:
89
+ type: integer
90
+ format: int32
91
+ respMsg:
92
+ type: string
93
+ respValue:
94
+ type: string
@@ -1,6 +1,6 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
- import { getSchemaFromDir, getLastModifiedDateOfFile } from '../file-reader';
3
+ import { getSchemaFromDir, getLastModifiedDateOfFile, getOpenAPISpecFromDir } from '../file-reader';
4
4
 
5
5
  let PROJECT_DIR: any;
6
6
 
@@ -34,6 +34,24 @@ describe('file-reader lib', () => {
34
34
  });
35
35
  });
36
36
 
37
+ describe('getOpenAPISpecFromDir', () => {
38
+ it('returns the OPEN API file found in the given directory path', () => {
39
+ const rawFile = fs.readFileSync(path.join(process.env.PROJECT_DIR, 'services', 'Payment Service', 'openapi.yaml'), {
40
+ encoding: 'utf-8',
41
+ });
42
+
43
+ const result = getOpenAPISpecFromDir(path.join(process.env.PROJECT_DIR, 'services', 'Payment Service'));
44
+
45
+ expect(result).toEqual(rawFile);
46
+ });
47
+
48
+ it('returns null when no schema file can be found in the given directory path', () => {
49
+ const result = getSchemaFromDir(path.join(process.env.PROJECT_DIR, 'services', 'Email Service'));
50
+
51
+ expect(result).toEqual(null);
52
+ });
53
+ });
54
+
37
55
  describe('getLastModifiedDateOfFile', () => {
38
56
  it('returns the date the given file was last modified', () => {
39
57
  const result = getLastModifiedDateOfFile(
@@ -19,29 +19,29 @@ describe('services', () => {
19
19
 
20
20
  expect(services).toEqual([
21
21
  {
22
+ name: 'Basket Service',
23
+ summary: 'CRUD based API to handle Basket interactions for users of the shopping website.\n',
24
+ domain: null,
25
+ owners: ['mSmith'],
26
+ repository: {
27
+ language: 'JavaScript',
28
+ url: 'https://github.com/boyney123/pretend-basket-service',
29
+ },
30
+ tags: [],
22
31
  externalLinks: [
23
32
  {
24
33
  label: 'AsyncAPI Specification',
25
34
  url: 'https://studio.asyncapi.com/#schema-lightMeasuredPayload',
26
35
  },
27
36
  ],
28
- name: 'Basket Service',
29
- owners: ['mSmith'],
30
37
  publishes: [],
31
- repository: {
32
- language: 'JavaScript',
33
- url: 'https://github.com/boyney123/pretend-basket-service',
34
- },
35
38
  subscribes: [],
36
- domain: null,
37
- summary: 'CRUD based API to handle Basket interactions for users of the shopping website.\n',
38
- tags: [],
39
39
  },
40
40
  {
41
41
  name: 'Email Platform',
42
42
  summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
43
- owners: ['dboyne'],
44
43
  domain: null,
44
+ owners: ['dboyne'],
45
45
  repository: {
46
46
  url: 'https://github.com/boyney123/EmailPlatform',
47
47
  language: 'JavaScript',
@@ -55,21 +55,32 @@ describe('services', () => {
55
55
  url: 'https://www.apache.org/licenses/LICENSE-2.0',
56
56
  },
57
57
  ],
58
+ externalLinks: [],
58
59
  publishes: [
59
60
  {
60
61
  name: 'EmailSent',
61
62
  version: '0.0.1',
62
63
  summary: 'Tells us when an email has been sent\n',
64
+ domain: null,
63
65
  producerNames: ['Email Platform'],
64
66
  consumerNames: [],
67
+ owners: ['dboyne', 'mSmith'],
65
68
  externalLinks: [],
66
69
  historicVersions: [],
67
- domain: null,
68
- owners: ['dboyne', 'mSmith'],
69
70
  },
70
71
  ],
71
72
  subscribes: [],
73
+ },
74
+ {
75
+ name: 'Payment Service',
76
+ summary: 'Event based application that integrates with Stripe.\n',
77
+ domain: null,
78
+ owners: [],
79
+ repository: {},
80
+ tags: [],
72
81
  externalLinks: [],
82
+ publishes: [],
83
+ subscribes: [],
73
84
  },
74
85
  {
75
86
  name: 'User Service',
@@ -151,6 +162,7 @@ describe('services', () => {
151
162
  summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
152
163
  owners: ['dboyne'],
153
164
  domain: null,
165
+ openAPISpec: null,
154
166
  repository: {
155
167
  url: 'https://github.com/boyney123/EmailPlatform',
156
168
  language: 'JavaScript',
@@ -194,6 +206,7 @@ describe('services', () => {
194
206
  summary: 'CRUD based API to handle User information\n',
195
207
  domain: 'User',
196
208
  owners: ['mSmith'],
209
+ openAPISpec: null,
197
210
  repository: {
198
211
  language: 'JavaScript',
199
212
  url: 'https://github.com/boyney123/pretend-basket-service',
@@ -43,6 +43,19 @@ export const getSchemaFromDir = (pathToSchemaDir: string): Schema => {
43
43
  }
44
44
  };
45
45
 
46
+ export const getOpenAPISpecFromDir = (pathToOpenAPISpecDir: string): string => {
47
+ try {
48
+ const files = fs.readdirSync(pathToOpenAPISpecDir);
49
+
50
+ // See if any oas are in there, ignoring extension
51
+ const openAPIFileName = files.find((fileName) => fileName.includes('openapi'));
52
+ if (!openAPIFileName) throw new Error('No schema found');
53
+ return fs.readFileSync(path.join(pathToOpenAPISpecDir, openAPIFileName), 'utf-8');
54
+ } catch (error) {
55
+ return null;
56
+ }
57
+ };
58
+
46
59
  export const getLastModifiedDateOfFile = (filePath) => {
47
60
  const stats = fs.statSync(filePath);
48
61
  const lastModifiedDate = new Date(stats.mtime);
package/lib/services.ts CHANGED
@@ -2,7 +2,7 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { serialize } from 'next-mdx-remote/serialize';
4
4
  import { Service, Event } from '@eventcatalog/types';
5
- import { readMarkdownFile, getLastModifiedDateOfFile } from '@/lib/file-reader';
5
+ import { readMarkdownFile, getLastModifiedDateOfFile, getOpenAPISpecFromDir } from '@/lib/file-reader';
6
6
  import { MarkdownFile } from '../types/index';
7
7
 
8
8
  import { getAllEvents, getAllEventsThatHaveRelationshipWithService } from '@/lib/events';
@@ -75,6 +75,7 @@ export const getServiceByName = async ({
75
75
  service: {
76
76
  ...service,
77
77
  domain,
78
+ openAPISpec: getOpenAPISpecFromDir(serviceDirectory),
78
79
  ...getAllEventsThatHaveRelationshipWithService(service, events),
79
80
  },
80
81
  markdown: {
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><meta name="description" content="Discover, Explore and Document your Event Driven Architectures"/><link rel="icon" href="/favicon.ico"/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog"/><meta property="og:description" content="Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><title>404: This page could not be found</title><meta name="next-head-count" content="15"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><link rel="preload" href="/_next/static/css/0a26a4437a9215b6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/0a26a4437a9215b6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-e5e3b0fb197a3a00.js" defer=""></script><script src="/_next/static/chunks/framework-d23f68ad701fe0b2.js" defer=""></script><script src="/_next/static/chunks/main-b9941e28536fdc23.js" defer=""></script><script src="/_next/static/chunks/pages/_app-2e37f6bdeff8f48f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/053__bBTIZvPKam2MmLPC/_buildManifest.js" defer=""></script><script src="/_next/static/053__bBTIZvPKam2MmLPC/_ssgManifest.js" defer=""></script><script src="/_next/static/053__bBTIZvPKam2MmLPC/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/domains/">Domains</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/visualiser/">Visualiser</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-400">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-400">Services</a></div><div class="px-5 py-2"><a href="/visualiser" class="text-base text-gray-500 hover:text-gray-400">Visualiser</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-400">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-400">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"053__bBTIZvPKam2MmLPC","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><meta name="description" content="Discover, Explore and Document your Event Driven Architectures"/><link rel="icon" href="/favicon.ico"/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog"/><meta property="og:description" content="Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><title>404: This page could not be found</title><meta name="next-head-count" content="15"/><script src="//unpkg.com/three"></script><script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><link rel="preload" href="/_next/static/css/996136b57250cdf7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/996136b57250cdf7.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/_next/static/chunks/webpack-5243ea3e842fcabb.js" defer=""></script><script src="/_next/static/chunks/framework-d23f68ad701fe0b2.js" defer=""></script><script src="/_next/static/chunks/main-b9941e28536fdc23.js" defer=""></script><script src="/_next/static/chunks/pages/_app-2e37f6bdeff8f48f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/P5kR3NJnMI8_LCcCh0vDK/_buildManifest.js" defer=""></script><script src="/_next/static/P5kR3NJnMI8_LCcCh0vDK/_ssgManifest.js" defer=""></script><script src="/_next/static/P5kR3NJnMI8_LCcCh0vDK/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div class="bg-gray-800"><div class="max-w-7xl mx-auto "><div class="relative flex items-center justify-between h-16"><div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"><div class="flex-shrink-0 flex items-center text-white font-bold"><a class="flex items-center" href="/"><img alt="logo" class="text-white w-8 inline-block mr-3" src="/logo.svg"/><span class="text-xl">EventCatalog</span></a></div></div><div class="hidden sm:block sm:ml-6"><div class="flex space-x-4"><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/events/">Events</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/services/">Services</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/domains/">Domains</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/visualiser/">Visualiser</a><a class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium" href="/overview/">3D Node Graph</a></div></div></div></div></div><div style="color:#000;background:#fff;font-family:-apple-system, BlinkMacSystemFont, Roboto, &quot;Segoe UI&quot;, &quot;Fira Sans&quot;, Avenir, &quot;Helvetica Neue&quot;, &quot;Lucida Grande&quot;, sans-serif;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body { margin: 0 }</style><h1 style="display:inline-block;border-right:1px solid rgba(0, 0, 0,.3);margin:0;margin-right:20px;padding:10px 23px 10px 0;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:inherit;margin:0;padding:0">This page could not be found<!-- -->.</h2></div></div></div><footer class="bg-gray-800"><div class="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8"><nav class="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer"><div class="px-5 py-2"><a href="/events" class="text-base text-gray-500 hover:text-gray-400">Events</a></div><div class="px-5 py-2"><a href="/services" class="text-base text-gray-500 hover:text-gray-400">Services</a></div><div class="px-5 py-2"><a href="/visualiser" class="text-base text-gray-500 hover:text-gray-400">Visualiser</a></div><div class="px-5 py-2"><a href="/overview" class="text-base text-gray-500 hover:text-gray-400">3D Node Graph</a></div><div class="px-5 py-2"><a href="https://github.com/boyney123/eventcatalog-demo/edit/master" class="text-base text-gray-500 hover:text-gray-400">GitHub</a></div></nav><p class="mt-8 text-center text-base text-gray-400">Copyright © <!-- -->2022<!-- --> <!-- -->Your Company<!-- -->. Built with<!-- --> <a class="underline" href="https://eventcatalog.dev" target="_blank" rel="noreferrer">EventCatalog.</a></p></div></footer></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"P5kR3NJnMI8_LCcCh0vDK","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"pageProps":{"event":{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"producers":[{"name":"Orders Service","summary":"Service that handles customer orders\n","domain":"Orders","owners":["dboyne"],"repository":{},"tags":[],"externalLinks":[],"publishes":[{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"PaymentProcessed","version":"0.0.1","summary":"Holds information about the payment that has been processed.\n","domain":null,"producerNames":["Payment Service"],"consumerNames":["Orders Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"consumers":[],"historicVersions":[],"schema":{"snippet":"{\n \"$id\": \"https://example.com/OrderRequested.json\",\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"OrderRequested\",\n \"type\": \"object\",\n \"properties\": {\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"correlationId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"domain\": {\n \"type\": \"string\",\n \"description\": \"The domain of the event\"\n },\n \"service\": {\n \"type\": \"string\",\n \"description\": \"The name of the service that triggered the event\"\n }\n },\n \"required\": [\"correlationId\", \"domain\", \"service\"]\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"orderId\": {\n \"type\": \"string\",\n \"description\": \"The ID the users order\"\n }\n }\n }\n }\n}","language":"json","extension":"json"},"examples":[]},"eventPath":"/domains/Orders/events/OrderComplete","breadCrumbs":[{"name":"Domain","href":"/domains","current":false},{"name":"Orders","href":"/domains/Orders","current":false},{"name":"Events","href":"/events?domain=Orders","current":false},{"name":"OrderComplete","href":"/domains/Orders/events/OrderComplete","current":true}],"markdown":{"content":"\n<Admonition>When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.</Admonition>\n\n### Details\n\nThis event is the final event of the ordering process. It gets raised when the shipment has been delivered.\n\n<NodeGraph title=\"Consumer/Producer Diagram\" />\n\n<Schema />","source":{"compiledSource":"var p=Object.defineProperty,c=Object.defineProperties;var u=Object.getOwnPropertyDescriptors;var r=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable;var s=(e,o,t)=>o in e?p(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,a=(e,o)=>{for(var t in o||(o={}))i.call(o,t)&&s(e,t,o[t]);if(r)for(var t of r(o))d.call(o,t)&&s(e,t,o[t]);return e},h=(e,o)=>c(e,u(o));var m=(e,o)=>{var t={};for(var n in e)i.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&r)for(var n of r(e))o.indexOf(n)<0&&d.call(e,n)&&(t[n]=e[n]);return t};const makeShortcode=e=>function(t){return console.warn(\"Component \"+e+\" was not imported, exported, or provided by MDXProvider as global scope\"),mdx(\"div\",a({},t))},Admonition=makeShortcode(\"Admonition\"),NodeGraph=makeShortcode(\"NodeGraph\"),Schema=makeShortcode(\"Schema\"),layoutProps={},MDXLayout=\"wrapper\";function MDXContent(t){var n=t,{components:e}=n,o=m(n,[\"components\"]);return mdx(MDXLayout,h(a(a({},layoutProps),o),{components:e,mdxType:\"MDXLayout\"}),mdx(Admonition,{mdxType:\"Admonition\"},\"When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.\"),mdx(\"h3\",null,\"Details\"),mdx(\"p\",null,\"This event is the final event of the ordering process. It gets raised when the shipment has been delivered.\"),mdx(NodeGraph,{title:\"Consumer/Producer Diagram\",mdxType:\"NodeGraph\"}),mdx(Schema,{mdxType:\"Schema\"}))}MDXContent.isMDXComponent=!0;\n","scope":{}},"lastModifiedDate":"2022/3/7"},"loadedVersion":"latest"},"__N_SSG":true}
1
+ {"pageProps":{"event":{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"producers":[{"name":"Orders Service","summary":"Service that handles customer orders\n","domain":"Orders","owners":["dboyne"],"repository":{},"tags":[],"externalLinks":[],"publishes":[{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"PaymentProcessed","version":"0.0.1","summary":"Holds information about the payment that has been processed.\n","domain":null,"producerNames":["Payment Service"],"consumerNames":["Orders Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"consumers":[],"historicVersions":[],"schema":{"snippet":"{\n \"$id\": \"https://example.com/OrderRequested.json\",\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"OrderRequested\",\n \"type\": \"object\",\n \"properties\": {\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"correlationId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"domain\": {\n \"type\": \"string\",\n \"description\": \"The domain of the event\"\n },\n \"service\": {\n \"type\": \"string\",\n \"description\": \"The name of the service that triggered the event\"\n }\n },\n \"required\": [\"correlationId\", \"domain\", \"service\"]\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"orderId\": {\n \"type\": \"string\",\n \"description\": \"The ID the users order\"\n }\n }\n }\n }\n}","language":"json","extension":"json"},"examples":[]},"eventPath":"/domains/Orders/events/OrderComplete","breadCrumbs":[{"name":"Domain","href":"/domains","current":false},{"name":"Orders","href":"/domains/Orders","current":false},{"name":"Events","href":"/events?domain=Orders","current":false},{"name":"OrderComplete","href":"/domains/Orders/events/OrderComplete","current":true}],"markdown":{"content":"\n<Admonition>When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.</Admonition>\n\n### Details\n\nThis event is the final event of the ordering process. It gets raised when the shipment has been delivered.\n\n<NodeGraph title=\"Consumer/Producer Diagram\" />\n\n<Schema />","source":{"compiledSource":"var p=Object.defineProperty,c=Object.defineProperties;var u=Object.getOwnPropertyDescriptors;var r=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,d=Object.prototype.propertyIsEnumerable;var s=(e,o,t)=>o in e?p(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,a=(e,o)=>{for(var t in o||(o={}))i.call(o,t)&&s(e,t,o[t]);if(r)for(var t of r(o))d.call(o,t)&&s(e,t,o[t]);return e},h=(e,o)=>c(e,u(o));var m=(e,o)=>{var t={};for(var n in e)i.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&r)for(var n of r(e))o.indexOf(n)<0&&d.call(e,n)&&(t[n]=e[n]);return t};const makeShortcode=e=>function(t){return console.warn(\"Component \"+e+\" was not imported, exported, or provided by MDXProvider as global scope\"),mdx(\"div\",a({},t))},Admonition=makeShortcode(\"Admonition\"),NodeGraph=makeShortcode(\"NodeGraph\"),Schema=makeShortcode(\"Schema\"),layoutProps={},MDXLayout=\"wrapper\";function MDXContent(t){var n=t,{components:e}=n,o=m(n,[\"components\"]);return mdx(MDXLayout,h(a(a({},layoutProps),o),{components:e,mdxType:\"MDXLayout\"}),mdx(Admonition,{mdxType:\"Admonition\"},\"When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.\"),mdx(\"h3\",null,\"Details\"),mdx(\"p\",null,\"This event is the final event of the ordering process. It gets raised when the shipment has been delivered.\"),mdx(NodeGraph,{title:\"Consumer/Producer Diagram\",mdxType:\"NodeGraph\"}),mdx(Schema,{mdxType:\"Schema\"}))}MDXContent.isMDXComponent=!0;\n","scope":{}},"lastModifiedDate":"2022/3/18"},"loadedVersion":"latest"},"__N_SSG":true}
@@ -1 +1 @@
1
- {"pageProps":{"event":{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"producers":[{"name":"Orders Service","summary":"Service that handles customer orders\n","domain":"Orders","owners":["dboyne"],"repository":{},"tags":[],"externalLinks":[],"publishes":[{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"PaymentProcessed","version":"0.0.1","summary":"Holds information about the payment that has been processed.\n","domain":null,"producerNames":["Payment Service"],"consumerNames":["Orders Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"consumers":[{"name":"Shipping Service","summary":"Event based application that handles processing of shipments, preparing them and dispatching them.\n","domain":null,"owners":["dboyne"],"repository":{"language":"JavaScript","url":"https://github.com/boyney123/pretend-shipping-service"},"tags":[],"externalLinks":[],"publishes":[{"name":"ShipmentDelivered","version":"0.0.1","summary":"Event represents when a shipment has been delivered and received.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Order Service","Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentDispatched","version":"0.0.1","summary":"Event represents when a shipment has been dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentPrepared","version":"0.0.1","summary":"Event represents when a shipment has finished being prepared and is ready to be dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentDispatched","version":"0.0.1","summary":"Event represents when a shipment has been dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentPrepared","version":"0.0.1","summary":"Event represents when a shipment has finished being prepared and is ready to be dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"historicVersions":[],"schema":{"snippet":"{\n \"$id\": \"https://example.com/OrderRequested.json\",\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"OrderRequested\",\n \"type\": \"object\",\n \"properties\": {\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"correlationId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"domain\": {\n \"type\": \"string\",\n \"description\": \"The domain of the event\"\n },\n \"service\": {\n \"type\": \"string\",\n \"description\": \"The name of the service that triggered the event\"\n }\n },\n \"required\": [\"correlationId\", \"domain\", \"service\"]\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"orderId\": {\n \"type\": \"string\",\n \"description\": \"The ID the users order\"\n }\n }\n }\n }\n}","language":"json","extension":"json"},"examples":[]},"eventPath":"/domains/Orders/events/OrderConfirmed","breadCrumbs":[{"name":"Domain","href":"/domains","current":false},{"name":"Orders","href":"/domains/Orders","current":false},{"name":"Events","href":"/events?domain=Orders","current":false},{"name":"OrderConfirmed","href":"/domains/Orders/events/OrderConfirmed","current":true}],"markdown":{"content":"\n<Admonition>When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.</Admonition>\n\n### Details\n\nThis event is triggered when the customers order has been verified and the stock has been checked. Once this event is triggered we are safe to say it is ready for shipment.\n\n<NodeGraph title=\"Consumer/Producer Diagram\" />\n\n<Schema />","source":{"compiledSource":"var m=Object.defineProperty,p=Object.defineProperties;var u=Object.getOwnPropertyDescriptors;var r=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;var d=(e,o,t)=>o in e?m(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,a=(e,o)=>{for(var t in o||(o={}))i.call(o,t)&&d(e,t,o[t]);if(r)for(var t of r(o))s.call(o,t)&&d(e,t,o[t]);return e},h=(e,o)=>p(e,u(o));var c=(e,o)=>{var t={};for(var n in e)i.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&r)for(var n of r(e))o.indexOf(n)<0&&s.call(e,n)&&(t[n]=e[n]);return t};const makeShortcode=e=>function(t){return console.warn(\"Component \"+e+\" was not imported, exported, or provided by MDXProvider as global scope\"),mdx(\"div\",a({},t))},Admonition=makeShortcode(\"Admonition\"),NodeGraph=makeShortcode(\"NodeGraph\"),Schema=makeShortcode(\"Schema\"),layoutProps={},MDXLayout=\"wrapper\";function MDXContent(t){var n=t,{components:e}=n,o=c(n,[\"components\"]);return mdx(MDXLayout,h(a(a({},layoutProps),o),{components:e,mdxType:\"MDXLayout\"}),mdx(Admonition,{mdxType:\"Admonition\"},\"When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.\"),mdx(\"h3\",null,\"Details\"),mdx(\"p\",null,\"This event is triggered when the customers order has been verified and the stock has been checked. Once this event is triggered we are safe to say it is ready for shipment.\"),mdx(NodeGraph,{title:\"Consumer/Producer Diagram\",mdxType:\"NodeGraph\"}),mdx(Schema,{mdxType:\"Schema\"}))}MDXContent.isMDXComponent=!0;\n","scope":{}},"lastModifiedDate":"2022/3/7"},"loadedVersion":"latest"},"__N_SSG":true}
1
+ {"pageProps":{"event":{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"producers":[{"name":"Orders Service","summary":"Service that handles customer orders\n","domain":"Orders","owners":["dboyne"],"repository":{},"tags":[],"externalLinks":[],"publishes":[{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"PaymentProcessed","version":"0.0.1","summary":"Holds information about the payment that has been processed.\n","domain":null,"producerNames":["Payment Service"],"consumerNames":["Orders Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"consumers":[{"name":"Shipping Service","summary":"Event based application that handles processing of shipments, preparing them and dispatching them.\n","domain":null,"owners":["dboyne"],"repository":{"language":"JavaScript","url":"https://github.com/boyney123/pretend-shipping-service"},"tags":[],"externalLinks":[],"publishes":[{"name":"ShipmentDelivered","version":"0.0.1","summary":"Event represents when a shipment has been delivered and received.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Order Service","Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentDispatched","version":"0.0.1","summary":"Event represents when a shipment has been dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentPrepared","version":"0.0.1","summary":"Event represents when a shipment has finished being prepared and is ready to be dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[{"name":"OrderConfirmed","version":"0.0.1","summary":"Event represents when an order has been confirmed and ready to be processed (shipped for example)\n","domain":"Orders","producerNames":["Orders Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentDispatched","version":"0.0.1","summary":"Event represents when a shipment has been dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"ShipmentPrepared","version":"0.0.1","summary":"Event represents when a shipment has finished being prepared and is ready to be dispatched.\n","domain":null,"producerNames":["Shipping Service"],"consumerNames":["Shipping Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}]}],"historicVersions":[],"schema":{"snippet":"{\n \"$id\": \"https://example.com/OrderRequested.json\",\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"OrderRequested\",\n \"type\": \"object\",\n \"properties\": {\n \"metadata\": {\n \"type\": \"object\",\n \"properties\": {\n \"correlationId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"domain\": {\n \"type\": \"string\",\n \"description\": \"The domain of the event\"\n },\n \"service\": {\n \"type\": \"string\",\n \"description\": \"The name of the service that triggered the event\"\n }\n },\n \"required\": [\"correlationId\", \"domain\", \"service\"]\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"orderId\": {\n \"type\": \"string\",\n \"description\": \"The ID the users order\"\n }\n }\n }\n }\n}","language":"json","extension":"json"},"examples":[]},"eventPath":"/domains/Orders/events/OrderConfirmed","breadCrumbs":[{"name":"Domain","href":"/domains","current":false},{"name":"Orders","href":"/domains/Orders","current":false},{"name":"Events","href":"/events?domain=Orders","current":false},{"name":"OrderConfirmed","href":"/domains/Orders/events/OrderConfirmed","current":true}],"markdown":{"content":"\n<Admonition>When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.</Admonition>\n\n### Details\n\nThis event is triggered when the customers order has been verified and the stock has been checked. Once this event is triggered we are safe to say it is ready for shipment.\n\n<NodeGraph title=\"Consumer/Producer Diagram\" />\n\n<Schema />","source":{"compiledSource":"var m=Object.defineProperty,p=Object.defineProperties;var u=Object.getOwnPropertyDescriptors;var r=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;var d=(e,o,t)=>o in e?m(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,a=(e,o)=>{for(var t in o||(o={}))i.call(o,t)&&d(e,t,o[t]);if(r)for(var t of r(o))s.call(o,t)&&d(e,t,o[t]);return e},h=(e,o)=>p(e,u(o));var c=(e,o)=>{var t={};for(var n in e)i.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(e!=null&&r)for(var n of r(e))o.indexOf(n)<0&&s.call(e,n)&&(t[n]=e[n]);return t};const makeShortcode=e=>function(t){return console.warn(\"Component \"+e+\" was not imported, exported, or provided by MDXProvider as global scope\"),mdx(\"div\",a({},t))},Admonition=makeShortcode(\"Admonition\"),NodeGraph=makeShortcode(\"NodeGraph\"),Schema=makeShortcode(\"Schema\"),layoutProps={},MDXLayout=\"wrapper\";function MDXContent(t){var n=t,{components:e}=n,o=c(n,[\"components\"]);return mdx(MDXLayout,h(a(a({},layoutProps),o),{components:e,mdxType:\"MDXLayout\"}),mdx(Admonition,{mdxType:\"Admonition\"},\"When firing this event make sure you set the `correlation-id` in the headers. Our schemas have standard metadata make sure you read and follow it.\"),mdx(\"h3\",null,\"Details\"),mdx(\"p\",null,\"This event is triggered when the customers order has been verified and the stock has been checked. Once this event is triggered we are safe to say it is ready for shipment.\"),mdx(NodeGraph,{title:\"Consumer/Producer Diagram\",mdxType:\"NodeGraph\"}),mdx(Schema,{mdxType:\"Schema\"}))}MDXContent.isMDXComponent=!0;\n","scope":{}},"lastModifiedDate":"2022/3/18"},"loadedVersion":"latest"},"__N_SSG":true}