@eventcatalog/core 1.2.6 → 2.0.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/.changeset/config.json +11 -0
- package/.github/CODEOWNERS +3 -0
- package/.github/ISSUE_TEMPLATE.md +1 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- package/.github/funding.yml +1 -0
- package/.github/workflows/lint.yml +22 -0
- package/.github/workflows/release.yml +34 -0
- package/.github/workflows/verify-build.yml +27 -0
- package/.prettierignore +7 -0
- package/.prettierrc +10 -0
- package/CHANGELOG.md +10 -571
- package/LICENSE.md +21 -0
- package/README.md +192 -5
- package/astro.config.mjs +57 -0
- package/bin/dist/eventcatalog.cjs +3139 -0
- package/bin/dist/eventcatalog.d.cts +1 -0
- package/bin/dist/eventcatalog.d.ts +1 -0
- package/bin/dist/eventcatalog.js +3141 -0
- package/images/example.png +0 -0
- package/package.json +59 -52
- package/public/icons/github.svg +1 -0
- package/public/icons/x-twitter.svg +1 -0
- package/public/logo.png +0 -0
- package/public/slack-icon.svg +1 -0
- package/scripts/build-ci.js +22 -0
- package/scripts/catalog-to-astro-content-directory.js +188 -0
- package/scripts/default-files-for-collections/commands.md +8 -0
- package/scripts/default-files-for-collections/domains.md +8 -0
- package/scripts/default-files-for-collections/events.md +8 -0
- package/scripts/default-files-for-collections/services.md +8 -0
- package/scripts/default-files-for-collections/teams.md +11 -0
- package/scripts/default-files-for-collections/users.md +11 -0
- package/scripts/start-catalog-locally.js +23 -0
- package/scripts/watcher.js +53 -0
- package/src/components/DocsNavigation.astro +110 -0
- package/src/components/Header.astro +65 -0
- package/src/components/Lists/BasicList.tsx +59 -0
- package/src/components/Lists/OwnersList.tsx +101 -0
- package/src/components/Lists/PillList.tsx +67 -0
- package/src/components/Lists/VersionList.astro +29 -0
- package/src/components/MDX/Accordion/Accordion.astro +10 -0
- package/src/components/MDX/Accordion/Accordion.tsx +29 -0
- package/src/components/MDX/Accordion/AccordionGroup.astro +16 -0
- package/{components/Mdx → src/components/MDX}/Admonition.tsx +6 -5
- package/src/components/MDX/File.tsx +43 -0
- package/src/components/MDX/NodeGraph/DownloadButton.tsx +58 -0
- package/src/components/MDX/NodeGraph/NodeGraph.astro +82 -0
- package/src/components/MDX/NodeGraph/NodeGraph.tsx +135 -0
- package/src/components/MDX/NodeGraph/NodeGraphPortal.tsx +15 -0
- package/src/components/MDX/NodeGraph/Nodes/Command.tsx +74 -0
- package/src/components/MDX/NodeGraph/Nodes/Event.tsx +74 -0
- package/src/components/MDX/NodeGraph/Nodes/Service.tsx +83 -0
- package/src/components/MDX/OpenAPI/OpenAPI.tsx +35 -0
- package/src/components/MDX/Schema.tsx +45 -0
- package/src/components/MDX/components.tsx +24 -0
- package/src/components/Search.astro +108 -0
- package/src/components/Seo.astro +79 -0
- package/src/components/SideBars/DomainSideBar.astro +42 -0
- package/src/components/SideBars/MessageSideBar.astro +81 -0
- package/src/components/SideBars/ServiceSideBar.astro +93 -0
- package/src/components/Tables/DebouncedInput.tsx +32 -0
- package/src/components/Tables/Table.tsx +228 -0
- package/src/components/Tables/columns/DomainTableColumns.tsx +118 -0
- package/src/components/Tables/columns/MessageTableColumns.tsx +159 -0
- package/src/components/Tables/columns/ServiceTableColumns.tsx +162 -0
- package/src/components/Tables/columns/index.tsx +17 -0
- package/src/components/Tables/filters/custom-filters.ts +14 -0
- package/src/content/config.ts +119 -0
- package/src/env.d.ts +2 -0
- package/src/layouts/CustomDocsPageLayout.astro +100 -0
- package/src/layouts/DiscoverLayout.astro +120 -0
- package/src/layouts/DocsLayout.astro +59 -0
- package/src/layouts/PlainPage.astro +29 -0
- package/src/layouts/VisualiserLayout.astro +73 -0
- package/src/pages/discover/[type]/index.astro +36 -0
- package/src/pages/docs/[type]/[id]/[version]/index.astro +215 -0
- package/src/pages/docs/[type]/[id]/[version]/spec/index.astro +93 -0
- package/src/pages/docs/index.md +4 -0
- package/src/pages/docs/teams/[id]/index.astro +127 -0
- package/src/pages/docs/users/[id]/index.astro +132 -0
- package/src/pages/visualiser/[type]/[id]/[version]/index.astro +46 -0
- package/src/pages/visualiser/index.astro +25 -0
- package/src/remark-plugins/mermaid.ts +27 -0
- package/src/remark-plugins/remark-modified-time.mjs +9 -0
- package/src/types/index.ts +2 -0
- package/src/utils/collections/util.ts +22 -0
- package/src/utils/colors.ts +14 -0
- package/src/utils/commands/node-graph.ts +107 -0
- package/src/utils/commands.ts +60 -0
- package/src/utils/config/catalog.ts +2 -0
- package/src/utils/domains/domains.ts +50 -0
- package/src/utils/domains/node-graph.ts +60 -0
- package/src/utils/events/node-graph.ts +108 -0
- package/src/utils/events.ts +62 -0
- package/src/utils/example-remark-plugin.mjs +6 -0
- package/src/utils/messages.ts +7 -0
- package/src/utils/node-graph-utils/utils.ts +31 -0
- package/src/utils/services/node-graph.ts +133 -0
- package/src/utils/services/services.ts +88 -0
- package/src/utils/teams.ts +47 -0
- package/src/utils/users.ts +59 -0
- package/tailwind.config.mjs +24 -0
- package/tsconfig.json +11 -26
- package/.next/BUILD_ID +0 -1
- package/.next/build-manifest.json +0 -246
- package/.next/cache/.tsbuildinfo +0 -1
- package/.next/cache/config.json +0 -7
- package/.next/cache/eslint/.cache_1bay4w0 +0 -1
- package/.next/cache/next-server.js.nft.json +0 -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/export-detail.json +0 -1
- package/.next/export-marker.json +0 -1
- package/.next/images-manifest.json +0 -1
- package/.next/next-server.js.nft.json +0 -1
- package/.next/package.json +0 -1
- package/.next/prerender-manifest.json +0 -1
- package/.next/react-loadable-manifest.json +0 -2082
- package/.next/required-server-files.json +0 -1
- package/.next/routes-manifest.json +0 -1
- package/.next/server/chunks/109.js +0 -608
- package/.next/server/chunks/237.js +0 -109
- package/.next/server/chunks/267.js +0 -257
- package/.next/server/chunks/274.js +0 -32
- package/.next/server/chunks/29.js +0 -675
- package/.next/server/chunks/331.js +0 -750
- package/.next/server/chunks/362.js +0 -570
- package/.next/server/chunks/428.js +0 -84
- package/.next/server/chunks/50.js +0 -466
- package/.next/server/chunks/526.js +0 -159
- package/.next/server/chunks/537.js +0 -136
- package/.next/server/chunks/788.js +0 -162
- package/.next/server/chunks/797.js +0 -92
- package/.next/server/chunks/8.js +0 -173
- package/.next/server/chunks/854.js +0 -107
- package/.next/server/chunks/938.js +0 -140
- package/.next/server/chunks/944.js +0 -721
- package/.next/server/chunks/962.js +0 -13
- package/.next/server/chunks/97.js +0 -2829
- package/.next/server/chunks/992.js +0 -50
- package/.next/server/chunks/font-manifest.json +0 -1
- package/.next/server/font-manifest.json +0 -1
- package/.next/server/middleware-manifest.json +0 -6
- package/.next/server/pages/404.html +0 -12
- package/.next/server/pages/500.html +0 -12
- package/.next/server/pages/_app.js +0 -623
- package/.next/server/pages/_app.js.nft.json +0 -1
- package/.next/server/pages/_document.js +0 -120
- package/.next/server/pages/_document.js.nft.json +0 -1
- package/.next/server/pages/_error.js +0 -148
- package/.next/server/pages/_error.js.nft.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderComplete/logs.html +0 -1
- package/.next/server/pages/domains/Orders/events/OrderComplete/logs.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderComplete.html +0 -40
- package/.next/server/pages/domains/Orders/events/OrderComplete.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.html +0 -1
- package/.next/server/pages/domains/Orders/events/OrderConfirmed/logs.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderConfirmed.html +0 -40
- package/.next/server/pages/domains/Orders/events/OrderConfirmed.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderCreated/logs.html +0 -1
- package/.next/server/pages/domains/Orders/events/OrderCreated/logs.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderCreated.html +0 -2
- package/.next/server/pages/domains/Orders/events/OrderCreated.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderRequested/logs.html +0 -1
- package/.next/server/pages/domains/Orders/events/OrderRequested/logs.json +0 -1
- package/.next/server/pages/domains/Orders/events/OrderRequested.html +0 -40
- package/.next/server/pages/domains/Orders/events/OrderRequested.json +0 -1
- package/.next/server/pages/domains/Orders/services/Orders Service.html +0 -2
- package/.next/server/pages/domains/Orders/services/Orders Service.json +0 -1
- package/.next/server/pages/domains/Orders.html +0 -2
- package/.next/server/pages/domains/Orders.json +0 -1
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.html +0 -1
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.html +0 -59
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.html +0 -66
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart.html +0 -65
- package/.next/server/pages/domains/Shopping/events/AddedItemToCart.json +0 -1
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.html +0 -1
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.html +0 -48
- package/.next/server/pages/domains/Shopping/events/RemovedItemFromCart.json +0 -1
- package/.next/server/pages/domains/Shopping.html +0 -2
- package/.next/server/pages/domains/Shopping.json +0 -1
- package/.next/server/pages/domains/[domain]/events/[name]/logs.js +0 -345
- package/.next/server/pages/domains/[domain]/events/[name]/logs.js.nft.json +0 -1
- package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js +0 -435
- package/.next/server/pages/domains/[domain]/events/[name]/v/[version].js.nft.json +0 -1
- package/.next/server/pages/domains/[domain]/events/[name].js +0 -354
- package/.next/server/pages/domains/[domain]/events/[name].js.nft.json +0 -1
- package/.next/server/pages/domains/[domain]/services/[name].js +0 -402
- package/.next/server/pages/domains/[domain]/services/[name].js.nft.json +0 -1
- package/.next/server/pages/domains/[domain].js +0 -549
- package/.next/server/pages/domains/[domain].js.nft.json +0 -1
- package/.next/server/pages/domains.html +0 -3
- package/.next/server/pages/domains.js +0 -576
- package/.next/server/pages/domains.js.nft.json +0 -1
- package/.next/server/pages/domains.json +0 -1
- package/.next/server/pages/events/PaymentProcessed/logs.html +0 -1
- package/.next/server/pages/events/PaymentProcessed/logs.json +0 -1
- package/.next/server/pages/events/PaymentProcessed.html +0 -44
- package/.next/server/pages/events/PaymentProcessed.json +0 -1
- package/.next/server/pages/events/ShipmentDelivered/logs.html +0 -1
- package/.next/server/pages/events/ShipmentDelivered/logs.json +0 -1
- package/.next/server/pages/events/ShipmentDelivered.html +0 -44
- package/.next/server/pages/events/ShipmentDelivered.json +0 -1
- package/.next/server/pages/events/ShipmentDispatched/logs.html +0 -1
- package/.next/server/pages/events/ShipmentDispatched/logs.json +0 -1
- package/.next/server/pages/events/ShipmentDispatched.html +0 -44
- package/.next/server/pages/events/ShipmentDispatched.json +0 -1
- package/.next/server/pages/events/ShipmentPrepared/logs.html +0 -1
- package/.next/server/pages/events/ShipmentPrepared/logs.json +0 -1
- package/.next/server/pages/events/ShipmentPrepared.html +0 -2
- package/.next/server/pages/events/ShipmentPrepared.json +0 -1
- package/.next/server/pages/events/[name]/logs.js +0 -263
- package/.next/server/pages/events/[name]/logs.js.nft.json +0 -1
- package/.next/server/pages/events/[name]/v/[version].js +0 -431
- package/.next/server/pages/events/[name]/v/[version].js.nft.json +0 -1
- package/.next/server/pages/events/[name].js +0 -354
- package/.next/server/pages/events/[name].js.nft.json +0 -1
- package/.next/server/pages/events.html +0 -11
- package/.next/server/pages/events.js +0 -789
- package/.next/server/pages/events.js.nft.json +0 -1
- package/.next/server/pages/events.json +0 -1
- package/.next/server/pages/index.html +0 -1
- package/.next/server/pages/index.js.nft.json +0 -1
- package/.next/server/pages/overview.html +0 -1
- package/.next/server/pages/overview.js +0 -240
- package/.next/server/pages/overview.js.nft.json +0 -1
- package/.next/server/pages/overview.json +0 -1
- package/.next/server/pages/services/Orders Service.html +0 -1
- package/.next/server/pages/services/Orders Service.json +0 -1
- package/.next/server/pages/services/Payment Service.html +0 -2
- package/.next/server/pages/services/Payment Service.json +0 -1
- package/.next/server/pages/services/Shipping Service.html +0 -2
- package/.next/server/pages/services/Shipping Service.json +0 -1
- package/.next/server/pages/services/[name].js +0 -319
- package/.next/server/pages/services/[name].js.nft.json +0 -1
- package/.next/server/pages/services.html +0 -4
- package/.next/server/pages/services.js +0 -741
- package/.next/server/pages/services.js.nft.json +0 -1
- package/.next/server/pages/services.json +0 -1
- package/.next/server/pages/users/[id].js +0 -475
- package/.next/server/pages/users/[id].js.nft.json +0 -1
- package/.next/server/pages/users/dboyne.html +0 -16
- package/.next/server/pages/users/dboyne.json +0 -1
- package/.next/server/pages/users/mSmith.html +0 -13
- package/.next/server/pages/users/mSmith.json +0 -1
- package/.next/server/pages/users.html +0 -1
- package/.next/server/pages/users.js.nft.json +0 -1
- package/.next/server/pages/visualiser.html +0 -16
- package/.next/server/pages/visualiser.js +0 -739
- package/.next/server/pages/visualiser.js.nft.json +0 -1
- package/.next/server/pages/visualiser.json +0 -1
- package/.next/server/pages-manifest.json +0 -23
- package/.next/server/webpack-runtime.js +0 -259
- package/.next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
- package/.next/static/chunks/1178-011609b6f3b123b3.js +0 -1
- package/.next/static/chunks/1476.eb11ab1feb4c5940.js +0 -1
- package/.next/static/chunks/1484.274df63eb11d9d68.js +0 -1
- package/.next/static/chunks/172-940ad0353b57ff98.js +0 -1
- package/.next/static/chunks/1750.a25eb3336a8c3a36.js +0 -1
- package/.next/static/chunks/2017.1b67898bd26fe157.js +0 -1
- package/.next/static/chunks/2027.80b01f1a7005a770.js +0 -1
- package/.next/static/chunks/2076.21cb0bf760a8055d.js +0 -1
- package/.next/static/chunks/2583.56889bb376087220.js +0 -1
- package/.next/static/chunks/2620-21775e17d8a6a407.js +0 -1
- package/.next/static/chunks/2765.dda8bae3343b6d41.js +0 -1
- package/.next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
- package/.next/static/chunks/3082.62ff47793d562412.js +0 -1
- package/.next/static/chunks/3116-e9a578a270d9e013.js +0 -1
- package/.next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
- package/.next/static/chunks/3706.64742528652de3dd.js +0 -1
- package/.next/static/chunks/3ede58a6.ff6c02b372da8155.js +0 -1
- package/.next/static/chunks/4042.98f113bfbf744466.js +0 -1
- package/.next/static/chunks/4079.75a5db02e1a11105.js +0 -1
- package/.next/static/chunks/438.dea6dada9bd4b683.js +0 -1
- package/.next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
- package/.next/static/chunks/4637.6819aa53bf80d6ff.js +0 -1
- package/.next/static/chunks/4816.03f53c476d2a5924.js +0 -1
- package/.next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
- package/.next/static/chunks/5202.6f686702cbb58a65.js +0 -1
- package/.next/static/chunks/5464.4c916df2382b5ba9.js +0 -1
- package/.next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
- package/.next/static/chunks/5644.b4ffa0632405fc9f.js +0 -1
- package/.next/static/chunks/5a7b57ef.d0702578743545b0.js +0 -1
- package/.next/static/chunks/60.40ff539d26f28401.js +0 -1
- package/.next/static/chunks/6101.a35579324b3356df.js +0 -1
- package/.next/static/chunks/6194.045435de6d19fc72.js +0 -1
- package/.next/static/chunks/6772-fba69ba8e4fa1ef4.js +0 -1
- package/.next/static/chunks/6778.7885dc0a314c5a9c.js +0 -1
- package/.next/static/chunks/6790-f4527d80153a3e25.js +0 -1
- package/.next/static/chunks/7005-09e42f99859b8d03.js +0 -1
- package/.next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
- package/.next/static/chunks/7195.2768b2bb31a65f2f.js +0 -1
- package/.next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
- package/.next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
- package/.next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
- package/.next/static/chunks/828-ef0e36f29db31dde.js +0 -1
- package/.next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
- package/.next/static/chunks/8720.e06d4cca843573db.js +0 -1
- package/.next/static/chunks/8785.1331b2a6d4be82c3.js +0 -1
- package/.next/static/chunks/8829-386c887227aab68c.js +0 -1
- package/.next/static/chunks/9054.ae9ffec47aacae76.js +0 -1
- package/.next/static/chunks/9097.1efc23284d82765c.js +0 -1
- package/.next/static/chunks/9231.af30fa4fedab9f01.js +0 -1
- package/.next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
- package/.next/static/chunks/9600.f70c0583d23764a8.js +0 -1
- package/.next/static/chunks/9822.0ad553e5c697208c.js +0 -1
- package/.next/static/chunks/9930.28415573db2b7806.js +0 -7
- package/.next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
- package/.next/static/chunks/d57e5a30-463f9ed8df724792.js +0 -1
- package/.next/static/chunks/eb6e03f4.2276f931f02e235c.js +0 -1
- package/.next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
- package/.next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
- package/.next/static/chunks/main-da37322a396d572a.js +0 -1
- package/.next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
- package/.next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-175a58a05deb2eda.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/events/[name]-7c7c2526e7d63883.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/services/[name]-f447208842a47b40.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
- package/.next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
- package/.next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
- package/.next/static/chunks/pages/events/[name]/v/[version]-af687afaafd7fd45.js +0 -1
- package/.next/static/chunks/pages/events/[name]-24bc568718357116.js +0 -1
- package/.next/static/chunks/pages/events-05ca59359ab07aa2.js +0 -1
- package/.next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
- package/.next/static/chunks/pages/overview-68b31b232c5ef1ff.js +0 -1
- package/.next/static/chunks/pages/services/[name]-b59b95836832898e.js +0 -1
- package/.next/static/chunks/pages/services-2c63507ae596def3.js +0 -1
- package/.next/static/chunks/pages/users/[id]-7306f8a1d8a7012a.js +0 -1
- package/.next/static/chunks/pages/users-412f257b1de51363.js +0 -1
- package/.next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
- package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
- package/.next/static/chunks/webpack-7e93d0cba2ccf996.js +0 -1
- package/.next/static/css/7e14b4dede1671ad.css +0 -1
- package/.next/static/css/94b9a747218712b2.css +0 -3
- package/.next/static/css/ae8abf3666c55019.css +0 -5
- package/.next/static/css/cc3c8fcadcf7a58b.css +0 -1
- package/.next/static/css/deb57cf90a65a90f.css +0 -1
- package/.next/static/css/ed97de5465a152bb.css +0 -1
- package/.next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js +0 -1
- package/.next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.js +0 -1
- package/.next/trace +0 -141
- package/bin/eventcatalog.js +0 -141
- package/components/BreadCrumbs.tsx +0 -50
- package/components/ContentView.tsx +0 -123
- package/components/Footer.tsx +0 -31
- package/components/Grids/DomainGrid.tsx +0 -61
- package/components/Grids/EventGrid.tsx +0 -102
- package/components/Grids/ServiceGrid.tsx +0 -84
- package/components/Grids/UserGrid.tsx +0 -55
- package/components/Header.tsx +0 -74
- package/components/Mdx/AsyncApiSpec.tsx +0 -25
- package/components/Mdx/Examples.tsx +0 -70
- package/components/Mdx/NodeGraph/GraphElements.tsx +0 -294
- package/components/Mdx/NodeGraph/GraphLayout.ts +0 -110
- package/components/Mdx/NodeGraph/Node.tsx +0 -15
- package/components/Mdx/NodeGraph/NodeGraph.tsx +0 -168
- package/components/Mdx/NodeGraph/__tests__/GraphElements.spec.ts +0 -102
- package/components/Mdx/NodeGraph/__tests__/GraphLayout.spec.ts +0 -115
- package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphElements.spec.ts.snap +0 -559
- package/components/Mdx/NodeGraph/__tests__/__snapshots__/GraphLayout.spec.ts.snap +0 -81
- package/components/Mdx/OpenApiSpec.tsx +0 -21
- package/components/Mdx/SchemaViewer/SchemaViewer.module.css +0 -5
- package/components/Mdx/SchemaViewer/SchemaViewer.tsx +0 -34
- package/components/Mermaid/index.tsx +0 -58
- package/components/NotFound/index.tsx +0 -40
- package/components/Sidebars/DomainSidebar.tsx +0 -55
- package/components/Sidebars/EventSidebar.tsx +0 -172
- package/components/Sidebars/ServiceSidebar.tsx +0 -128
- package/components/Sidebars/components/ExternalLinks.tsx +0 -28
- package/components/Sidebars/components/ItemList.tsx +0 -32
- package/components/Sidebars/components/Owners.tsx +0 -38
- package/components/Sidebars/components/Tags.tsx +0 -45
- package/components/SyntaxHighlighter.tsx +0 -42
- package/eventcatalog.config.js +0 -58
- package/eventcatalog.styles.css +0 -15
- package/hooks/EventCatalog.tsx +0 -54
- package/lib/__tests__/assets/domains/User/events/UserCreated/index.md +0 -20
- package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.cs +0 -31
- package/lib/__tests__/assets/domains/User/events/UserRemoved/examples/Basic.js +0 -1
- package/lib/__tests__/assets/domains/User/events/UserRemoved/index.md +0 -16
- package/lib/__tests__/assets/domains/User/events/UserRemoved/schema.json +0 -4
- package/lib/__tests__/assets/domains/User/index.md +0 -16
- package/lib/__tests__/assets/domains/User/services/User Service/index.md +0 -19
- package/lib/__tests__/assets/events/AddedItemToCart/index.md +0 -25
- package/lib/__tests__/assets/events/EmailSent/index.md +0 -15
- package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.cs +0 -31
- package/lib/__tests__/assets/events/EventWithSchemaAndExamples/examples/Basic.js +0 -1
- package/lib/__tests__/assets/events/EventWithSchemaAndExamples/index.md +0 -8
- package/lib/__tests__/assets/events/EventWithSchemaAndExamples/schema.json +0 -4
- package/lib/__tests__/assets/events/EventWithVersions/index.md +0 -10
- package/lib/__tests__/assets/events/EventWithVersions/versioned/0.0.1/index.md +0 -10
- package/lib/__tests__/assets/services/Basket Service/index.md +0 -26
- package/lib/__tests__/assets/services/Email Platform/index.md +0 -17
- package/lib/__tests__/assets/services/Payment Service/index.md +0 -7
- package/lib/__tests__/domains.spec.ts +0 -416
- package/lib/__tests__/events.spec.ts +0 -514
- package/lib/__tests__/file-reader.spec.ts +0 -69
- package/lib/__tests__/graphs.spec.ts +0 -88
- package/lib/__tests__/services.spec.ts +0 -268
- package/lib/analytics.ts +0 -30
- package/lib/domains.ts +0 -160
- package/lib/events.ts +0 -313
- package/lib/file-reader.ts +0 -76
- package/lib/graphs.ts +0 -92
- package/lib/services.ts +0 -126
- package/next-env.d.ts +0 -5
- package/next.config.js +0 -11
- package/out/404/index.html +0 -12
- package/out/404.html +0 -12
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderComplete/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderComplete.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderConfirmed/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderConfirmed.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderCreated/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderCreated.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderRequested/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/events/OrderRequested.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders/services/Orders Service.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Orders.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/AddedItemToCart.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping/events/RemovedItemFromCart.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains/Shopping.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/domains.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/PaymentProcessed/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/PaymentProcessed.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDelivered/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDelivered.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDispatched/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentDispatched.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentPrepared/logs.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events/ShipmentPrepared.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/events.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/overview.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Orders Service.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Payment Service.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services/Shipping Service.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/services.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/users/dboyne.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/users/mSmith.json +0 -1
- package/out/_next/data/rP51t_ISuRqZMVs4QvwfY/visualiser.json +0 -1
- package/out/_next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
- package/out/_next/static/chunks/1178-011609b6f3b123b3.js +0 -1
- package/out/_next/static/chunks/1476.eb11ab1feb4c5940.js +0 -1
- package/out/_next/static/chunks/1484.274df63eb11d9d68.js +0 -1
- package/out/_next/static/chunks/172-940ad0353b57ff98.js +0 -1
- package/out/_next/static/chunks/1750.a25eb3336a8c3a36.js +0 -1
- package/out/_next/static/chunks/2017.1b67898bd26fe157.js +0 -1
- package/out/_next/static/chunks/2027.80b01f1a7005a770.js +0 -1
- package/out/_next/static/chunks/2076.21cb0bf760a8055d.js +0 -1
- package/out/_next/static/chunks/2583.56889bb376087220.js +0 -1
- package/out/_next/static/chunks/2620-21775e17d8a6a407.js +0 -1
- package/out/_next/static/chunks/2765.dda8bae3343b6d41.js +0 -1
- package/out/_next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
- package/out/_next/static/chunks/3082.62ff47793d562412.js +0 -1
- package/out/_next/static/chunks/3116-e9a578a270d9e013.js +0 -1
- package/out/_next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
- package/out/_next/static/chunks/3706.64742528652de3dd.js +0 -1
- package/out/_next/static/chunks/3ede58a6.ff6c02b372da8155.js +0 -1
- package/out/_next/static/chunks/4042.98f113bfbf744466.js +0 -1
- package/out/_next/static/chunks/4079.75a5db02e1a11105.js +0 -1
- package/out/_next/static/chunks/438.dea6dada9bd4b683.js +0 -1
- package/out/_next/static/chunks/4384-8a28a71e7e3b8d8a.js +0 -1
- package/out/_next/static/chunks/4637.6819aa53bf80d6ff.js +0 -1
- package/out/_next/static/chunks/4816.03f53c476d2a5924.js +0 -1
- package/out/_next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
- package/out/_next/static/chunks/5202.6f686702cbb58a65.js +0 -1
- package/out/_next/static/chunks/5464.4c916df2382b5ba9.js +0 -1
- package/out/_next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
- package/out/_next/static/chunks/5644.b4ffa0632405fc9f.js +0 -1
- package/out/_next/static/chunks/5a7b57ef.d0702578743545b0.js +0 -1
- package/out/_next/static/chunks/60.40ff539d26f28401.js +0 -1
- package/out/_next/static/chunks/6101.a35579324b3356df.js +0 -1
- package/out/_next/static/chunks/6194.045435de6d19fc72.js +0 -1
- package/out/_next/static/chunks/6772-fba69ba8e4fa1ef4.js +0 -1
- package/out/_next/static/chunks/6778.7885dc0a314c5a9c.js +0 -1
- package/out/_next/static/chunks/6790-f4527d80153a3e25.js +0 -1
- package/out/_next/static/chunks/7005-09e42f99859b8d03.js +0 -1
- package/out/_next/static/chunks/7109-c8d3fde4c3b6798e.js +0 -1
- package/out/_next/static/chunks/7195.2768b2bb31a65f2f.js +0 -1
- package/out/_next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
- package/out/_next/static/chunks/7f5d3f51-659399fe6f04b9eb.js +0 -1
- package/out/_next/static/chunks/8264-a1b0376ff4b3d4da.js +0 -1
- package/out/_next/static/chunks/828-ef0e36f29db31dde.js +0 -1
- package/out/_next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
- package/out/_next/static/chunks/8720.e06d4cca843573db.js +0 -1
- package/out/_next/static/chunks/8785.1331b2a6d4be82c3.js +0 -1
- package/out/_next/static/chunks/8829-386c887227aab68c.js +0 -1
- package/out/_next/static/chunks/9054.ae9ffec47aacae76.js +0 -1
- package/out/_next/static/chunks/9097.1efc23284d82765c.js +0 -1
- package/out/_next/static/chunks/9231.af30fa4fedab9f01.js +0 -1
- package/out/_next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
- package/out/_next/static/chunks/9600.f70c0583d23764a8.js +0 -1
- package/out/_next/static/chunks/9822.0ad553e5c697208c.js +0 -1
- package/out/_next/static/chunks/9930.28415573db2b7806.js +0 -7
- package/out/_next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
- package/out/_next/static/chunks/d57e5a30-463f9ed8df724792.js +0 -1
- package/out/_next/static/chunks/eb6e03f4.2276f931f02e235c.js +0 -1
- package/out/_next/static/chunks/f4df0e03.56d1c15b5532ab26.js +0 -1
- package/out/_next/static/chunks/framework-6cc1bceeaaf75e91.js +0 -1
- package/out/_next/static/chunks/main-da37322a396d572a.js +0 -1
- package/out/_next/static/chunks/pages/_app-d40841fd52b70886.js +0 -1
- package/out/_next/static/chunks/pages/_error-c36fa6f7fd569cf6.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/logs-350f383eed1cf3f8.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]/v/[version]-175a58a05deb2eda.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-7c7c2526e7d63883.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-f447208842a47b40.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]-ea20e2daae1794fc.js +0 -1
- package/out/_next/static/chunks/pages/domains-71179cbdb719a0f8.js +0 -1
- package/out/_next/static/chunks/pages/events/[name]/logs-695c5b2cfd996539.js +0 -1
- package/out/_next/static/chunks/pages/events/[name]/v/[version]-af687afaafd7fd45.js +0 -1
- package/out/_next/static/chunks/pages/events/[name]-24bc568718357116.js +0 -1
- package/out/_next/static/chunks/pages/events-05ca59359ab07aa2.js +0 -1
- package/out/_next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
- package/out/_next/static/chunks/pages/overview-68b31b232c5ef1ff.js +0 -1
- package/out/_next/static/chunks/pages/services/[name]-b59b95836832898e.js +0 -1
- package/out/_next/static/chunks/pages/services-2c63507ae596def3.js +0 -1
- package/out/_next/static/chunks/pages/users/[id]-7306f8a1d8a7012a.js +0 -1
- package/out/_next/static/chunks/pages/users-412f257b1de51363.js +0 -1
- package/out/_next/static/chunks/pages/visualiser-8474d03175cf9d12.js +0 -1
- package/out/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
- package/out/_next/static/chunks/webpack-7e93d0cba2ccf996.js +0 -1
- package/out/_next/static/css/7e14b4dede1671ad.css +0 -1
- package/out/_next/static/css/94b9a747218712b2.css +0 -3
- package/out/_next/static/css/ae8abf3666c55019.css +0 -5
- package/out/_next/static/css/cc3c8fcadcf7a58b.css +0 -1
- package/out/_next/static/css/deb57cf90a65a90f.css +0 -1
- package/out/_next/static/css/ed97de5465a152bb.css +0 -1
- package/out/_next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js +0 -1
- package/out/_next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.js +0 -1
- package/out/domains/Orders/events/OrderComplete/index.html +0 -40
- package/out/domains/Orders/events/OrderComplete/logs/index.html +0 -1
- package/out/domains/Orders/events/OrderConfirmed/index.html +0 -40
- package/out/domains/Orders/events/OrderConfirmed/logs/index.html +0 -1
- package/out/domains/Orders/events/OrderCreated/index.html +0 -2
- package/out/domains/Orders/events/OrderCreated/logs/index.html +0 -1
- package/out/domains/Orders/events/OrderRequested/index.html +0 -40
- package/out/domains/Orders/events/OrderRequested/logs/index.html +0 -1
- package/out/domains/Orders/index.html +0 -2
- package/out/domains/Orders/services/Orders Service/index.html +0 -2
- package/out/domains/Shopping/events/AddedItemToCart/index.html +0 -65
- package/out/domains/Shopping/events/AddedItemToCart/logs/index.html +0 -1
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.1/index.html +0 -59
- package/out/domains/Shopping/events/AddedItemToCart/v/0.0.2/index.html +0 -66
- package/out/domains/Shopping/events/RemovedItemFromCart/index.html +0 -48
- package/out/domains/Shopping/events/RemovedItemFromCart/logs/index.html +0 -1
- package/out/domains/Shopping/index.html +0 -2
- package/out/domains/index.html +0 -3
- package/out/events/PaymentProcessed/index.html +0 -44
- package/out/events/PaymentProcessed/logs/index.html +0 -1
- package/out/events/ShipmentDelivered/index.html +0 -44
- package/out/events/ShipmentDelivered/logs/index.html +0 -1
- package/out/events/ShipmentDispatched/index.html +0 -44
- package/out/events/ShipmentDispatched/logs/index.html +0 -1
- package/out/events/ShipmentPrepared/index.html +0 -2
- package/out/events/ShipmentPrepared/logs/index.html +0 -1
- package/out/events/index.html +0 -11
- package/out/favicon.ico +0 -0
- package/out/index.html +0 -1
- package/out/logo-random.svg +0 -114
- package/out/logo.svg +0 -44
- package/out/opengraph.png +0 -0
- package/out/overview/index.html +0 -1
- package/out/services/Orders Service/index.html +0 -1
- package/out/services/Payment Service/index.html +0 -2
- package/out/services/Shipping Service/index.html +0 -2
- package/out/services/index.html +0 -4
- package/out/users/dboyne/index.html +0 -16
- package/out/users/index.html +0 -1
- package/out/users/mSmith/index.html +0 -13
- package/out/visualiser/index.html +0 -16
- package/pages/_app.tsx +0 -111
- package/pages/_document.tsx +0 -18
- package/pages/domains/[domain]/events/[name]/logs.tsx +0 -35
- package/pages/domains/[domain]/events/[name]/v/[version].tsx +0 -39
- package/pages/domains/[domain]/events/[name].tsx +0 -46
- package/pages/domains/[domain]/index.tsx +0 -137
- package/pages/domains/[domain]/services/[name].tsx +0 -42
- package/pages/domains.tsx +0 -210
- package/pages/events/[name]/logs.tsx +0 -177
- package/pages/events/[name]/v/[version].tsx +0 -38
- package/pages/events/[name].tsx +0 -223
- package/pages/events.tsx +0 -357
- package/pages/index.tsx +0 -56
- package/pages/overview.tsx +0 -89
- package/pages/services/[name].tsx +0 -164
- package/pages/services.tsx +0 -311
- package/pages/users/[id].tsx +0 -101
- package/pages/users.tsx +0 -43
- package/pages/visualiser.tsx +0 -322
- package/postcss.config.js +0 -6
- package/public/logo-random.svg +0 -114
- package/public/logo.svg +0 -44
- package/scripts/__tests__/assets/eventcatalog.config.js +0 -32
- package/scripts/__tests__/generate.spec.ts +0 -36
- package/scripts/generate.js +0 -28
- package/scripts/move-schemas-for-download.js +0 -80
- package/styles/Home.module.css +0 -116
- package/styles/globals.css +0 -85
- package/tailwind.config.js +0 -36
- package/types/index.ts +0 -7
- package/utils/random-bg.ts +0 -13
- /package/{lib/__tests__/assets/services/Payment Service/openapi.yaml → public/openapi.yml} +0 -0
package/lib/events.ts
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import type { Event, Service } from '@eventcatalog/types';
|
|
2
|
-
import compareVersions from 'compare-versions';
|
|
3
|
-
import * as Diff from 'diff';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import { serialize } from 'next-mdx-remote/serialize';
|
|
6
|
-
import path from 'path';
|
|
7
|
-
import { MarkdownFile } from '@/types/index';
|
|
8
|
-
import { getLastModifiedDateOfFile, getSchemaFromDir, readMarkdownFile, getOpenAPISpecFromDir } from '@/lib/file-reader';
|
|
9
|
-
import { getAllDomains, getAllEventsFromDomains } from './domains';
|
|
10
|
-
import { extentionToLanguageMap } from './file-reader';
|
|
11
|
-
import { getAllServices, hydrateEventProducersAndConsumers } from './services';
|
|
12
|
-
|
|
13
|
-
const parseEventFrontMatterIntoEvent = (eventFrontMatter: any): Event => {
|
|
14
|
-
const {
|
|
15
|
-
name,
|
|
16
|
-
version,
|
|
17
|
-
summary,
|
|
18
|
-
domain = null,
|
|
19
|
-
producers = [],
|
|
20
|
-
consumers = [],
|
|
21
|
-
owners = [],
|
|
22
|
-
externalLinks = [],
|
|
23
|
-
badges = [],
|
|
24
|
-
tags = [],
|
|
25
|
-
} = eventFrontMatter;
|
|
26
|
-
return {
|
|
27
|
-
name,
|
|
28
|
-
version,
|
|
29
|
-
summary,
|
|
30
|
-
domain,
|
|
31
|
-
producerNames: producers,
|
|
32
|
-
consumerNames: consumers,
|
|
33
|
-
owners,
|
|
34
|
-
externalLinks,
|
|
35
|
-
badges,
|
|
36
|
-
tags,
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const versionsForEvents = (pathToEvent) => {
|
|
41
|
-
const versionsDir = path.join(pathToEvent, 'versioned');
|
|
42
|
-
|
|
43
|
-
if (fs.existsSync(versionsDir)) {
|
|
44
|
-
const files = fs.readdirSync(versionsDir);
|
|
45
|
-
return files.sort(compareVersions).reverse();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return [];
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const getLogsForEvent = ({ eventName, domain }: { eventName: string; domain?: string }) => {
|
|
52
|
-
let eventsDir = path.join(process.env.PROJECT_DIR, 'events');
|
|
53
|
-
|
|
54
|
-
if (domain) {
|
|
55
|
-
eventsDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'events');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const historicVersions = versionsForEvents(path.join(eventsDir, eventName));
|
|
59
|
-
|
|
60
|
-
const allVersions = historicVersions.map((version) => ({
|
|
61
|
-
version,
|
|
62
|
-
pathToDir: path.join(eventsDir, eventName, 'versioned', version),
|
|
63
|
-
}));
|
|
64
|
-
|
|
65
|
-
// Get the latest version
|
|
66
|
-
const { data: { version: latestVersion } = {} } = readMarkdownFile(path.join(eventsDir, eventName, 'index.md'));
|
|
67
|
-
|
|
68
|
-
// Add the current version to the list
|
|
69
|
-
allVersions.unshift({ version: latestVersion, pathToDir: path.join(eventsDir, eventName) });
|
|
70
|
-
|
|
71
|
-
const versions = allVersions.reduce((diffs, versionData, index) => {
|
|
72
|
-
const hasVersionToCompareToo = !!allVersions[index + 1];
|
|
73
|
-
const previousVersionData = allVersions[index + 1];
|
|
74
|
-
|
|
75
|
-
// Check if both files have the schema to compare against...
|
|
76
|
-
if (hasVersionToCompareToo) {
|
|
77
|
-
const { version, pathToDir } = versionData;
|
|
78
|
-
const { version: previousVersion, pathToDir: previousVersionPathToDir } = previousVersionData;
|
|
79
|
-
const schema = getSchemaFromDir(pathToDir);
|
|
80
|
-
const previousSchema = getSchemaFromDir(previousVersionPathToDir);
|
|
81
|
-
let changelog = null;
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
const { content } = readMarkdownFile(path.join(previousVersionPathToDir, 'changelog.md'));
|
|
85
|
-
changelog = content;
|
|
86
|
-
} catch (error) {
|
|
87
|
-
// nothing found it's OK.
|
|
88
|
-
console.log('No changelog found');
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const comparision = {
|
|
92
|
-
versions: [previousVersion, version],
|
|
93
|
-
changelog: {
|
|
94
|
-
content: changelog,
|
|
95
|
-
},
|
|
96
|
-
value:
|
|
97
|
-
schema && previousSchema
|
|
98
|
-
? Diff.createTwoFilesPatch(
|
|
99
|
-
`schema.${schema.extension} (${previousVersion})`,
|
|
100
|
-
`schema.${previousSchema.extension} (${version})`,
|
|
101
|
-
previousSchema.snippet,
|
|
102
|
-
schema.snippet
|
|
103
|
-
)
|
|
104
|
-
: null,
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
diffs.push(comparision);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return diffs;
|
|
111
|
-
}, []);
|
|
112
|
-
|
|
113
|
-
const parseChangeLogs = versions.map(async (version) => {
|
|
114
|
-
if (version.changelog.content) {
|
|
115
|
-
const mdxSource = await serialize(version.changelog.content);
|
|
116
|
-
return {
|
|
117
|
-
...version,
|
|
118
|
-
changelog: {
|
|
119
|
-
...version.changelog,
|
|
120
|
-
source: mdxSource,
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
return version;
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
const values = Promise.all(parseChangeLogs);
|
|
128
|
-
|
|
129
|
-
return values;
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
const getEventExamplesFromDir = (pathToExamples) => {
|
|
133
|
-
let examples;
|
|
134
|
-
|
|
135
|
-
// Get examples for directory
|
|
136
|
-
try {
|
|
137
|
-
const files = fs.readdirSync(pathToExamples);
|
|
138
|
-
examples = files.map((filename) => {
|
|
139
|
-
const content = fs.readFileSync(path.join(pathToExamples, filename), {
|
|
140
|
-
encoding: 'utf-8',
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
const extension = filename.split('.').pop();
|
|
144
|
-
|
|
145
|
-
return {
|
|
146
|
-
name: filename,
|
|
147
|
-
snippet: content,
|
|
148
|
-
langugage: extentionToLanguageMap[extension] || extension,
|
|
149
|
-
};
|
|
150
|
-
});
|
|
151
|
-
} catch (error) {
|
|
152
|
-
examples = [];
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return examples;
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
export const getEventByPath = (eventDir: string, hydrateWithProducersAndConsumers?: boolean): Event => {
|
|
159
|
-
const { data } = readMarkdownFile(path.join(eventDir, 'index.md'));
|
|
160
|
-
const historicVersions = versionsForEvents(path.join(eventDir));
|
|
161
|
-
|
|
162
|
-
const event = parseEventFrontMatterIntoEvent(data);
|
|
163
|
-
|
|
164
|
-
if (hydrateWithProducersAndConsumers) {
|
|
165
|
-
const services = getAllServices();
|
|
166
|
-
const consumersAndProducersAsServices = hydrateEventProducersAndConsumers(event, services);
|
|
167
|
-
return {
|
|
168
|
-
...event,
|
|
169
|
-
historicVersions,
|
|
170
|
-
...consumersAndProducersAsServices,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return {
|
|
175
|
-
...event,
|
|
176
|
-
historicVersions,
|
|
177
|
-
};
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
export const getAllEventsFromPath = (eventsDir: string, hydrateEvents?: boolean): Event[] => {
|
|
181
|
-
if (!fs.existsSync(eventsDir)) return [];
|
|
182
|
-
const folders = fs.readdirSync(eventsDir);
|
|
183
|
-
return folders.map((folder) => getEventByPath(path.join(eventsDir, folder), hydrateEvents));
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
export const getAllEvents = ({ hydrateEvents }: { hydrateEvents?: boolean } = {}): Event[] => {
|
|
187
|
-
const allEventsFromDomainFolders = getAllEventsFromDomains(hydrateEvents);
|
|
188
|
-
const eventsWithoutDomains = getAllEventsFromPath(path.join(process.env.PROJECT_DIR, 'events'), hydrateEvents);
|
|
189
|
-
|
|
190
|
-
const events = [...eventsWithoutDomains, ...allEventsFromDomainFolders];
|
|
191
|
-
const sortedEvents = events.sort((a, b) => a.name.localeCompare(b.name));
|
|
192
|
-
|
|
193
|
-
return sortedEvents;
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
export const getAllOwners = async (): Promise<string[]> => {
|
|
197
|
-
const allDomains = await getAllDomains();
|
|
198
|
-
const allEvents = getAllEvents();
|
|
199
|
-
const allServices = getAllServices();
|
|
200
|
-
const allOwnersInDomains = allDomains.reduce((owners, file) => owners.concat(file.domain.owners), []);
|
|
201
|
-
const allOwnersInEvents = allEvents.reduce((owners, event) => owners.concat(event.owners), []);
|
|
202
|
-
const allOwnersInServices = allServices.reduce((owners, service) => owners.concat(service.owners), []);
|
|
203
|
-
const allOwnersDocumented = [].concat(allOwnersInDomains, allOwnersInEvents, allOwnersInServices);
|
|
204
|
-
// @ts-ignore
|
|
205
|
-
return [...new Set(allOwnersDocumented)];
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
export const getAllEventsAndVersionsFlattened = () => {
|
|
209
|
-
const allEvents = getAllEvents();
|
|
210
|
-
return allEvents.reduce((eventsWithVersionsFlattened: any, event: Event) => {
|
|
211
|
-
// eventsWithVersionsFlattened.push({ eventName: event.name, version: event.version })
|
|
212
|
-
|
|
213
|
-
if (event.historicVersions) {
|
|
214
|
-
event.historicVersions.forEach((version) =>
|
|
215
|
-
eventsWithVersionsFlattened.push({ eventName: event.name, version, domain: event.domain })
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return eventsWithVersionsFlattened;
|
|
220
|
-
}, []);
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
export const getEventByName = async ({
|
|
224
|
-
eventName,
|
|
225
|
-
version,
|
|
226
|
-
domain,
|
|
227
|
-
}: {
|
|
228
|
-
eventName: string;
|
|
229
|
-
version?: string;
|
|
230
|
-
domain?: string;
|
|
231
|
-
}): Promise<{ event: Event; markdown: MarkdownFile }> => {
|
|
232
|
-
let eventsDir = path.join(process.env.PROJECT_DIR, 'events');
|
|
233
|
-
|
|
234
|
-
if (domain) {
|
|
235
|
-
eventsDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'events');
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
const eventDirectory = path.join(eventsDir, eventName);
|
|
239
|
-
let versionDirectory = null;
|
|
240
|
-
|
|
241
|
-
if (version) {
|
|
242
|
-
versionDirectory = path.join(eventsDir, eventName, 'versioned', version);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
const directoryToLoadForEvent = version ? versionDirectory : eventDirectory;
|
|
246
|
-
|
|
247
|
-
try {
|
|
248
|
-
const { data, content } = readMarkdownFile(path.join(directoryToLoadForEvent, `index.md`));
|
|
249
|
-
const event = parseEventFrontMatterIntoEvent(data);
|
|
250
|
-
const services = getAllServices();
|
|
251
|
-
const consumersAndProducersAsServices = hydrateEventProducersAndConsumers(event, services);
|
|
252
|
-
|
|
253
|
-
const mdxSource = await serialize(content);
|
|
254
|
-
|
|
255
|
-
return {
|
|
256
|
-
event: {
|
|
257
|
-
...event,
|
|
258
|
-
...consumersAndProducersAsServices,
|
|
259
|
-
domain: domain || null,
|
|
260
|
-
openAPISpec: getOpenAPISpecFromDir(eventDirectory),
|
|
261
|
-
historicVersions: versionsForEvents(eventDirectory),
|
|
262
|
-
schema: getSchemaFromDir(directoryToLoadForEvent),
|
|
263
|
-
examples: getEventExamplesFromDir(path.join(directoryToLoadForEvent, `examples`)),
|
|
264
|
-
},
|
|
265
|
-
markdown: {
|
|
266
|
-
content,
|
|
267
|
-
source: mdxSource,
|
|
268
|
-
lastModifiedDate: getLastModifiedDateOfFile(path.join(directoryToLoadForEvent, `index.md`)),
|
|
269
|
-
},
|
|
270
|
-
};
|
|
271
|
-
} catch (error) {
|
|
272
|
-
console.log(error);
|
|
273
|
-
console.log('Failed to get event by name', eventName);
|
|
274
|
-
return Promise.reject();
|
|
275
|
-
}
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
export const getUniqueServicesNamesFromEvents = (events: Event[]) => {
|
|
279
|
-
const allConsumersAndProducers = events.reduce((domains, event) => {
|
|
280
|
-
const { consumerNames = [], producerNames = [] } = event;
|
|
281
|
-
return domains.concat(consumerNames).concat(producerNames);
|
|
282
|
-
}, []);
|
|
283
|
-
|
|
284
|
-
const data = allConsumersAndProducers.map((service) => service);
|
|
285
|
-
|
|
286
|
-
// @ts-ignore
|
|
287
|
-
return [...new Set(data)];
|
|
288
|
-
};
|
|
289
|
-
|
|
290
|
-
export const getAllEventsByOwnerId = async (ownerId) => {
|
|
291
|
-
const events = await getAllEvents();
|
|
292
|
-
return events.filter(({ owners = [] }) => owners.some((id) => id === ownerId));
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
export const getAllEventsThatHaveRelationshipWithService = (
|
|
296
|
-
service: Service,
|
|
297
|
-
events: Event[]
|
|
298
|
-
): { publishes: Event[]; subscribes: Event[] } => {
|
|
299
|
-
const relationshipsBetweenEvents = events.reduce(
|
|
300
|
-
(data, event) => {
|
|
301
|
-
const serviceSubscribesToEvent = event.consumerNames.some((id) => id === service.name);
|
|
302
|
-
const servicePublishesEvent = event.producerNames.some((id) => id === service.name);
|
|
303
|
-
|
|
304
|
-
return {
|
|
305
|
-
publishes: servicePublishesEvent ? data.publishes.concat(event) : data.publishes,
|
|
306
|
-
subscribes: serviceSubscribesToEvent ? data.subscribes.concat(event) : data.subscribes,
|
|
307
|
-
};
|
|
308
|
-
},
|
|
309
|
-
{ publishes: [], subscribes: [] }
|
|
310
|
-
);
|
|
311
|
-
|
|
312
|
-
return relationshipsBetweenEvents;
|
|
313
|
-
};
|
package/lib/file-reader.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import type { Schema } from '@eventcatalog/types';
|
|
4
|
-
import matter from 'gray-matter';
|
|
5
|
-
|
|
6
|
-
// https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/AVAILABLE_LANGUAGES_HLJS.MD
|
|
7
|
-
export const extentionToLanguageMap = {
|
|
8
|
-
cs: 'csharp',
|
|
9
|
-
js: 'javascript',
|
|
10
|
-
json: 'json',
|
|
11
|
-
yml: 'yml',
|
|
12
|
-
java: 'java',
|
|
13
|
-
pb: 'protobuf',
|
|
14
|
-
proto: 'protobuf',
|
|
15
|
-
thrift: 'thrift',
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export const readMarkdownFile = (pathToFile: string) => {
|
|
19
|
-
const file = fs.readFileSync(pathToFile, {
|
|
20
|
-
encoding: 'utf-8',
|
|
21
|
-
});
|
|
22
|
-
return matter(file);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export const getSchemaFromDir = (pathToSchemaDir: string): Schema => {
|
|
26
|
-
try {
|
|
27
|
-
const files = fs.readdirSync(pathToSchemaDir);
|
|
28
|
-
|
|
29
|
-
// See if any schemas are in there, ignoring extension
|
|
30
|
-
const schemaFileName = files.find((fileName) => fileName.includes('schema'));
|
|
31
|
-
if (!schemaFileName) throw new Error('No schema found');
|
|
32
|
-
|
|
33
|
-
const schemaFile = fs.readFileSync(path.join(pathToSchemaDir, schemaFileName), 'utf-8');
|
|
34
|
-
const extension = schemaFileName.split('.').pop();
|
|
35
|
-
|
|
36
|
-
return {
|
|
37
|
-
snippet: `${schemaFile}`,
|
|
38
|
-
language: extentionToLanguageMap[extension] || extension,
|
|
39
|
-
extension,
|
|
40
|
-
};
|
|
41
|
-
} catch (error) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export const getOpenAPISpecFromDir = (pathToOpenAPISpecDir: string): string => {
|
|
47
|
-
try {
|
|
48
|
-
const files = fs.readdirSync(pathToOpenAPISpecDir);
|
|
49
|
-
|
|
50
|
-
// See if any oas are in there, ignoring extension
|
|
51
|
-
const openAPIFileName = files.find((fileName) => fileName.includes('openapi'));
|
|
52
|
-
if (!openAPIFileName) throw new Error('No schema found');
|
|
53
|
-
return fs.readFileSync(path.join(pathToOpenAPISpecDir, openAPIFileName), 'utf-8');
|
|
54
|
-
} catch (error) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export const getAsyncAPISpecFromDir = (pathToAsyncAPISpecDir: string): string => {
|
|
60
|
-
try {
|
|
61
|
-
const files = fs.readdirSync(pathToAsyncAPISpecDir);
|
|
62
|
-
|
|
63
|
-
// See if any oas are in there, ignoring extension
|
|
64
|
-
const asyncAPIFile = files.find((fileName) => fileName.includes('asyncapi'));
|
|
65
|
-
if (!asyncAPIFile) throw new Error('No async api file found');
|
|
66
|
-
return fs.readFileSync(path.join(pathToAsyncAPISpecDir, asyncAPIFile), 'utf-8');
|
|
67
|
-
} catch (error) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const getLastModifiedDateOfFile = (filePath) => {
|
|
73
|
-
const stats = fs.statSync(filePath);
|
|
74
|
-
const lastModifiedDate = new Date(stats.mtime);
|
|
75
|
-
return `${lastModifiedDate.getFullYear()}/${lastModifiedDate.getMonth() + 1}/${lastModifiedDate.getDate()}`;
|
|
76
|
-
};
|
package/lib/graphs.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import type { Event, Service } from '@eventcatalog/types';
|
|
2
|
-
import getConfig from 'next/config';
|
|
3
|
-
|
|
4
|
-
const MAX_LENGTH_FOR_NODES = '50';
|
|
5
|
-
const { publicRuntimeConfig: { basePath = '' } = {} } = getConfig();
|
|
6
|
-
|
|
7
|
-
const truncateNode = (value) => (value.length > MAX_LENGTH_FOR_NODES ? `${value.substring(0, MAX_LENGTH_FOR_NODES)}...` : value);
|
|
8
|
-
const generateLink = (value, type, domain?) => {
|
|
9
|
-
const url = `/${domain ? `domains/${domain}/` : ''}${type}/${value}`;
|
|
10
|
-
return basePath ? `${basePath}${url}` : url;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Build Mermaid graph output
|
|
15
|
-
* @param centerNode
|
|
16
|
-
* @param leftNodes
|
|
17
|
-
* @param rightNodes
|
|
18
|
-
* @param rootNodeColor
|
|
19
|
-
*/
|
|
20
|
-
const buildMermaid = (centerNode, leftNodes, rightNodes, rootNodeColor) => `flowchart LR\n
|
|
21
|
-
${leftNodes.map((node) => `l-${node.id}[${node.name}]:::producer-->${centerNode.id}[${centerNode.name}]:::event\n`).join('')}
|
|
22
|
-
classDef event stroke:${rootNodeColor},stroke-width: 4px;\n
|
|
23
|
-
classDef producer stroke:#75d7b6,stroke-width: 2px;\n
|
|
24
|
-
classDef consumer stroke:#818cf8,stroke-width: 2px;\n
|
|
25
|
-
${rightNodes.map((node) => `${centerNode.id}[${centerNode.name}]:::event-->r-${node.id}[${node.name}]:::consumer\n`).join('')}
|
|
26
|
-
${leftNodes.map((node) => `click l-${node.id} href "${node.link}" "Go to ${node.name}" _self\n`).join('')}
|
|
27
|
-
${rightNodes.map((node) => `click r-${node.id} href "${node.link}" "Go to ${node.name}" _self\n`).join('')}
|
|
28
|
-
click ${centerNode.id} href "${centerNode.link}" "Go to ${centerNode.name}" _self\n
|
|
29
|
-
`;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Builds a graph for a given event
|
|
33
|
-
* @param {Event} event
|
|
34
|
-
* @param {string} rootNodeColor of the root node
|
|
35
|
-
* @returns {string} Mermaid Graph
|
|
36
|
-
*/
|
|
37
|
-
export const buildMermaidFlowChartForEvent = (
|
|
38
|
-
{ name: eventName, producerNames, consumerNames, producers = [], consumers = [], domain }: Event,
|
|
39
|
-
rootNodeColor = '#2563eb'
|
|
40
|
-
) => {
|
|
41
|
-
// Transforms services & event into a graph model
|
|
42
|
-
const leftNodes = producerNames.map(truncateNode).map((node) => ({
|
|
43
|
-
id: node.replace(/ /g, '_'),
|
|
44
|
-
name: node,
|
|
45
|
-
link: generateLink(node, 'services', producers.find((producer) => producer.name === node)?.domain),
|
|
46
|
-
}));
|
|
47
|
-
const rightNodes = consumerNames.map(truncateNode).map((node) => ({
|
|
48
|
-
id: node.replace(/ /g, '_'),
|
|
49
|
-
name: node,
|
|
50
|
-
link: generateLink(node, 'services', consumers.find((consumer) => consumer.name === node)?.domain),
|
|
51
|
-
}));
|
|
52
|
-
const centerNode = {
|
|
53
|
-
id: truncateNode(eventName.replace(/ /g, '_')),
|
|
54
|
-
name: eventName,
|
|
55
|
-
link: generateLink(eventName, 'events', domain),
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
return buildMermaid(centerNode, leftNodes, rightNodes, rootNodeColor);
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Builds a graph for a given service
|
|
63
|
-
* @param {Service} service
|
|
64
|
-
* @param {string} rootNodeColor of the root node
|
|
65
|
-
* @returns {string} Mermaid Graph
|
|
66
|
-
*/
|
|
67
|
-
export const buildMermaidFlowChartForService = (
|
|
68
|
-
{ publishes, subscribes, name: serviceName, domain }: Service,
|
|
69
|
-
rootNodeColor = '#2563eb'
|
|
70
|
-
) => {
|
|
71
|
-
// Transforms services & event into a graph model
|
|
72
|
-
const leftNodes = subscribes
|
|
73
|
-
.map((event) => ({ event, truncatedName: truncateNode(event.name) }))
|
|
74
|
-
.map(({ event, truncatedName }) => ({
|
|
75
|
-
id: truncatedName.replace(/ /g, '_'),
|
|
76
|
-
name: truncatedName,
|
|
77
|
-
link: generateLink(event.name, 'events', event.domain),
|
|
78
|
-
}));
|
|
79
|
-
const rightNodes = publishes
|
|
80
|
-
.map((event) => ({ event, truncatedName: truncateNode(event.name) }))
|
|
81
|
-
.map(({ event, truncatedName }) => ({
|
|
82
|
-
id: truncatedName.replace(/ /g, '_'),
|
|
83
|
-
name: truncatedName,
|
|
84
|
-
link: generateLink(event.name, 'events', event.domain),
|
|
85
|
-
}));
|
|
86
|
-
const centerNode = {
|
|
87
|
-
id: truncateNode(serviceName.replace(/ /g, '_')),
|
|
88
|
-
name: serviceName,
|
|
89
|
-
link: generateLink(serviceName, 'services', domain),
|
|
90
|
-
};
|
|
91
|
-
return buildMermaid(centerNode, leftNodes, rightNodes, rootNodeColor);
|
|
92
|
-
};
|
package/lib/services.ts
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { serialize } from 'next-mdx-remote/serialize';
|
|
4
|
-
import { Service, Event } from '@eventcatalog/types';
|
|
5
|
-
import { readMarkdownFile, getLastModifiedDateOfFile, getOpenAPISpecFromDir, getAsyncAPISpecFromDir } from '@/lib/file-reader';
|
|
6
|
-
import { MarkdownFile } from '../types/index';
|
|
7
|
-
|
|
8
|
-
import { getAllEvents, getAllEventsThatHaveRelationshipWithService } from '@/lib/events';
|
|
9
|
-
import { getAllServicesFromDomains } from '@/lib/domains';
|
|
10
|
-
|
|
11
|
-
const buildService = (eventFrontMatter: any): Service => {
|
|
12
|
-
const {
|
|
13
|
-
name,
|
|
14
|
-
summary,
|
|
15
|
-
domain = null,
|
|
16
|
-
owners = [],
|
|
17
|
-
repository = {},
|
|
18
|
-
tags = [],
|
|
19
|
-
externalLinks = [],
|
|
20
|
-
badges = [],
|
|
21
|
-
} = eventFrontMatter;
|
|
22
|
-
return { name, summary, domain, owners, repository, tags, externalLinks, badges };
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
export const getServiceByPath = (serviceDirPath: string): Service => {
|
|
26
|
-
const { data } = readMarkdownFile(path.join(serviceDirPath, 'index.md'));
|
|
27
|
-
return buildService(data);
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const getAllServicesFromPath = (serviceDir: string): Service[] => {
|
|
31
|
-
if (!fs.existsSync(serviceDir)) return [];
|
|
32
|
-
const folders = fs.readdirSync(serviceDir);
|
|
33
|
-
const events = getAllEvents();
|
|
34
|
-
const services = folders.map((folder) => getServiceByPath(path.join(serviceDir, folder)));
|
|
35
|
-
|
|
36
|
-
// // @ts-ignore
|
|
37
|
-
return services.map((service) => ({
|
|
38
|
-
...service,
|
|
39
|
-
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
40
|
-
}));
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export const getAllServices = (): Service[] => {
|
|
44
|
-
const allServicesFromDomainFolders = getAllServicesFromDomains();
|
|
45
|
-
const servicesWithoutDomains = getAllServicesFromPath(path.join(process.env.PROJECT_DIR, 'services'));
|
|
46
|
-
|
|
47
|
-
const services = [...allServicesFromDomainFolders, ...servicesWithoutDomains];
|
|
48
|
-
const sortedServices = services.sort((a, b) => a.name.localeCompare(b.name));
|
|
49
|
-
return sortedServices;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
|
|
53
|
-
const services = await getAllServices();
|
|
54
|
-
const servicesOwnedByUser = services.filter((service) => service.owners.some((id) => id === ownerId));
|
|
55
|
-
return servicesOwnedByUser.map((service) => ({
|
|
56
|
-
...service,
|
|
57
|
-
}));
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export const getServiceByName = async ({
|
|
61
|
-
serviceName,
|
|
62
|
-
domain = null,
|
|
63
|
-
}: {
|
|
64
|
-
serviceName: string;
|
|
65
|
-
domain?: string;
|
|
66
|
-
}): Promise<{ service: Service; markdown: MarkdownFile }> => {
|
|
67
|
-
try {
|
|
68
|
-
let servicesDir = path.join(process.env.PROJECT_DIR, 'services');
|
|
69
|
-
|
|
70
|
-
if (domain) {
|
|
71
|
-
servicesDir = path.join(process.env.PROJECT_DIR, 'domains', domain, 'services');
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const serviceDirectory = path.join(servicesDir, serviceName);
|
|
75
|
-
const { data, content } = readMarkdownFile(path.join(serviceDirectory, `index.md`));
|
|
76
|
-
const service = buildService(data);
|
|
77
|
-
|
|
78
|
-
const events = getAllEvents();
|
|
79
|
-
|
|
80
|
-
const mdxSource = await serialize(content);
|
|
81
|
-
|
|
82
|
-
return {
|
|
83
|
-
// @ts-ignore
|
|
84
|
-
service: {
|
|
85
|
-
...service,
|
|
86
|
-
domain,
|
|
87
|
-
openAPISpec: getOpenAPISpecFromDir(serviceDirectory),
|
|
88
|
-
asyncAPISpec: getAsyncAPISpecFromDir(serviceDirectory),
|
|
89
|
-
...getAllEventsThatHaveRelationshipWithService(service, events),
|
|
90
|
-
},
|
|
91
|
-
markdown: {
|
|
92
|
-
content,
|
|
93
|
-
lastModifiedDate: getLastModifiedDateOfFile(path.join(serviceDirectory, `index.md`)),
|
|
94
|
-
source: mdxSource,
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
} catch (error) {
|
|
98
|
-
console.log('Failed to get service by name', serviceName);
|
|
99
|
-
return Promise.reject();
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
export const hydrateEventProducersAndConsumers = (
|
|
104
|
-
event: Event,
|
|
105
|
-
services: Service[]
|
|
106
|
-
): { producers: Service[]; consumers: Service[] } => {
|
|
107
|
-
const findServiceByName = (name) => services.find((service) => service.name === name);
|
|
108
|
-
|
|
109
|
-
const hydratedProducers = event.producerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
110
|
-
const producersWithNoMarkdown = event.producerNames
|
|
111
|
-
.filter((name) => !hydratedProducers.some((producer) => producer.name === name))
|
|
112
|
-
.map((name) => ({ name }));
|
|
113
|
-
|
|
114
|
-
const hydratedConsumers = event.consumerNames.map((name) => findServiceByName(name)).filter((service) => !!service);
|
|
115
|
-
const consumersWithNoMarkdown = event.consumerNames
|
|
116
|
-
.filter((name) => !hydratedConsumers.some((consumer) => consumer.name === name))
|
|
117
|
-
.map((name) => ({ name }));
|
|
118
|
-
|
|
119
|
-
const producers = hydratedProducers.concat(producersWithNoMarkdown as Service[]);
|
|
120
|
-
const consumers = hydratedConsumers.concat(consumersWithNoMarkdown as Service[]);
|
|
121
|
-
|
|
122
|
-
return {
|
|
123
|
-
producers: producers.length > 0 ? producers : [],
|
|
124
|
-
consumers: consumers.length > 0 ? consumers : [],
|
|
125
|
-
};
|
|
126
|
-
};
|
package/next-env.d.ts
DELETED
package/next.config.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
2
|
-
const config = require('./eventcatalog.config');
|
|
3
|
-
|
|
4
|
-
module.exports = {
|
|
5
|
-
reactStrictMode: true,
|
|
6
|
-
basePath: config.basePath,
|
|
7
|
-
trailingSlash: config.trailingSlash,
|
|
8
|
-
publicRuntimeConfig: {
|
|
9
|
-
basePath: config.basePath,
|
|
10
|
-
},
|
|
11
|
-
};
|
package/out/404/index.html
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="description" content="Discover, Explore and Document your Event Driven Architectures"/><link rel="icon" href="/favicon.ico"/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog"/><meta property="og:description" content="Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><title>404: This page could not be found</title><meta name="next-head-count" content="15"/><script src="//unpkg.com/three@0.145.0/build/three.min.js"></script><script src="//unpkg.com/three@0.145.0/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><link rel="preload" href="/_next/static/css/94b9a747218712b2.css" as="style"/><link rel="stylesheet" href="/_next/static/css/94b9a747218712b2.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-7e93d0cba2ccf996.js" defer=""></script><script src="/_next/static/chunks/framework-6cc1bceeaaf75e91.js" defer=""></script><script src="/_next/static/chunks/main-da37322a396d572a.js" defer=""></script><script src="/_next/static/chunks/pages/_app-d40841fd52b70886.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c36fa6f7fd569cf6.js" defer=""></script><script src="/_next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js" defer=""></script><script src="/_next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.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="/users/">Users</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="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>
|
|
2
|
-
body { margin: 0; color: #000; background: #fff; }
|
|
3
|
-
.next-error-h1 {
|
|
4
|
-
border-right: 1px solid rgba(0, 0, 0, .3);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@media (prefers-color-scheme: dark) {
|
|
8
|
-
body { color: #fff; background: #000; }
|
|
9
|
-
.next-error-h1 {
|
|
10
|
-
border-right: 1px solid rgba(255, 255, 255, .3);
|
|
11
|
-
}
|
|
12
|
-
}</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">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:49px;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 © <!-- -->2024<!-- --> <!-- -->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":"rP51t_ISuRqZMVs4QvwfY","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
package/out/404.html
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="description" content="Discover, Explore and Document your Event Driven Architectures"/><link rel="icon" href="/favicon.ico"/><meta property="og:url" content="https://eventcatalog.dev/"/><meta property="og:type" content="website"/><meta property="og:title" content="EventCatalog"/><meta property="og:description" content="Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png"/><meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="600"/><meta property="og:locale" content="en-GB"/><meta name="author" content="David Boyne"/><title>404: This page could not be found</title><meta name="next-head-count" content="15"/><script src="//unpkg.com/three@0.145.0/build/three.min.js"></script><script src="//unpkg.com/three@0.145.0/examples/js/renderers/CSS2DRenderer.js"></script><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"/><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"/><link rel="preload" href="/_next/static/css/94b9a747218712b2.css" as="style"/><link rel="stylesheet" href="/_next/static/css/94b9a747218712b2.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-7e93d0cba2ccf996.js" defer=""></script><script src="/_next/static/chunks/framework-6cc1bceeaaf75e91.js" defer=""></script><script src="/_next/static/chunks/main-da37322a396d572a.js" defer=""></script><script src="/_next/static/chunks/pages/_app-d40841fd52b70886.js" defer=""></script><script src="/_next/static/chunks/pages/_error-c36fa6f7fd569cf6.js" defer=""></script><script src="/_next/static/rP51t_ISuRqZMVs4QvwfY/_buildManifest.js" defer=""></script><script src="/_next/static/rP51t_ISuRqZMVs4QvwfY/_ssgManifest.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="/users/">Users</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="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>
|
|
2
|
-
body { margin: 0; color: #000; background: #fff; }
|
|
3
|
-
.next-error-h1 {
|
|
4
|
-
border-right: 1px solid rgba(0, 0, 0, .3);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
@media (prefers-color-scheme: dark) {
|
|
8
|
-
body { color: #fff; background: #000; }
|
|
9
|
-
.next-error-h1 {
|
|
10
|
-
border-right: 1px solid rgba(255, 255, 255, .3);
|
|
11
|
-
}
|
|
12
|
-
}</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">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:49px;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 © <!-- -->2024<!-- --> <!-- -->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":"rP51t_ISuRqZMVs4QvwfY","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|