@eventcatalog/core 0.1.18 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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} +277 -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/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 +48 -27
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +1 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.json +1 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +60 -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 +67 -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 +67 -0
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +1 -0
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.html +1 -0
- package/{out/_next/data/KZ2mEdt5MUAVDtbybTBw1 → .next/server/pages/domains/Shopping}/events/RemovedItemFromCart/logs.json +0 -0
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.html +49 -0
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.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 +5 -4
- 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/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 +2 -4
- 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 +7 -7
- package/.next/server/pages/users/dboyne.json +1 -1
- package/.next/server/pages/users/mSmith.html +6 -4
- package/.next/server/pages/users/mSmith.json +1 -1
- package/.next/server/pages/visualiser.html +5 -5
- 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/UitC3v9gRidvUVAvz9F2F/_buildManifest.js +1 -0
- package/.next/static/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/_middlewareManifest.js +0 -0
- package/.next/static/UitC3v9gRidvUVAvz9F2F/_ssgManifest.js +1 -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/.next/static/css/{6774df2af1f71309.css → 70ede87da43120f8.css} +1 -1
- package/.next/trace +57 -56
- package/CHANGELOG.md +20 -0
- 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/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 +69 -22
- package/lib/graphs.ts +6 -3
- package/lib/services.ts +52 -13
- package/out/404/index.html +1 -1
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/AddedItemToCart/logs.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/AddedItemToCart.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/RemovedItemFromCart/logs.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/RemovedItemFromCart.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/OrderComplete/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/OrderComplete.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/OrderConfirmed/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/OrderConfirmed.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/OrderRequested/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/OrderRequested.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/PaymentProcessed/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/PaymentProcessed.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/RemovedItemFromCart/logs.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/RemovedItemFromCart.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/ShipmentDelivered/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/ShipmentDelivered.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/ShipmentDispatched/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/ShipmentDispatched.json +1 -0
- package/out/_next/data/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/events/ShipmentPrepared/logs.json +0 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events/ShipmentPrepared.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/events.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/overview.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/services/Payment Service.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/services/Shipping Service.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/services.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/users/dboyne.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/users/mSmith.json +1 -0
- package/out/_next/data/UitC3v9gRidvUVAvz9F2F/visualiser.json +1 -0
- package/out/_next/static/UitC3v9gRidvUVAvz9F2F/_buildManifest.js +1 -0
- package/out/_next/static/{KZ2mEdt5MUAVDtbybTBw1 → UitC3v9gRidvUVAvz9F2F}/_middlewareManifest.js +0 -0
- package/out/_next/static/UitC3v9gRidvUVAvz9F2F/_ssgManifest.js +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/out/_next/static/css/{6774df2af1f71309.css → 70ede87da43120f8.css} +1 -1
- package/out/domains/Shopping/events/AddedItemToCart/index.html +67 -0
- package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +1 -0
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +60 -0
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +67 -0
- package/out/domains/Shopping/events/RemovedItemFromCart/index.html +49 -0
- package/out/domains/Shopping/events/RemovedItemFromCart/logs/index.html +1 -0
- package/out/domains/Shopping/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 +5 -4
- package/out/index.html +1 -1
- package/out/overview/index.html +1 -1
- package/out/services/Payment Service/index.html +2 -2
- package/out/services/Shipping Service/index.html +2 -2
- package/out/services/index.html +2 -4
- package/out/users/dboyne/index.html +7 -7
- package/out/users/mSmith/index.html +6 -4
- package/out/visualiser/index.html +5 -5
- 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 +27 -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/logs.json +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/server/pages/services/Basket Service.html +0 -2
- package/.next/server/pages/services/Basket Service.json +0 -1
- package/.next/server/pages/services/Data Lake.html +0 -2
- package/.next/server/pages/services/Data Lake.json +0 -1
- package/.next/static/KZ2mEdt5MUAVDtbybTBw1/_buildManifest.js +0 -1
- package/.next/static/KZ2mEdt5MUAVDtbybTBw1/_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-2ce3055a6b681f1a.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/KZ2mEdt5MUAVDtbybTBw1/events/AddedItemToCart/logs.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/AddedItemToCart.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/OrderComplete.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/OrderConfirmed.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/OrderRequested.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/PaymentProcessed.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/RemovedItemFromCart.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/ShipmentDelivered.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/ShipmentDispatched.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events/ShipmentPrepared.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/events.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/overview.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/services/Basket Service.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/services/Data Lake.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/services/Payment Service.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/services/Shipping Service.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/services.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/users/dboyne.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/users/mSmith.json +0 -1
- package/out/_next/data/KZ2mEdt5MUAVDtbybTBw1/visualiser.json +0 -1
- package/out/_next/static/KZ2mEdt5MUAVDtbybTBw1/_buildManifest.js +0 -1
- package/out/_next/static/KZ2mEdt5MUAVDtbybTBw1/_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-2ce3055a6b681f1a.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
- package/out/services/Basket Service/index.html +0 -2
- package/out/services/Data Lake/index.html +0 -2
|
@@ -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,29 @@ 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[] => {
|
|
158
|
+
if (!fs.existsSync(eventsDir)) return [];
|
|
134
159
|
const folders = fs.readdirSync(eventsDir);
|
|
135
|
-
return folders.map((folder) =>
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
160
|
+
return folders.map((folder) => getEventByPath(path.join(eventsDir, folder)));
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export const getAllEvents = (): Event[] => {
|
|
164
|
+
const allEventsFromDomainFolders = getAllEventsFromDomains();
|
|
165
|
+
const eventsWithoutDomains = getAllEventsFromPath(path.join(process.env.PROJECT_DIR, 'events'));
|
|
166
|
+
|
|
167
|
+
const events = [...eventsWithoutDomains, ...allEventsFromDomainFolders];
|
|
168
|
+
const sortedEvents = events.sort((a, b) => a.name.localeCompare(b.name));
|
|
169
|
+
|
|
170
|
+
return sortedEvents;
|
|
143
171
|
};
|
|
144
172
|
|
|
145
173
|
export const getAllOwners = (): string[] => {
|
|
@@ -158,15 +186,30 @@ export const getAllEventsAndVersionsFlattened = () => {
|
|
|
158
186
|
// eventsWithVersionsFlattened.push({ eventName: event.name, version: event.version })
|
|
159
187
|
|
|
160
188
|
if (event.historicVersions) {
|
|
161
|
-
event.historicVersions.forEach((version) =>
|
|
189
|
+
event.historicVersions.forEach((version) =>
|
|
190
|
+
eventsWithVersionsFlattened.push({ eventName: event.name, version, domain: event.domain })
|
|
191
|
+
);
|
|
162
192
|
}
|
|
163
193
|
|
|
164
194
|
return eventsWithVersionsFlattened;
|
|
165
195
|
}, []);
|
|
166
196
|
};
|
|
167
197
|
|
|
168
|
-
export const getEventByName = async (
|
|
169
|
-
|
|
198
|
+
export const getEventByName = async ({
|
|
199
|
+
eventName,
|
|
200
|
+
version,
|
|
201
|
+
domain,
|
|
202
|
+
}: {
|
|
203
|
+
eventName: string;
|
|
204
|
+
version?: string;
|
|
205
|
+
domain?: string;
|
|
206
|
+
}): Promise<{ event: Event; markdown: MarkdownFile }> => {
|
|
207
|
+
let eventsDir = path.join(process.env.PROJECT_DIR, 'events');
|
|
208
|
+
|
|
209
|
+
if (domain) {
|
|
210
|
+
eventsDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'events');
|
|
211
|
+
}
|
|
212
|
+
|
|
170
213
|
const eventDirectory = path.join(eventsDir, eventName);
|
|
171
214
|
let versionDirectory = null;
|
|
172
215
|
|
|
@@ -179,12 +222,16 @@ export const getEventByName = async (eventName: string, version?: string): Promi
|
|
|
179
222
|
try {
|
|
180
223
|
const { data, content } = readMarkdownFile(path.join(directoryToLoadForEvent, `index.md`));
|
|
181
224
|
const event = parseEventFrontMatterIntoEvent(data);
|
|
225
|
+
const services = getAllServices();
|
|
226
|
+
const consumersAndProducersAsServices = hydrateEventProducersAndConsumers(event, services);
|
|
182
227
|
|
|
183
228
|
const mdxSource = await serialize(content);
|
|
184
229
|
|
|
185
230
|
return {
|
|
186
231
|
event: {
|
|
187
232
|
...event,
|
|
233
|
+
...consumersAndProducersAsServices,
|
|
234
|
+
domain: domain || null,
|
|
188
235
|
historicVersions: versionsForEvents(eventDirectory),
|
|
189
236
|
schema: getSchemaFromDir(directoryToLoadForEvent),
|
|
190
237
|
examples: getEventExamplesFromDir(path.join(directoryToLoadForEvent, `examples`)),
|
|
@@ -204,8 +251,8 @@ export const getEventByName = async (eventName: string, version?: string): Promi
|
|
|
204
251
|
|
|
205
252
|
export const getUniqueServicesNamesFromEvents = (events: Event[]) => {
|
|
206
253
|
const allConsumersAndProducers = events.reduce((domains, event) => {
|
|
207
|
-
const {
|
|
208
|
-
return domains.concat(
|
|
254
|
+
const { consumerNames = [], producerNames = [] } = event;
|
|
255
|
+
return domains.concat(consumerNames).concat(producerNames);
|
|
209
256
|
}, []);
|
|
210
257
|
|
|
211
258
|
const data = allConsumersAndProducers.map((service) => service);
|
|
@@ -225,8 +272,8 @@ export const getAllEventsThatHaveRelationshipWithService = (
|
|
|
225
272
|
): { publishes: Event[]; subscribes: Event[] } => {
|
|
226
273
|
const relationshipsBetweenEvents = events.reduce(
|
|
227
274
|
(data, event) => {
|
|
228
|
-
const serviceSubscribesToEvent = event.
|
|
229
|
-
const servicePublishesEvent = event.
|
|
275
|
+
const serviceSubscribesToEvent = event.consumerNames.some((id) => id === service.name);
|
|
276
|
+
const servicePublishesEvent = event.producerNames.some((id) => id === service.name);
|
|
230
277
|
|
|
231
278
|
return {
|
|
232
279
|
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,45 @@
|
|
|
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
|
-
|
|
21
|
+
export const getAllServicesFromPath = (serviceDir: string): Service[] => {
|
|
22
|
+
if (!fs.existsSync(serviceDir)) return [];
|
|
23
|
+
const folders = fs.readdirSync(serviceDir);
|
|
20
24
|
const events = getAllEvents();
|
|
25
|
+
const services = folders.map((folder) => getServiceByPath(path.join(serviceDir, folder)));
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// @ts-ignore
|
|
25
|
-
return parsedServices.map((service) => ({
|
|
27
|
+
// // @ts-ignore
|
|
28
|
+
return services.map((service) => ({
|
|
26
29
|
...service,
|
|
27
30
|
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
28
31
|
}));
|
|
29
32
|
};
|
|
30
33
|
|
|
34
|
+
export const getAllServices = (): Service[] => {
|
|
35
|
+
const allServicesFromDomainFolders = getAllServicesFromDomains();
|
|
36
|
+
const servicesWithoutDomains = getAllServicesFromPath(path.join(process.env.PROJECT_DIR, 'services'));
|
|
37
|
+
|
|
38
|
+
const services = [...allServicesFromDomainFolders, ...servicesWithoutDomains];
|
|
39
|
+
const sortedServices = services.sort((a, b) => a.name.localeCompare(b.name));
|
|
40
|
+
return sortedServices;
|
|
41
|
+
};
|
|
42
|
+
|
|
31
43
|
export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
|
|
32
44
|
const services = await getAllServices();
|
|
33
45
|
const servicesOwnedByUser = services.filter((service) => service.owners.some((id) => id === ownerId));
|
|
@@ -36,9 +48,20 @@ export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
|
|
|
36
48
|
}));
|
|
37
49
|
};
|
|
38
50
|
|
|
39
|
-
export const getServiceByName = async (
|
|
51
|
+
export const getServiceByName = async ({
|
|
52
|
+
serviceName,
|
|
53
|
+
domain = null,
|
|
54
|
+
}: {
|
|
55
|
+
serviceName: string;
|
|
56
|
+
domain?: string;
|
|
57
|
+
}): Promise<{ service: Service; markdown: MarkdownFile }> => {
|
|
40
58
|
try {
|
|
41
|
-
|
|
59
|
+
let servicesDir = path.join(process.env.PROJECT_DIR, 'services');
|
|
60
|
+
|
|
61
|
+
if (domain) {
|
|
62
|
+
servicesDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'services');
|
|
63
|
+
}
|
|
64
|
+
|
|
42
65
|
const serviceDirectory = path.join(servicesDir, serviceName);
|
|
43
66
|
const { data, content } = readMarkdownFile(path.join(serviceDirectory, `index.md`));
|
|
44
67
|
const service = buildService(data);
|
|
@@ -51,6 +74,7 @@ export const getServiceByName = async (serviceName): Promise<{ service: Service;
|
|
|
51
74
|
// @ts-ignore
|
|
52
75
|
service: {
|
|
53
76
|
...service,
|
|
77
|
+
domain,
|
|
54
78
|
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
55
79
|
},
|
|
56
80
|
markdown: {
|
|
@@ -64,3 +88,18 @@ export const getServiceByName = async (serviceName): Promise<{ service: Service;
|
|
|
64
88
|
return Promise.reject();
|
|
65
89
|
}
|
|
66
90
|
};
|
|
91
|
+
|
|
92
|
+
export const hydrateEventProducersAndConsumers = (
|
|
93
|
+
event: Event,
|
|
94
|
+
services: Service[]
|
|
95
|
+
): { producers: Service[]; consumers: Service[] } => {
|
|
96
|
+
const findServiceByName = (name) => services.find((service) => service.name === name);
|
|
97
|
+
|
|
98
|
+
const producers = event.producerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
99
|
+
const consumers = event.consumerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
producers: producers.length > 0 ? producers : [],
|
|
103
|
+
consumers: consumers.length > 0 ? consumers : [],
|
|
104
|
+
};
|
|
105
|
+
};
|
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/UitC3v9gRidvUVAvz9F2F/_buildManifest.js" defer=""></script><script src="/_next/static/UitC3v9gRidvUVAvz9F2F/_ssgManifest.js" defer=""></script><script src="/_next/static/UitC3v9gRidvUVAvz9F2F/_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":"UitC3v9gRidvUVAvz9F2F","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
package/out/_next/data/UitC3v9gRidvUVAvz9F2F/domains/Shopping/events/AddedItemToCart/logs.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"pageProps":{"changes":[{"versions":["0.0.2","0.0.2"],"changelog":{"content":null},"value":"Index: schema.json (0.0.2)\n===================================================================\n--- schema.json (0.0.2)\n+++ schema.json (0.0.2)\n@@ -36,9 +36,9 @@\n \"quantity\": {\n \"type\": \"number\",\n \"description\": \"How many items the user wants to add to their shopping cart\",\n \"minimum\": 1,\n- \"maximum\": 100,\n+ \"maximum\": 1000,\n \"default\": 1\n }\n }\n }\n"},{"versions":["0.0.1","0.0.2"],"changelog":{"content":null},"value":"===================================================================\n--- schema.json (0.0.1)\n+++ schema.json (0.0.2)\n@@ -31,8 +31,15 @@\n },\n \"itemId\": {\n \"type\": \"string\",\n \"description\": \"The ID of the shopping item\"\n+ },\n+ \"quantity\": {\n+ \"type\": \"number\",\n+ \"description\": \"How many items the user wants to add to their shopping cart\",\n+ \"minimum\": 1,\n+ \"maximum\": 100,\n+ \"default\": 1\n }\n }\n }\n }\n"}],"name":"AddedItemToCart","currentVersion":"0.0.2"},"__N_SSG":true}
|
package/out/_next/data/UitC3v9gRidvUVAvz9F2F/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":[],"consumers":[],"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}\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}
|