@eventcatalog/core 0.1.17 → 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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +126 -43
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1bay4w0 +1 -1
- package/.next/cache/next-server.js.nft.json +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/{730.js → 189.js} +184 -2
- package/.next/server/chunks/267.js +255 -0
- package/.next/server/chunks/{681.js → 29.js} +275 -40
- package/.next/server/chunks/484.js +12 -3
- package/.next/server/chunks/50.js +392 -0
- package/.next/server/chunks/526.js +15 -4
- package/.next/server/chunks/565.js +3 -3
- package/.next/server/chunks/778.js +76 -0
- package/.next/server/chunks/797.js +92 -0
- package/.next/server/chunks/8.js +4 -0
- package/.next/server/chunks/854.js +103 -0
- package/.next/server/chunks/938.js +3 -2
- package/.next/server/chunks/944.js +102 -153
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +49 -28
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +1 -0
- package/.next/server/pages/{events → domains/Shopping/events}/AddedItemToCart/logs.json +0 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +58 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +65 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +65 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +1 -0
- package/.next/server/pages/domains/Shopping/services/Basket Service.html +2 -0
- package/.next/server/pages/domains/Shopping/services/Basket Service.json +1 -0
- package/.next/server/pages/domains/Shopping/services/Data Lake.html +2 -0
- package/.next/server/pages/domains/Shopping/services/Data Lake.json +1 -0
- package/.next/server/pages/domains/Shopping.html +2 -0
- package/.next/server/pages/domains/Shopping.json +1 -0
- package/.next/server/pages/domains/[domain]/events/[name]/logs.js +243 -0
- package/.next/server/pages/domains/[domain]/events/[name]/logs.js.nft.json +1 -0
- package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +352 -0
- package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js.nft.json +1 -0
- package/.next/server/pages/domains/[domain]/events/[name].js +270 -0
- package/.next/server/pages/domains/[domain]/events/[name].js.nft.json +1 -0
- package/.next/server/pages/domains/[domain]/services/[name].js +318 -0
- package/.next/server/pages/domains/[domain]/services/[name].js.nft.json +1 -0
- package/.next/server/pages/domains/[domain].js +504 -0
- package/.next/server/pages/domains/[domain].js.nft.json +1 -0
- package/.next/server/pages/domains.html +2 -0
- package/.next/server/pages/domains.js +318 -0
- package/.next/server/pages/domains.js.nft.json +1 -0
- package/.next/server/pages/domains.json +1 -0
- package/.next/server/pages/events/OrderComplete/logs.html +1 -1
- package/.next/server/pages/events/OrderComplete.html +2 -2
- package/.next/server/pages/events/OrderComplete.json +1 -1
- package/.next/server/pages/events/OrderConfirmed/logs.html +1 -1
- package/.next/server/pages/events/OrderConfirmed.html +2 -2
- package/.next/server/pages/events/OrderConfirmed.json +1 -1
- package/.next/server/pages/events/OrderRequested/logs.html +1 -1
- package/.next/server/pages/events/OrderRequested.html +2 -2
- package/.next/server/pages/events/OrderRequested.json +1 -1
- package/.next/server/pages/events/PaymentProcessed/logs.html +1 -1
- package/.next/server/pages/events/PaymentProcessed.html +2 -2
- package/.next/server/pages/events/PaymentProcessed.json +1 -1
- package/.next/server/pages/events/RemovedItemFromCart/logs.html +1 -1
- package/.next/server/pages/events/RemovedItemFromCart.html +2 -2
- package/.next/server/pages/events/RemovedItemFromCart.json +1 -1
- package/.next/server/pages/events/ShipmentDelivered/logs.html +1 -1
- package/.next/server/pages/events/ShipmentDelivered.html +2 -2
- package/.next/server/pages/events/ShipmentDelivered.json +1 -1
- package/.next/server/pages/events/ShipmentDispatched/logs.html +1 -1
- package/.next/server/pages/events/ShipmentDispatched.html +2 -2
- package/.next/server/pages/events/ShipmentDispatched.json +1 -1
- package/.next/server/pages/events/ShipmentPrepared/logs.html +1 -1
- package/.next/server/pages/events/ShipmentPrepared.html +2 -2
- package/.next/server/pages/events/ShipmentPrepared.json +1 -1
- package/.next/server/pages/events/[name]/logs.js +1 -243
- package/.next/server/pages/events/[name]/logs.js.nft.json +1 -1
- package/.next/server/pages/events/[name]/v/[version].js +10 -5
- package/.next/server/pages/events/[name]/v/[version].js.nft.json +1 -1
- package/.next/server/pages/events/[name].js +2 -2
- package/.next/server/pages/events/[name].js.nft.json +1 -1
- package/.next/server/pages/events.html +3 -3
- package/.next/server/pages/events.js +39 -14
- package/.next/server/pages/events.js.nft.json +1 -1
- package/.next/server/pages/events.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/overview.js +4 -4
- package/.next/server/pages/overview.js.nft.json +1 -1
- package/.next/server/pages/overview.json +1 -1
- package/.next/server/pages/services/Basket Service.html +1 -2
- package/.next/server/pages/services/Basket Service.json +1 -1
- package/.next/server/pages/services/Data Lake.html +1 -2
- package/.next/server/pages/services/Data Lake.json +1 -1
- package/.next/server/pages/services/Payment Service.html +2 -2
- package/.next/server/pages/services/Payment Service.json +1 -1
- package/.next/server/pages/services/Shipping Service.html +2 -2
- package/.next/server/pages/services/Shipping Service.json +1 -1
- package/.next/server/pages/services/[name].js +1 -505
- package/.next/server/pages/services/[name].js.nft.json +1 -1
- package/.next/server/pages/services.html +3 -3
- package/.next/server/pages/services.js +1 -1
- package/.next/server/pages/services.js.nft.json +1 -1
- package/.next/server/pages/services.json +1 -1
- package/.next/server/pages/users/[id].js +35 -13
- package/.next/server/pages/users/[id].js.nft.json +1 -1
- package/.next/server/pages/users/dboyne.html +6 -5
- package/.next/server/pages/users/dboyne.json +1 -1
- package/.next/server/pages/users/mSmith.html +3 -3
- package/.next/server/pages/users/mSmith.json +1 -1
- package/.next/server/pages/visualiser.html +4 -3
- package/.next/server/pages/visualiser.js +149 -149
- package/.next/server/pages/visualiser.js.nft.json +1 -1
- package/.next/server/pages/visualiser.json +1 -1
- package/.next/server/pages-manifest.json +6 -0
- package/.next/static/chunks/109-716dea1303010b4f.js +1 -0
- package/.next/static/chunks/169-b33dfdaf2847d062.js +1 -0
- package/.next/static/chunks/178-e9a666e11fb7c88d.js +1 -0
- package/.next/static/chunks/585-aa9262ea1bcf9d5b.js +1 -0
- package/.next/static/chunks/650-555944cc1eb7714e.js +1 -0
- package/.next/static/chunks/962-17a425b16c23bd0f.js +1 -0
- package/.next/static/chunks/pages/_app-d88c877888678e85.js +1 -0
- package/.next/static/chunks/pages/domains/[domain]/events/[name]/logs-7317f2121b8f0d8c.js +1 -0
- package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-a7fa6002267ccd3b.js +1 -0
- package/.next/static/chunks/pages/domains/[domain]/events/[name]-a5fb5b26471e703b.js +1 -0
- package/.next/static/chunks/pages/domains/[domain]/services/[name]-80d6d803e5466b81.js +1 -0
- package/.next/static/chunks/pages/domains/[domain]-e39d527b56fd45c8.js +1 -0
- package/.next/static/chunks/pages/domains-6ab78cb1bc2f4200.js +1 -0
- package/.next/static/chunks/pages/events/[name]/v/[version]-93d978734b0dc0a3.js +1 -0
- package/.next/static/chunks/pages/events/{[name]-813780e7042af288.js → [name]-d3d2a03948b8dfeb.js} +1 -1
- package/.next/static/chunks/pages/events-5a41c37b360b2fce.js +1 -0
- package/.next/static/chunks/pages/{overview-2f0bfad06c84e437.js → overview-dc5e91549c7e3d52.js} +1 -1
- package/.next/static/chunks/pages/services/[name]-148079bb388f8c53.js +1 -0
- package/.next/static/chunks/pages/services-7fe5a823f1b25f18.js +1 -0
- package/.next/static/chunks/pages/users/[id]-b255611073ef76e0.js +1 -0
- package/.next/static/chunks/pages/visualiser-2fc8224670ac5dff.js +1 -0
- package/.next/static/chunks/webpack-b17b8ef11b94ba66.js +1 -0
- package/{out/_next/static/css/6774df2af1f71309.css → .next/static/css/70ede87da43120f8.css} +1 -1
- package/.next/static/sTHntsHUajnk_njFTxiB5/_buildManifest.js +1 -0
- package/.next/static/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/_middlewareManifest.js +0 -0
- package/.next/static/sTHntsHUajnk_njFTxiB5/_ssgManifest.js +1 -0
- package/.next/trace +57 -56
- package/CHANGELOG.md +20 -0
- package/components/Footer.tsx +1 -1
- package/components/Grids/DomainGrid.tsx +53 -0
- package/components/Grids/EventGrid.tsx +12 -5
- package/components/Grids/ServiceGrid.tsx +3 -3
- package/components/Header.tsx +2 -1
- package/components/Mdx/NodeGraph/GraphElements.tsx +1 -1
- package/components/Mdx/NodeGraph/GraphLayout.ts +6 -2
- package/components/Mdx/NodeGraph/NodeGraph.tsx +13 -3
- package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +8 -4
- package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +2 -2
- package/components/Sidebars/DomainSidebar.tsx +55 -0
- package/components/Sidebars/EventSidebar.tsx +61 -111
- package/components/Sidebars/ServiceSidebar.tsx +47 -125
- package/components/Sidebars/components/ExternalLinks.tsx +28 -0
- package/components/Sidebars/components/ItemList.tsx +32 -0
- package/components/Sidebars/components/Owners.tsx +38 -0
- package/components/Sidebars/components/Tags.tsx +45 -0
- package/eventcatalog.config.js +1 -0
- package/lib/__tests__/assets/domains/User/events/UserCreated/index.md +16 -0
- package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.cs +31 -0
- package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.js +1 -0
- package/lib/__tests__/assets/domains/User/events/UserRemoved/index.md +16 -0
- package/lib/__tests__/assets/domains/User/events/UserRemoved/schema.json +4 -0
- package/lib/__tests__/assets/domains/User/index.md +12 -0
- package/lib/__tests__/assets/domains/User/services/User Service/index.md +15 -0
- package/lib/__tests__/assets/events/AddedItemToCart/index.md +0 -2
- package/lib/__tests__/assets/services/Basket Service/index.md +1 -1
- package/lib/__tests__/domains.spec.ts +267 -0
- package/lib/__tests__/events.spec.ts +216 -90
- package/lib/__tests__/graphs.spec.ts +4 -4
- package/lib/__tests__/services.spec.ts +62 -7
- package/lib/domains.ts +148 -0
- package/lib/events.ts +68 -22
- package/lib/graphs.ts +6 -3
- package/lib/services.ts +51 -13
- package/out/404/index.html +1 -1
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5/domains/Shopping}/events/AddedItemToCart/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/services/Basket Service.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/services/Data Lake.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/OrderComplete/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderComplete.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/OrderConfirmed/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderConfirmed.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/OrderRequested/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/OrderRequested.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/PaymentProcessed/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/PaymentProcessed.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/RemovedItemFromCart/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/RemovedItemFromCart.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/ShipmentDelivered/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentDelivered.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/ShipmentDispatched/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentDispatched.json +1 -0
- package/out/_next/data/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/events/ShipmentPrepared/logs.json +0 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events/ShipmentPrepared.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/events.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/overview.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Basket Service.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Data Lake.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Payment Service.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/services/Shipping Service.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/services.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/users/dboyne.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/users/mSmith.json +1 -0
- package/out/_next/data/sTHntsHUajnk_njFTxiB5/visualiser.json +1 -0
- package/out/_next/static/chunks/109-716dea1303010b4f.js +1 -0
- package/out/_next/static/chunks/169-b33dfdaf2847d062.js +1 -0
- package/out/_next/static/chunks/178-e9a666e11fb7c88d.js +1 -0
- package/out/_next/static/chunks/585-aa9262ea1bcf9d5b.js +1 -0
- package/out/_next/static/chunks/650-555944cc1eb7714e.js +1 -0
- package/out/_next/static/chunks/962-17a425b16c23bd0f.js +1 -0
- package/out/_next/static/chunks/pages/_app-d88c877888678e85.js +1 -0
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/logs-7317f2121b8f0d8c.js +1 -0
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-a7fa6002267ccd3b.js +1 -0
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-a5fb5b26471e703b.js +1 -0
- package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-80d6d803e5466b81.js +1 -0
- package/out/_next/static/chunks/pages/domains/[domain]-e39d527b56fd45c8.js +1 -0
- package/out/_next/static/chunks/pages/domains-6ab78cb1bc2f4200.js +1 -0
- package/out/_next/static/chunks/pages/events/[name]/v/[version]-93d978734b0dc0a3.js +1 -0
- package/out/_next/static/chunks/pages/events/{[name]-813780e7042af288.js → [name]-d3d2a03948b8dfeb.js} +1 -1
- package/out/_next/static/chunks/pages/events-5a41c37b360b2fce.js +1 -0
- package/out/_next/static/chunks/pages/{overview-2f0bfad06c84e437.js → overview-dc5e91549c7e3d52.js} +1 -1
- package/out/_next/static/chunks/pages/services/[name]-148079bb388f8c53.js +1 -0
- package/out/_next/static/chunks/pages/services-7fe5a823f1b25f18.js +1 -0
- package/out/_next/static/chunks/pages/users/[id]-b255611073ef76e0.js +1 -0
- package/out/_next/static/chunks/pages/visualiser-2fc8224670ac5dff.js +1 -0
- package/out/_next/static/chunks/webpack-b17b8ef11b94ba66.js +1 -0
- package/{.next/static/css/6774df2af1f71309.css → out/_next/static/css/70ede87da43120f8.css} +1 -1
- package/out/_next/static/sTHntsHUajnk_njFTxiB5/_buildManifest.js +1 -0
- package/out/_next/static/{R1JBWbiD3Q61grTfkBBSU → sTHntsHUajnk_njFTxiB5}/_middlewareManifest.js +0 -0
- package/out/_next/static/sTHntsHUajnk_njFTxiB5/_ssgManifest.js +1 -0
- package/out/domains/Shopping/events/AddedItemToCart/index.html +65 -0
- package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +1 -0
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +58 -0
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +65 -0
- package/out/domains/Shopping/index.html +2 -0
- package/out/domains/Shopping/services/Basket Service/index.html +2 -0
- package/out/domains/Shopping/services/Data Lake/index.html +2 -0
- package/out/domains/index.html +2 -0
- package/out/events/OrderComplete/index.html +2 -2
- package/out/events/OrderComplete/logs/index.html +1 -1
- package/out/events/OrderConfirmed/index.html +2 -2
- package/out/events/OrderConfirmed/logs/index.html +1 -1
- package/out/events/OrderRequested/index.html +2 -2
- package/out/events/OrderRequested/logs/index.html +1 -1
- package/out/events/PaymentProcessed/index.html +2 -2
- package/out/events/PaymentProcessed/logs/index.html +1 -1
- package/out/events/RemovedItemFromCart/index.html +2 -2
- package/out/events/RemovedItemFromCart/logs/index.html +1 -1
- package/out/events/ShipmentDelivered/index.html +2 -2
- package/out/events/ShipmentDelivered/logs/index.html +1 -1
- package/out/events/ShipmentDispatched/index.html +2 -2
- package/out/events/ShipmentDispatched/logs/index.html +1 -1
- package/out/events/ShipmentPrepared/index.html +2 -2
- package/out/events/ShipmentPrepared/logs/index.html +1 -1
- package/out/events/index.html +3 -3
- package/out/index.html +1 -1
- package/out/overview/index.html +1 -1
- package/out/services/Basket Service/index.html +1 -2
- package/out/services/Data Lake/index.html +1 -2
- package/out/services/Payment Service/index.html +2 -2
- package/out/services/Shipping Service/index.html +2 -2
- package/out/services/index.html +3 -3
- package/out/users/dboyne/index.html +6 -5
- package/out/users/mSmith/index.html +3 -3
- package/out/visualiser/index.html +4 -3
- package/package.json +2 -2
- package/pages/_app.tsx +59 -37
- package/pages/domains/[domain]/events/[name]/logs.tsx +29 -0
- package/pages/domains/[domain]/events/[name]/v/[version].tsx +39 -0
- package/pages/domains/[domain]/events/[name].tsx +46 -0
- package/pages/domains/[domain]/index.tsx +138 -0
- package/pages/domains/[domain]/services/[name].tsx +42 -0
- package/pages/domains.tsx +64 -0
- package/pages/events/[name]/logs.tsx +6 -4
- package/pages/events/[name]/v/[version].tsx +3 -2
- package/pages/events/[name].tsx +26 -12
- package/pages/events.tsx +59 -33
- package/pages/overview.tsx +3 -3
- package/pages/services/[name].tsx +8 -8
- package/pages/users/[id].tsx +15 -5
- package/pages/visualiser.tsx +98 -82
- package/scripts/move-schemas-for-download.js +25 -10
- package/styles/globals.css +16 -2
- package/tailwind.config.js +11 -1
- package/.next/server/pages/events/AddedItemToCart/logs.html +0 -1
- package/.next/server/pages/events/AddedItemToCart/v/0.0.1.html +0 -58
- package/.next/server/pages/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/.next/server/pages/events/AddedItemToCart/v/0.0.2.html +0 -65
- package/.next/server/pages/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/.next/server/pages/events/AddedItemToCart.html +0 -65
- package/.next/server/pages/events/AddedItemToCart.json +0 -1
- package/.next/static/R1JBWbiD3Q61grTfkBBSU/_buildManifest.js +0 -1
- package/.next/static/R1JBWbiD3Q61grTfkBBSU/_ssgManifest.js +0 -1
- package/.next/static/chunks/109-a08539311d3d6672.js +0 -1
- package/.next/static/chunks/178-87f01d17ab32dd4f.js +0 -1
- package/.next/static/chunks/252-08ab418f9b6821dd.js +0 -1
- package/.next/static/chunks/650-343888e13f994a09.js +0 -1
- package/.next/static/chunks/962-20c87db3880df896.js +0 -1
- package/.next/static/chunks/pages/_app-6eba1099469a6889.js +0 -1
- package/.next/static/chunks/pages/events/[name]/v/[version]-33051dbc32f5fe4e.js +0 -1
- package/.next/static/chunks/pages/events-1f39499146c9c75f.js +0 -1
- package/.next/static/chunks/pages/services/[name]-142d7fa515cfc532.js +0 -1
- package/.next/static/chunks/pages/services-f52121c6dc1211aa.js +0 -1
- package/.next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js +0 -1
- package/.next/static/chunks/pages/visualiser-e4e3757e74f19df7.js +0 -1
- package/.next/static/chunks/webpack-49abfa9a972ed5a3.js +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/AddedItemToCart.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/OrderComplete.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/OrderConfirmed.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/OrderRequested.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/PaymentProcessed.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/RemovedItemFromCart.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/ShipmentDelivered.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/ShipmentDispatched.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events/ShipmentPrepared.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/events.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/overview.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/services/Basket Service.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/services/Data Lake.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/services/Payment Service.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/services/Shipping Service.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/services.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/users/dboyne.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/users/mSmith.json +0 -1
- package/out/_next/data/R1JBWbiD3Q61grTfkBBSU/visualiser.json +0 -1
- package/out/_next/static/R1JBWbiD3Q61grTfkBBSU/_buildManifest.js +0 -1
- package/out/_next/static/R1JBWbiD3Q61grTfkBBSU/_ssgManifest.js +0 -1
- package/out/_next/static/chunks/109-a08539311d3d6672.js +0 -1
- package/out/_next/static/chunks/178-87f01d17ab32dd4f.js +0 -1
- package/out/_next/static/chunks/252-08ab418f9b6821dd.js +0 -1
- package/out/_next/static/chunks/650-343888e13f994a09.js +0 -1
- package/out/_next/static/chunks/962-20c87db3880df896.js +0 -1
- package/out/_next/static/chunks/pages/_app-6eba1099469a6889.js +0 -1
- package/out/_next/static/chunks/pages/events/[name]/v/[version]-33051dbc32f5fe4e.js +0 -1
- package/out/_next/static/chunks/pages/events-1f39499146c9c75f.js +0 -1
- package/out/_next/static/chunks/pages/services/[name]-142d7fa515cfc532.js +0 -1
- package/out/_next/static/chunks/pages/services-f52121c6dc1211aa.js +0 -1
- package/out/_next/static/chunks/pages/users/[id]-d3140bb155f8fb45.js +0 -1
- package/out/_next/static/chunks/pages/visualiser-e4e3757e74f19df7.js +0 -1
- package/out/_next/static/chunks/webpack-49abfa9a972ed5a3.js +0 -1
- package/out/events/AddedItemToCart/index.html +0 -65
- package/out/events/AddedItemToCart/logs/index.html +0 -1
- package/out/events/AddedItemToCart/v/0.0.1/index.html +0 -58
- package/out/events/AddedItemToCart/v/0.0.2/index.html +0 -65
|
@@ -48,8 +48,8 @@ click My_Service href "/docs/services/My Service" "Go to My Service" _self`);
|
|
|
48
48
|
const event = {
|
|
49
49
|
name: 'My Event',
|
|
50
50
|
version: '0.0.1',
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
producerNames: ['Service 1'],
|
|
52
|
+
consumerNames: ['Service 2'],
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
const result = buildMermaidFlowChartForEvent(event);
|
|
@@ -77,8 +77,8 @@ click My_Event href "/docs/events/My Event" "Go to My Event" _self`);
|
|
|
77
77
|
const event = {
|
|
78
78
|
name: 'My Event',
|
|
79
79
|
version: '0.0.1',
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
producerNames: ['Service 1 With Spaces'],
|
|
81
|
+
consumerNames: [],
|
|
82
82
|
};
|
|
83
83
|
const result = buildMermaidFlowChartForEvent(event);
|
|
84
84
|
expect(result).toContain(`Service_1_With_Spaces[Service 1 With Spaces]:::producer-->My_Event[My Event]:::event`);
|
|
@@ -33,6 +33,7 @@ describe('services', () => {
|
|
|
33
33
|
url: 'https://github.com/boyney123/pretend-basket-service',
|
|
34
34
|
},
|
|
35
35
|
subscribes: [],
|
|
36
|
+
domain: null,
|
|
36
37
|
summary: 'CRUD based API to handle Basket interactions for users of the shopping website.\n',
|
|
37
38
|
tags: [],
|
|
38
39
|
},
|
|
@@ -40,6 +41,7 @@ describe('services', () => {
|
|
|
40
41
|
name: 'Email Platform',
|
|
41
42
|
summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
|
|
42
43
|
owners: ['dboyne'],
|
|
44
|
+
domain: null,
|
|
43
45
|
repository: {
|
|
44
46
|
url: 'https://github.com/boyney123/EmailPlatform',
|
|
45
47
|
language: 'JavaScript',
|
|
@@ -58,16 +60,36 @@ describe('services', () => {
|
|
|
58
60
|
name: 'EmailSent',
|
|
59
61
|
version: '0.0.1',
|
|
60
62
|
summary: 'Tells us when an email has been sent\n',
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
producerNames: ['Email Platform'],
|
|
64
|
+
consumerNames: [],
|
|
63
65
|
externalLinks: [],
|
|
64
66
|
historicVersions: [],
|
|
67
|
+
domain: null,
|
|
65
68
|
owners: ['dboyne', 'mSmith'],
|
|
66
69
|
},
|
|
67
70
|
],
|
|
68
71
|
subscribes: [],
|
|
69
72
|
externalLinks: [],
|
|
70
73
|
},
|
|
74
|
+
{
|
|
75
|
+
name: 'User Service',
|
|
76
|
+
summary: 'CRUD based API to handle User information\n',
|
|
77
|
+
domain: 'User',
|
|
78
|
+
owners: ['mSmith'],
|
|
79
|
+
repository: {
|
|
80
|
+
language: 'JavaScript',
|
|
81
|
+
url: 'https://github.com/boyney123/pretend-basket-service',
|
|
82
|
+
},
|
|
83
|
+
tags: [],
|
|
84
|
+
externalLinks: [
|
|
85
|
+
{
|
|
86
|
+
label: 'AsyncAPI Specification',
|
|
87
|
+
url: 'https://studio.asyncapi.com/#schema-lightMeasuredPayload',
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
publishes: [],
|
|
91
|
+
subscribes: [],
|
|
92
|
+
},
|
|
71
93
|
]);
|
|
72
94
|
});
|
|
73
95
|
});
|
|
@@ -90,6 +112,7 @@ describe('services', () => {
|
|
|
90
112
|
url: 'https://github.com/boyney123/EmailPlatform',
|
|
91
113
|
language: 'JavaScript',
|
|
92
114
|
},
|
|
115
|
+
domain: null,
|
|
93
116
|
tags: [
|
|
94
117
|
{
|
|
95
118
|
label: 'defaultContentType:application/json',
|
|
@@ -104,9 +127,10 @@ describe('services', () => {
|
|
|
104
127
|
name: 'EmailSent',
|
|
105
128
|
version: '0.0.1',
|
|
106
129
|
summary: 'Tells us when an email has been sent\n',
|
|
107
|
-
|
|
108
|
-
|
|
130
|
+
producerNames: ['Email Platform'],
|
|
131
|
+
consumerNames: [],
|
|
109
132
|
historicVersions: [],
|
|
133
|
+
domain: null,
|
|
110
134
|
externalLinks: [],
|
|
111
135
|
owners: ['dboyne', 'mSmith'],
|
|
112
136
|
},
|
|
@@ -120,12 +144,13 @@ describe('services', () => {
|
|
|
120
144
|
|
|
121
145
|
describe('getServiceByName', () => {
|
|
122
146
|
it('returns an event and markdown by the given event name', async () => {
|
|
123
|
-
const { service, markdown } = await getServiceByName('Email Platform');
|
|
147
|
+
const { service, markdown } = await getServiceByName({ serviceName: 'Email Platform' });
|
|
124
148
|
|
|
125
149
|
expect(service).toEqual({
|
|
126
150
|
name: 'Email Platform',
|
|
127
151
|
summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
|
|
128
152
|
owners: ['dboyne'],
|
|
153
|
+
domain: null,
|
|
129
154
|
repository: {
|
|
130
155
|
url: 'https://github.com/boyney123/EmailPlatform',
|
|
131
156
|
language: 'JavaScript',
|
|
@@ -144,9 +169,10 @@ describe('services', () => {
|
|
|
144
169
|
name: 'EmailSent',
|
|
145
170
|
version: '0.0.1',
|
|
146
171
|
summary: 'Tells us when an email has been sent\n',
|
|
147
|
-
|
|
148
|
-
|
|
172
|
+
producerNames: ['Email Platform'],
|
|
173
|
+
consumerNames: [],
|
|
149
174
|
historicVersions: [],
|
|
175
|
+
domain: null,
|
|
150
176
|
externalLinks: [],
|
|
151
177
|
owners: ['dboyne', 'mSmith'],
|
|
152
178
|
},
|
|
@@ -158,5 +184,34 @@ describe('services', () => {
|
|
|
158
184
|
// @ts-ignore
|
|
159
185
|
expect(markdown.content).toMatchMarkdown('# Testing');
|
|
160
186
|
});
|
|
187
|
+
|
|
188
|
+
describe('services within domains', () => {
|
|
189
|
+
it('returns an event and markdown by the given event name', async () => {
|
|
190
|
+
const { service, markdown } = await getServiceByName({ serviceName: 'User Service', domain: 'User' });
|
|
191
|
+
|
|
192
|
+
expect(service).toEqual({
|
|
193
|
+
name: 'User Service',
|
|
194
|
+
summary: 'CRUD based API to handle User information\n',
|
|
195
|
+
domain: 'User',
|
|
196
|
+
owners: ['mSmith'],
|
|
197
|
+
repository: {
|
|
198
|
+
language: 'JavaScript',
|
|
199
|
+
url: 'https://github.com/boyney123/pretend-basket-service',
|
|
200
|
+
},
|
|
201
|
+
tags: [],
|
|
202
|
+
externalLinks: [
|
|
203
|
+
{
|
|
204
|
+
label: 'AsyncAPI Specification',
|
|
205
|
+
url: 'https://studio.asyncapi.com/#schema-lightMeasuredPayload',
|
|
206
|
+
},
|
|
207
|
+
],
|
|
208
|
+
publishes: [],
|
|
209
|
+
subscribes: [],
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// @ts-ignore
|
|
213
|
+
expect(markdown.content).toMatchMarkdown('# Testing');
|
|
214
|
+
});
|
|
215
|
+
});
|
|
161
216
|
});
|
|
162
217
|
});
|
package/lib/domains.ts
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import type { Event } from '@eventcatalog/types';
|
|
4
|
+
import { Domain } from '@eventcatalog/types';
|
|
5
|
+
import { serialize } from 'next-mdx-remote/serialize';
|
|
6
|
+
import { getAllEventsFromPath } from './events';
|
|
7
|
+
import { getAllServicesFromPath } from './services';
|
|
8
|
+
import { readMarkdownFile, getLastModifiedDateOfFile } from '@/lib/file-reader';
|
|
9
|
+
|
|
10
|
+
import { MarkdownFile } from '../types/index';
|
|
11
|
+
|
|
12
|
+
const buildDomain = (domainFrontMatter: any): Domain => {
|
|
13
|
+
const { name, summary, owners = [], tags = [], externalLinks = [] } = domainFrontMatter;
|
|
14
|
+
return { name, summary, owners, tags, externalLinks };
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const getUniqueDomainNamesFromEvents = (events: Event[]) => {
|
|
18
|
+
const allDomains = events.filter((event) => !!event.domain).map((event) => event.domain);
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
return [...new Set(allDomains)];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const getAllDomainsByOwnerId = async (ownerId): Promise<Domain[]> => {
|
|
24
|
+
const domainsWithMarkdown = await getAllDomains();
|
|
25
|
+
|
|
26
|
+
const domains = domainsWithMarkdown.map((item) => item.domain);
|
|
27
|
+
const domainsOwnedByUser = domains.filter((domain) => domain.owners.some((id) => id === ownerId));
|
|
28
|
+
return domainsOwnedByUser.map((domain) => ({
|
|
29
|
+
...domain,
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const getAllEventsFromDomains = () => {
|
|
34
|
+
const domainsDir = path.join(process.env.PROJECT_DIR, 'domains');
|
|
35
|
+
|
|
36
|
+
if (!fs.existsSync(domainsDir)) return [];
|
|
37
|
+
|
|
38
|
+
const domains = fs.readdirSync(domainsDir);
|
|
39
|
+
|
|
40
|
+
return domains.reduce((allEventsFromDomains, domainFolder) => {
|
|
41
|
+
const domainDir = path.join(domainsDir, domainFolder);
|
|
42
|
+
const eventsForDomainDir = path.join(domainDir, 'events');
|
|
43
|
+
const domainHasEvents = fs.existsSync(eventsForDomainDir);
|
|
44
|
+
|
|
45
|
+
if (domainHasEvents) {
|
|
46
|
+
const domainEvents = getAllEventsFromPath(eventsForDomainDir);
|
|
47
|
+
|
|
48
|
+
// Add domains onto events
|
|
49
|
+
const eventsWithDomain = domainEvents.map((event) => ({ ...event, domain: domainFolder }));
|
|
50
|
+
|
|
51
|
+
return [...allEventsFromDomains, ...eventsWithDomain];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return allEventsFromDomains;
|
|
55
|
+
}, []);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const getAllServicesFromDomains = () => {
|
|
59
|
+
const domainsDir = path.join(process.env.PROJECT_DIR, 'domains');
|
|
60
|
+
if (!fs.existsSync(domainsDir)) return [];
|
|
61
|
+
const domains = fs.readdirSync(domainsDir);
|
|
62
|
+
|
|
63
|
+
return domains.reduce((allServicesFromDomains, domainFolder) => {
|
|
64
|
+
const domainDir = path.join(domainsDir, domainFolder);
|
|
65
|
+
const servicesForDomainDir = path.join(domainDir, 'services');
|
|
66
|
+
const domainHasServices = fs.existsSync(servicesForDomainDir);
|
|
67
|
+
|
|
68
|
+
if (domainHasServices) {
|
|
69
|
+
const domainServices = getAllServicesFromPath(servicesForDomainDir);
|
|
70
|
+
|
|
71
|
+
// Add domains onto events
|
|
72
|
+
const eventsWithDomain = domainServices.map((event) => ({ ...event, domain: domainFolder }));
|
|
73
|
+
|
|
74
|
+
return [...allServicesFromDomains, ...eventsWithDomain];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return allServicesFromDomains;
|
|
78
|
+
}, []);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const getDomainByName = async ({
|
|
82
|
+
domainName,
|
|
83
|
+
}: {
|
|
84
|
+
domainName: string;
|
|
85
|
+
}): Promise<{ domain: Domain; markdown: MarkdownFile }> => {
|
|
86
|
+
try {
|
|
87
|
+
const domainsDir = path.join(process.env.PROJECT_DIR, 'domains');
|
|
88
|
+
const domainDirectory = path.join(domainsDir, domainName);
|
|
89
|
+
|
|
90
|
+
const { data, content } = readMarkdownFile(path.join(domainDirectory, `index.md`));
|
|
91
|
+
const domain = buildDomain(data);
|
|
92
|
+
|
|
93
|
+
const mdxSource = await serialize(content);
|
|
94
|
+
|
|
95
|
+
const eventsForDomain = getAllEventsFromPath(path.join(domainDirectory, 'events'));
|
|
96
|
+
const servicesForDomain = getAllServicesFromPath(path.join(domainDirectory, 'services'));
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
domain: {
|
|
101
|
+
...domain,
|
|
102
|
+
events: eventsForDomain,
|
|
103
|
+
services: servicesForDomain,
|
|
104
|
+
},
|
|
105
|
+
markdown: {
|
|
106
|
+
content,
|
|
107
|
+
lastModifiedDate: getLastModifiedDateOfFile(path.join(domainDirectory, `index.md`)),
|
|
108
|
+
source: mdxSource,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
} catch (error) {
|
|
112
|
+
console.log('Failed to get domain by name', domainName);
|
|
113
|
+
return Promise.reject();
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export const getDomainByPath = async (domainDirectory: string): Promise<{ domain: Domain; markdown: MarkdownFile }> => {
|
|
118
|
+
const { data, content } = readMarkdownFile(path.join(domainDirectory, `index.md`));
|
|
119
|
+
const domain = buildDomain(data);
|
|
120
|
+
|
|
121
|
+
const mdxSource = await serialize(content);
|
|
122
|
+
|
|
123
|
+
const eventsForDomain = getAllEventsFromPath(path.join(domainDirectory, 'events'));
|
|
124
|
+
const servicesForDomain = getAllServicesFromPath(path.join(domainDirectory, 'services'));
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
// @ts-ignore
|
|
128
|
+
domain: {
|
|
129
|
+
...domain,
|
|
130
|
+
events: eventsForDomain,
|
|
131
|
+
services: servicesForDomain,
|
|
132
|
+
},
|
|
133
|
+
markdown: {
|
|
134
|
+
content,
|
|
135
|
+
lastModifiedDate: getLastModifiedDateOfFile(path.join(domainDirectory, `index.md`)),
|
|
136
|
+
source: mdxSource,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export const getAllDomainsFromPath = async (domainsDir: string) => {
|
|
142
|
+
if (!fs.existsSync(domainsDir)) return [];
|
|
143
|
+
const folders = fs.readdirSync(domainsDir);
|
|
144
|
+
const allDomains = folders.map((folder) => getDomainByPath(path.join(domainsDir, folder)));
|
|
145
|
+
return Promise.all(allDomains);
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export const getAllDomains = () => getAllDomainsFromPath(path.join(process.env.PROJECT_DIR, 'domains'));
|
package/lib/events.ts
CHANGED
|
@@ -9,11 +9,22 @@ import { MarkdownFile } from '@/types/index';
|
|
|
9
9
|
import { extentionToLanguageMap } from './file-reader';
|
|
10
10
|
|
|
11
11
|
import { getLastModifiedDateOfFile, getSchemaFromDir, readMarkdownFile } from '@/lib/file-reader';
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
import { getAllServices, hydrateEventProducersAndConsumers } from './services';
|
|
14
|
+
import { getAllEventsFromDomains } from './domains';
|
|
13
15
|
|
|
14
16
|
const parseEventFrontMatterIntoEvent = (eventFrontMatter: any): Event => {
|
|
15
|
-
const {
|
|
16
|
-
|
|
17
|
+
const {
|
|
18
|
+
name,
|
|
19
|
+
version,
|
|
20
|
+
summary,
|
|
21
|
+
domain = null,
|
|
22
|
+
producers = [],
|
|
23
|
+
consumers = [],
|
|
24
|
+
owners = [],
|
|
25
|
+
externalLinks = [],
|
|
26
|
+
} = eventFrontMatter;
|
|
27
|
+
return { name, version, summary, domain, producerNames: producers, consumerNames: consumers, owners, externalLinks };
|
|
17
28
|
};
|
|
18
29
|
|
|
19
30
|
const versionsForEvents = (pathToEvent) => {
|
|
@@ -27,8 +38,13 @@ const versionsForEvents = (pathToEvent) => {
|
|
|
27
38
|
return [];
|
|
28
39
|
};
|
|
29
40
|
|
|
30
|
-
export const getLogsForEvent = (eventName) => {
|
|
31
|
-
|
|
41
|
+
export const getLogsForEvent = ({ eventName, domain }: { eventName: string; domain?: string }) => {
|
|
42
|
+
let eventsDir = path.join(process.env.PROJECT_DIR, 'events');
|
|
43
|
+
|
|
44
|
+
if (domain) {
|
|
45
|
+
eventsDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'events');
|
|
46
|
+
}
|
|
47
|
+
|
|
32
48
|
const historicVersions = versionsForEvents(path.join(eventsDir, eventName));
|
|
33
49
|
|
|
34
50
|
const allVersions = historicVersions.map((version) => ({
|
|
@@ -129,17 +145,28 @@ const getEventExamplesFromDir = (pathToExamples) => {
|
|
|
129
145
|
return examples;
|
|
130
146
|
};
|
|
131
147
|
|
|
132
|
-
export const
|
|
133
|
-
const
|
|
148
|
+
export const getEventByPath = (eventDir: string): Event => {
|
|
149
|
+
const { data } = readMarkdownFile(path.join(eventDir, 'index.md'));
|
|
150
|
+
const historicVersions = versionsForEvents(path.join(eventDir));
|
|
151
|
+
return {
|
|
152
|
+
...parseEventFrontMatterIntoEvent(data),
|
|
153
|
+
historicVersions,
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export const getAllEventsFromPath = (eventsDir: string): Event[] => {
|
|
134
158
|
const folders = fs.readdirSync(eventsDir);
|
|
135
|
-
return folders.map((folder) =>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
159
|
+
return folders.map((folder) => getEventByPath(path.join(eventsDir, folder)));
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export const getAllEvents = (): Event[] => {
|
|
163
|
+
const allEventsFromDomainFolders = getAllEventsFromDomains();
|
|
164
|
+
const eventsWithoutDomains = getAllEventsFromPath(path.join(process.env.PROJECT_DIR, 'events'));
|
|
165
|
+
|
|
166
|
+
const events = [...eventsWithoutDomains, ...allEventsFromDomainFolders];
|
|
167
|
+
const sortedEvents = events.sort((a, b) => a.name.localeCompare(b.name));
|
|
168
|
+
|
|
169
|
+
return sortedEvents;
|
|
143
170
|
};
|
|
144
171
|
|
|
145
172
|
export const getAllOwners = (): string[] => {
|
|
@@ -158,15 +185,30 @@ export const getAllEventsAndVersionsFlattened = () => {
|
|
|
158
185
|
// eventsWithVersionsFlattened.push({ eventName: event.name, version: event.version })
|
|
159
186
|
|
|
160
187
|
if (event.historicVersions) {
|
|
161
|
-
event.historicVersions.forEach((version) =>
|
|
188
|
+
event.historicVersions.forEach((version) =>
|
|
189
|
+
eventsWithVersionsFlattened.push({ eventName: event.name, version, domain: event.domain })
|
|
190
|
+
);
|
|
162
191
|
}
|
|
163
192
|
|
|
164
193
|
return eventsWithVersionsFlattened;
|
|
165
194
|
}, []);
|
|
166
195
|
};
|
|
167
196
|
|
|
168
|
-
export const getEventByName = async (
|
|
169
|
-
|
|
197
|
+
export const getEventByName = async ({
|
|
198
|
+
eventName,
|
|
199
|
+
version,
|
|
200
|
+
domain,
|
|
201
|
+
}: {
|
|
202
|
+
eventName: string;
|
|
203
|
+
version?: string;
|
|
204
|
+
domain?: string;
|
|
205
|
+
}): Promise<{ event: Event; markdown: MarkdownFile }> => {
|
|
206
|
+
let eventsDir = path.join(process.env.PROJECT_DIR, 'events');
|
|
207
|
+
|
|
208
|
+
if (domain) {
|
|
209
|
+
eventsDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'events');
|
|
210
|
+
}
|
|
211
|
+
|
|
170
212
|
const eventDirectory = path.join(eventsDir, eventName);
|
|
171
213
|
let versionDirectory = null;
|
|
172
214
|
|
|
@@ -179,12 +221,16 @@ export const getEventByName = async (eventName: string, version?: string): Promi
|
|
|
179
221
|
try {
|
|
180
222
|
const { data, content } = readMarkdownFile(path.join(directoryToLoadForEvent, `index.md`));
|
|
181
223
|
const event = parseEventFrontMatterIntoEvent(data);
|
|
224
|
+
const services = getAllServices();
|
|
225
|
+
const consumersAndProducersAsServices = hydrateEventProducersAndConsumers(event, services);
|
|
182
226
|
|
|
183
227
|
const mdxSource = await serialize(content);
|
|
184
228
|
|
|
185
229
|
return {
|
|
186
230
|
event: {
|
|
187
231
|
...event,
|
|
232
|
+
...consumersAndProducersAsServices,
|
|
233
|
+
domain: domain || null,
|
|
188
234
|
historicVersions: versionsForEvents(eventDirectory),
|
|
189
235
|
schema: getSchemaFromDir(directoryToLoadForEvent),
|
|
190
236
|
examples: getEventExamplesFromDir(path.join(directoryToLoadForEvent, `examples`)),
|
|
@@ -204,8 +250,8 @@ export const getEventByName = async (eventName: string, version?: string): Promi
|
|
|
204
250
|
|
|
205
251
|
export const getUniqueServicesNamesFromEvents = (events: Event[]) => {
|
|
206
252
|
const allConsumersAndProducers = events.reduce((domains, event) => {
|
|
207
|
-
const {
|
|
208
|
-
return domains.concat(
|
|
253
|
+
const { consumerNames = [], producerNames = [] } = event;
|
|
254
|
+
return domains.concat(consumerNames).concat(producerNames);
|
|
209
255
|
}, []);
|
|
210
256
|
|
|
211
257
|
const data = allConsumersAndProducers.map((service) => service);
|
|
@@ -225,8 +271,8 @@ export const getAllEventsThatHaveRelationshipWithService = (
|
|
|
225
271
|
): { publishes: Event[]; subscribes: Event[] } => {
|
|
226
272
|
const relationshipsBetweenEvents = events.reduce(
|
|
227
273
|
(data, event) => {
|
|
228
|
-
const serviceSubscribesToEvent = event.
|
|
229
|
-
const servicePublishesEvent = event.
|
|
274
|
+
const serviceSubscribesToEvent = event.consumerNames.some((id) => id === service.name);
|
|
275
|
+
const servicePublishesEvent = event.producerNames.some((id) => id === service.name);
|
|
230
276
|
|
|
231
277
|
return {
|
|
232
278
|
publishes: servicePublishesEvent ? data.publishes.concat(event) : data.publishes,
|
package/lib/graphs.ts
CHANGED
|
@@ -31,14 +31,17 @@ click ${centerNode.id} href "${centerNode.link}" "Go to ${centerNode.name}" _sel
|
|
|
31
31
|
* @param {string} rootNodeColor of the root node
|
|
32
32
|
* @returns {string} Mermaid Graph
|
|
33
33
|
*/
|
|
34
|
-
export const buildMermaidFlowChartForEvent = (
|
|
34
|
+
export const buildMermaidFlowChartForEvent = (
|
|
35
|
+
{ name: eventName, producerNames, consumerNames }: Event,
|
|
36
|
+
rootNodeColor = '#2563eb'
|
|
37
|
+
) => {
|
|
35
38
|
// Transforms services & event into a graph model
|
|
36
|
-
const leftNodes =
|
|
39
|
+
const leftNodes = producerNames.map(truncateNode).map((node) => ({
|
|
37
40
|
id: node.replace(/ /g, '_'),
|
|
38
41
|
name: node,
|
|
39
42
|
link: generateLink(node, 'services'),
|
|
40
43
|
}));
|
|
41
|
-
const rightNodes =
|
|
44
|
+
const rightNodes = consumerNames.map(truncateNode).map((node) => ({
|
|
42
45
|
id: node.replace(/ /g, '_'),
|
|
43
46
|
name: node,
|
|
44
47
|
link: generateLink(node, 'services'),
|
package/lib/services.ts
CHANGED
|
@@ -1,33 +1,44 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { serialize } from 'next-mdx-remote/serialize';
|
|
4
|
-
import { Service } from '@eventcatalog/types';
|
|
4
|
+
import { Service, Event } from '@eventcatalog/types';
|
|
5
5
|
import { readMarkdownFile, getLastModifiedDateOfFile } from '@/lib/file-reader';
|
|
6
6
|
import { MarkdownFile } from '../types/index';
|
|
7
7
|
|
|
8
8
|
import { getAllEvents, getAllEventsThatHaveRelationshipWithService } from '@/lib/events';
|
|
9
|
+
import { getAllServicesFromDomains } from '@/lib/domains';
|
|
9
10
|
|
|
10
11
|
const buildService = (eventFrontMatter: any): Service => {
|
|
11
|
-
const { name, summary, owners = [], repository = {}, tags = [], externalLinks = [] } = eventFrontMatter;
|
|
12
|
-
return { name, summary, owners, repository, tags, externalLinks };
|
|
12
|
+
const { name, summary, domain = null, owners = [], repository = {}, tags = [], externalLinks = [] } = eventFrontMatter;
|
|
13
|
+
return { name, summary, domain, owners, repository, tags, externalLinks };
|
|
13
14
|
};
|
|
14
15
|
|
|
15
|
-
export const
|
|
16
|
-
const
|
|
16
|
+
export const getServiceByPath = (serviceDirPath: string): Service => {
|
|
17
|
+
const { data } = readMarkdownFile(path.join(serviceDirPath, 'index.md'));
|
|
18
|
+
return buildService(data);
|
|
19
|
+
};
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
const
|
|
21
|
+
export const getAllServicesFromPath = (serviceDir: string): Service[] => {
|
|
22
|
+
const folders = fs.readdirSync(serviceDir);
|
|
20
23
|
const events = getAllEvents();
|
|
24
|
+
const services = folders.map((folder) => getServiceByPath(path.join(serviceDir, folder)));
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
return parsedServices.map((service) => ({
|
|
26
|
+
// // @ts-ignore
|
|
27
|
+
return services.map((service) => ({
|
|
26
28
|
...service,
|
|
27
29
|
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
28
30
|
}));
|
|
29
31
|
};
|
|
30
32
|
|
|
33
|
+
export const getAllServices = (): Service[] => {
|
|
34
|
+
const allServicesFromDomainFolders = getAllServicesFromDomains();
|
|
35
|
+
const servicesWithoutDomains = getAllServicesFromPath(path.join(process.env.PROJECT_DIR, 'services'));
|
|
36
|
+
|
|
37
|
+
const services = [...allServicesFromDomainFolders, ...servicesWithoutDomains];
|
|
38
|
+
const sortedServices = services.sort((a, b) => a.name.localeCompare(b.name));
|
|
39
|
+
return sortedServices;
|
|
40
|
+
};
|
|
41
|
+
|
|
31
42
|
export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
|
|
32
43
|
const services = await getAllServices();
|
|
33
44
|
const servicesOwnedByUser = services.filter((service) => service.owners.some((id) => id === ownerId));
|
|
@@ -36,9 +47,20 @@ export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
|
|
|
36
47
|
}));
|
|
37
48
|
};
|
|
38
49
|
|
|
39
|
-
export const getServiceByName = async (
|
|
50
|
+
export const getServiceByName = async ({
|
|
51
|
+
serviceName,
|
|
52
|
+
domain = null,
|
|
53
|
+
}: {
|
|
54
|
+
serviceName: string;
|
|
55
|
+
domain?: string;
|
|
56
|
+
}): Promise<{ service: Service; markdown: MarkdownFile }> => {
|
|
40
57
|
try {
|
|
41
|
-
|
|
58
|
+
let servicesDir = path.join(process.env.PROJECT_DIR, 'services');
|
|
59
|
+
|
|
60
|
+
if (domain) {
|
|
61
|
+
servicesDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'services');
|
|
62
|
+
}
|
|
63
|
+
|
|
42
64
|
const serviceDirectory = path.join(servicesDir, serviceName);
|
|
43
65
|
const { data, content } = readMarkdownFile(path.join(serviceDirectory, `index.md`));
|
|
44
66
|
const service = buildService(data);
|
|
@@ -51,6 +73,7 @@ export const getServiceByName = async (serviceName): Promise<{ service: Service;
|
|
|
51
73
|
// @ts-ignore
|
|
52
74
|
service: {
|
|
53
75
|
...service,
|
|
76
|
+
domain,
|
|
54
77
|
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
55
78
|
},
|
|
56
79
|
markdown: {
|
|
@@ -64,3 +87,18 @@ export const getServiceByName = async (serviceName): Promise<{ service: Service;
|
|
|
64
87
|
return Promise.reject();
|
|
65
88
|
}
|
|
66
89
|
};
|
|
90
|
+
|
|
91
|
+
export const hydrateEventProducersAndConsumers = (
|
|
92
|
+
event: Event,
|
|
93
|
+
services: Service[]
|
|
94
|
+
): { producers: Service[]; consumers: Service[] } => {
|
|
95
|
+
const findServiceByName = (name) => services.find((service) => service.name === name);
|
|
96
|
+
|
|
97
|
+
const producers = event.producerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
98
|
+
const consumers = event.consumerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
producers: producers.length > 0 ? producers : [],
|
|
102
|
+
consumers: consumers.length > 0 ? consumers : [],
|
|
103
|
+
};
|
|
104
|
+
};
|
package/out/404/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><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"/><meta name="description" content="
|
|
1
|
+
<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width"/><meta charSet="utf-8"/><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"/><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"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><title>404: This page could not be found</title><meta name="next-head-count" content="19"/><link rel="preload" href="/_next/static/css/70ede87da43120f8.css" as="style"/><link rel="stylesheet" href="/_next/static/css/70ede87da43120f8.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-b17b8ef11b94ba66.js" defer=""></script><script src="/_next/static/chunks/framework-576ec6a1c1386453.js" defer=""></script><script src="/_next/static/chunks/main-0015f560a7edeb35.js" defer=""></script><script src="/_next/static/chunks/pages/_app-d88c877888678e85.js" defer=""></script><script src="/_next/static/chunks/pages/_error-5a714c45c50a8db4.js" defer=""></script><script src="/_next/static/sTHntsHUajnk_njFTxiB5/_buildManifest.js" defer=""></script><script src="/_next/static/sTHntsHUajnk_njFTxiB5/_ssgManifest.js" defer=""></script><script src="/_next/static/sTHntsHUajnk_njFTxiB5/_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, "Segoe UI", "Fira Sans", Avenir, "Helvetica Neue", "Lucida Grande", 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":"sTHntsHUajnk_njFTxiB5","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
File without changes
|
package/out/_next/data/sTHntsHUajnk_njFTxiB5/domains/Shopping/events/AddedItemToCart/v/0.0.1.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"pageProps":{"event":{"name":"AddedItemToCart","version":"0.0.1","summary":"Holds information about what the user added to their shopping cart.\n","domain":"Shopping","producerNames":["Basket Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"producers":[{"name":"Basket Service","summary":"CRUD based API to handle Basket interactions for users of the shopping website.\n","domain":"Shopping","owners":["dboyne"],"repository":{"language":"JavaScript","url":"https://github.com/boyney123/pretend-basket-service"},"tags":[],"externalLinks":[{"label":"AsyncAPI Specification","url":"https://studio.asyncapi.com/#schema-lightMeasuredPayload"}],"publishes":[{"name":"AddedItemToCart","version":"0.0.3","summary":"Holds information about what the user added to their shopping cart.\n","domain":"Shopping","producerNames":["Basket Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[{"label":"AsyncAPI Specification","url":"https://studio.asyncapi.com/#schema-lightMeasuredPayload"}],"historicVersions":["0.0.2","0.0.1"]},{"name":"OrderRequested","version":"0.0.1","summary":"Holds information about the customers order.\n","domain":null,"producerNames":["Basket Service"],"consumerNames":["Payment Service"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"RemovedItemFromCart","version":"0.0.1","summary":"Holds information about what the user removed from their cart.\n","domain":null,"producerNames":["Basket Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]}],"subscribes":[]}],"consumers":[{"name":"Data Lake","summary":"Our internal datalake used by the data team and business analytics.\n","domain":"Shopping","owners":["dboyne"],"repository":{},"tags":[],"externalLinks":[],"publishes":[],"subscribes":[{"name":"AddedItemToCart","version":"0.0.3","summary":"Holds information about what the user added to their shopping cart.\n","domain":"Shopping","producerNames":["Basket Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[{"label":"AsyncAPI Specification","url":"https://studio.asyncapi.com/#schema-lightMeasuredPayload"}],"historicVersions":["0.0.2","0.0.1"]},{"name":"OrderComplete","version":"0.0.1","summary":"Event represents when an order has been complete. (Delivered and finished)\n","domain":null,"producerNames":["Orders Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"name":"RemovedItemFromCart","version":"0.0.1","summary":"Holds information about what the user removed from their cart.\n","domain":null,"producerNames":["Basket Service"],"consumerNames":["Data Lake"],"owners":["dboyne","mSmith"],"externalLinks":[],"historicVersions":[]},{"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":[]}]}],"historicVersions":["0.0.2","0.0.1"],"schema":{"snippet":"{\n \"$id\": \"https://example.com/AddedItemToCart.json\",\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"AddedItemToCart\",\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\"]\n },\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"userId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the user\"\n },\n \"itemId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the shopping item\"\n }\n }\n }\n }\n}","language":"json","extension":"json"},"examples":[]},"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 can be triggered multiple times per customer. Everytime the customer adds an item to their shopping cart this event will be triggered.\n\nWe have a frontend application that allows users to buy things from our store. This front end interacts directly with the `Basket Service` to add items to the cart. The `Basket Service` will raise the events.\n\n\n### Consumer / Producer Diagram\n\n<Mermaid />\n\n<Schema />","source":{"compiledSource":"var c=Object.defineProperty,p=Object.defineProperties;var l=Object.getOwnPropertyDescriptors;var i=Object.getOwnPropertySymbols;var a=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable;var d=(e,t,o)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,r=(e,t)=>{for(var o in t||(t={}))a.call(t,o)&&d(e,o,t[o]);if(i)for(var o of i(t))s.call(t,o)&&d(e,o,t[o]);return e},m=(e,t)=>p(e,l(t));var h=(e,t)=>{var o={};for(var n in e)a.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&&i)for(var n of i(e))t.indexOf(n)<0&&s.call(e,n)&&(o[n]=e[n]);return o};const makeShortcode=e=>function(o){return console.warn(\"Component \"+e+\" was not imported, exported, or provided by MDXProvider as global scope\"),mdx(\"div\",r({},o))},Admonition=makeShortcode(\"Admonition\"),Mermaid=makeShortcode(\"Mermaid\"),Schema=makeShortcode(\"Schema\"),layoutProps={},MDXLayout=\"wrapper\";function MDXContent(o){var n=o,{components:e}=n,t=h(n,[\"components\"]);return mdx(MDXLayout,m(r(r({},layoutProps),t),{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 can be triggered multiple times per customer. Everytime the customer adds an item to their shopping cart this event will be triggered.\"),mdx(\"p\",null,\"We have a frontend application that allows users to buy things from our store. This front end interacts directly with the \",mdx(\"inlineCode\",{parentName:\"p\"},\"Basket Service\"),\" to add items to the cart. The \",mdx(\"inlineCode\",{parentName:\"p\"},\"Basket Service\"),\" will raise the events.\"),mdx(\"h3\",null,\"Consumer / Producer Diagram\"),mdx(Mermaid,{mdxType:\"Mermaid\"}),mdx(Schema,{mdxType:\"Schema\"}))}MDXContent.isMDXComponent=!0;\n","scope":{}},"lastModifiedDate":"2022/2/28"},"eventPath":"/domains/Shopping/events/AddedItemToCart","breadCrumbs":[{"name":"Domain","href":"/events","current":false},{"name":"Shopping","href":"/domains/Shopping","current":false},{"name":"Events","href":"/events?domain=Shopping","current":false},{"name":"AddedItemToCart","href":"/domains/Shopping/events/AddedItemToCart","current":false},{"name":"v0.0.1","href":"/domains/Shopping/events/AddedItemToCart/v/0.0.1","current":true}],"loadedVersion":"0.0.1"},"__N_SSG":true}
|