@eventcatalog/core 1.2.7 → 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 -577
- 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 -2112
- 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/1093.67f04e0e6b50c9e5.js +0 -1
- package/.next/static/chunks/1178-c3c8c74ac08d7c77.js +0 -1
- package/.next/static/chunks/1254.a78e9444e102b061.js +0 -1
- package/.next/static/chunks/130.fa515915f80e17f9.js +0 -1
- package/.next/static/chunks/1318.a5349c1b3da2b184.js +0 -1
- package/.next/static/chunks/1415.55c7c89ef0a8aab1.js +0 -1
- package/.next/static/chunks/1455-8df9e334899797b2.js +0 -1
- package/.next/static/chunks/172-940ad0353b57ff98.js +0 -1
- package/.next/static/chunks/1733.1bead33faaa9eeb0.js +0 -1
- package/.next/static/chunks/1806.3ed762ab3ecedc9d.js +0 -1
- package/.next/static/chunks/2157.cd3aa9fee64d976e.js +0 -1
- package/.next/static/chunks/2566.4084969752c613a9.js +0 -1
- package/.next/static/chunks/2620-21775e17d8a6a407.js +0 -1
- package/.next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
- package/.next/static/chunks/3116-446dd88b93c44018.js +0 -1
- package/.next/static/chunks/3193.f69abc67598575a9.js +0 -1
- package/.next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
- package/.next/static/chunks/3271.83723868c9b8e7c1.js +0 -1
- package/.next/static/chunks/3287.f50c49237cef9ae8.js +0 -1
- package/.next/static/chunks/39a9cf3f.8cc8ac3887be2999.js +0 -1
- package/.next/static/chunks/3ede58a6.44fda8e0e5284248.js +0 -1
- package/.next/static/chunks/40.16abe9d3c57256d6.js +0 -1
- package/.next/static/chunks/407.3078ab29e8d18c02.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/4466.dc03dbcd026995cc.js +0 -1
- package/.next/static/chunks/4737.ae583b848d202a93.js +0 -1
- package/.next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
- package/.next/static/chunks/5092.8ead508f86f4b11c.js +0 -1
- package/.next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
- package/.next/static/chunks/5835.a9405ab0913544df.js +0 -1
- package/.next/static/chunks/6067.cc75c37618cf0147.js +0 -1
- package/.next/static/chunks/6121.758a43c0db92ca23.js +0 -1
- package/.next/static/chunks/6229.7a9f0c8b204b76dc.js +0 -1
- package/.next/static/chunks/6487.44c6e83c098ed47f.js +0 -1
- package/.next/static/chunks/6582.06af6897be0d24b3.js +0 -1
- package/.next/static/chunks/6724.ed1280c926906c76.js +0 -1
- package/.next/static/chunks/6772-fc6143a6584acf9b.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/7374.a673e317f007d3b6.js +0 -1
- package/.next/static/chunks/74030e57.9636ad3c5c96940b.js +0 -1
- package/.next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
- package/.next/static/chunks/7469.d932a6b01168373b.js +0 -1
- package/.next/static/chunks/7636.9eaf88a09c2a88ed.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-1a4a120d2fbea802.js +0 -1
- package/.next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
- package/.next/static/chunks/8470.c811187bd2982a8a.js +0 -1
- package/.next/static/chunks/9076.0a13d7d5aab7bfa1.js +0 -1
- package/.next/static/chunks/9097.1efc23284d82765c.js +0 -1
- package/.next/static/chunks/9270.a4c64e6be4a278a4.js +0 -1
- package/.next/static/chunks/9404.a44dfe8858add605.js +0 -1
- package/.next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
- package/.next/static/chunks/9930.28415573db2b7806.js +0 -7
- package/.next/static/chunks/b2f22a9c-0216e9400ac0ac1c.js +0 -1
- package/.next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
- package/.next/static/chunks/eb6e03f4.3dd8d555aebe18ff.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]-45b0d7bc42f6f81c.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/events/[name]-15bb0ef487953fa1.js +0 -1
- package/.next/static/chunks/pages/domains/[domain]/services/[name]-a4857d4d0aa4d04b.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]-b718302d7185dcb0.js +0 -1
- package/.next/static/chunks/pages/events/[name]-8cb0b3b469bd7845.js +0 -1
- package/.next/static/chunks/pages/events-83c9161a6e696533.js +0 -1
- package/.next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
- package/.next/static/chunks/pages/overview-4251cc856f776fc2.js +0 -1
- package/.next/static/chunks/pages/services/[name]-7030da24d73a8ea3.js +0 -1
- package/.next/static/chunks/pages/services-7069c0a5295e53ae.js +0 -1
- package/.next/static/chunks/pages/users/[id]-00aeace648436383.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-1ea4cabfc6778694.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/wZIh57Hs672ULoPeUaYa1/_buildManifest.js +0 -1
- package/.next/static/wZIh57Hs672ULoPeUaYa1/_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/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderComplete/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderComplete.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderConfirmed/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderConfirmed.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderCreated/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderCreated.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderRequested/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/events/OrderRequested.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders/services/Orders Service.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Orders.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/v/0.0.1.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart/v/0.0.2.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/AddedItemToCart.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/RemovedItemFromCart/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping/events/RemovedItemFromCart.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains/Shopping.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/domains.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/PaymentProcessed/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/PaymentProcessed.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDelivered/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDelivered.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDispatched/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentDispatched.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentPrepared/logs.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events/ShipmentPrepared.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/events.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/overview.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Orders Service.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Payment Service.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services/Shipping Service.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/services.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/users/dboyne.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/users/mSmith.json +0 -1
- package/out/_next/data/wZIh57Hs672ULoPeUaYa1/visualiser.json +0 -1
- package/out/_next/static/chunks/020d8314.2bae2f29ef0060e4.js +0 -1
- package/out/_next/static/chunks/1093.67f04e0e6b50c9e5.js +0 -1
- package/out/_next/static/chunks/1178-c3c8c74ac08d7c77.js +0 -1
- package/out/_next/static/chunks/1254.a78e9444e102b061.js +0 -1
- package/out/_next/static/chunks/130.fa515915f80e17f9.js +0 -1
- package/out/_next/static/chunks/1318.a5349c1b3da2b184.js +0 -1
- package/out/_next/static/chunks/1415.55c7c89ef0a8aab1.js +0 -1
- package/out/_next/static/chunks/1455-8df9e334899797b2.js +0 -1
- package/out/_next/static/chunks/172-940ad0353b57ff98.js +0 -1
- package/out/_next/static/chunks/1733.1bead33faaa9eeb0.js +0 -1
- package/out/_next/static/chunks/1806.3ed762ab3ecedc9d.js +0 -1
- package/out/_next/static/chunks/2157.cd3aa9fee64d976e.js +0 -1
- package/out/_next/static/chunks/2566.4084969752c613a9.js +0 -1
- package/out/_next/static/chunks/2620-21775e17d8a6a407.js +0 -1
- package/out/_next/static/chunks/2edb282b-45c56c19221816df.js +0 -1
- package/out/_next/static/chunks/3116-446dd88b93c44018.js +0 -1
- package/out/_next/static/chunks/3193.f69abc67598575a9.js +0 -1
- package/out/_next/static/chunks/3260.00ac1405e82b8dd9.js +0 -1
- package/out/_next/static/chunks/3271.83723868c9b8e7c1.js +0 -1
- package/out/_next/static/chunks/3287.f50c49237cef9ae8.js +0 -1
- package/out/_next/static/chunks/39a9cf3f.8cc8ac3887be2999.js +0 -1
- package/out/_next/static/chunks/3ede58a6.44fda8e0e5284248.js +0 -1
- package/out/_next/static/chunks/40.16abe9d3c57256d6.js +0 -1
- package/out/_next/static/chunks/407.3078ab29e8d18c02.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/4466.dc03dbcd026995cc.js +0 -1
- package/out/_next/static/chunks/4737.ae583b848d202a93.js +0 -1
- package/out/_next/static/chunks/5048.73fa7a6d734ba5ef.js +0 -1
- package/out/_next/static/chunks/5092.8ead508f86f4b11c.js +0 -1
- package/out/_next/static/chunks/5493-b00dc3d50ab46716.js +0 -1
- package/out/_next/static/chunks/5835.a9405ab0913544df.js +0 -1
- package/out/_next/static/chunks/6067.cc75c37618cf0147.js +0 -1
- package/out/_next/static/chunks/6121.758a43c0db92ca23.js +0 -1
- package/out/_next/static/chunks/6229.7a9f0c8b204b76dc.js +0 -1
- package/out/_next/static/chunks/6487.44c6e83c098ed47f.js +0 -1
- package/out/_next/static/chunks/6582.06af6897be0d24b3.js +0 -1
- package/out/_next/static/chunks/6724.ed1280c926906c76.js +0 -1
- package/out/_next/static/chunks/6772-fc6143a6584acf9b.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/7374.a673e317f007d3b6.js +0 -1
- package/out/_next/static/chunks/74030e57.9636ad3c5c96940b.js +0 -1
- package/out/_next/static/chunks/7458.1de01a44cd67f6f0.js +0 -1
- package/out/_next/static/chunks/7469.d932a6b01168373b.js +0 -1
- package/out/_next/static/chunks/7636.9eaf88a09c2a88ed.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-1a4a120d2fbea802.js +0 -1
- package/out/_next/static/chunks/8341-b8d844d6f606aed5.js +0 -1
- package/out/_next/static/chunks/8470.c811187bd2982a8a.js +0 -1
- package/out/_next/static/chunks/9076.0a13d7d5aab7bfa1.js +0 -1
- package/out/_next/static/chunks/9097.1efc23284d82765c.js +0 -1
- package/out/_next/static/chunks/9270.a4c64e6be4a278a4.js +0 -1
- package/out/_next/static/chunks/9404.a44dfe8858add605.js +0 -1
- package/out/_next/static/chunks/9497.49670ee9a8bd76f7.js +0 -1
- package/out/_next/static/chunks/9930.28415573db2b7806.js +0 -7
- package/out/_next/static/chunks/b2f22a9c-0216e9400ac0ac1c.js +0 -1
- package/out/_next/static/chunks/b9e0c7b4-52b02c0d4f161186.js +0 -1
- package/out/_next/static/chunks/eb6e03f4.3dd8d555aebe18ff.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]-45b0d7bc42f6f81c.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/events/[name]-15bb0ef487953fa1.js +0 -1
- package/out/_next/static/chunks/pages/domains/[domain]/services/[name]-a4857d4d0aa4d04b.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]-b718302d7185dcb0.js +0 -1
- package/out/_next/static/chunks/pages/events/[name]-8cb0b3b469bd7845.js +0 -1
- package/out/_next/static/chunks/pages/events-83c9161a6e696533.js +0 -1
- package/out/_next/static/chunks/pages/index-68062a10328e7d10.js +0 -1
- package/out/_next/static/chunks/pages/overview-4251cc856f776fc2.js +0 -1
- package/out/_next/static/chunks/pages/services/[name]-7030da24d73a8ea3.js +0 -1
- package/out/_next/static/chunks/pages/services-7069c0a5295e53ae.js +0 -1
- package/out/_next/static/chunks/pages/users/[id]-00aeace648436383.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-1ea4cabfc6778694.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/wZIh57Hs672ULoPeUaYa1/_buildManifest.js +0 -1
- package/out/_next/static/wZIh57Hs672ULoPeUaYa1/_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
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
3
|
+
import ReactFlow, { Background, ConnectionLineType, Controls, Panel, ReactFlowProvider, type Edge, type Node } from 'reactflow';
|
|
4
|
+
import 'reactflow/dist/style.css';
|
|
5
|
+
import ServiceNode from './Nodes/Service';
|
|
6
|
+
import EventNode from './Nodes/Event';
|
|
7
|
+
import CommandNode from './Nodes/Command';
|
|
8
|
+
import type { CollectionEntry } from 'astro:content';
|
|
9
|
+
import { navigate } from 'astro:transitions/client';
|
|
10
|
+
import type { CollectionTypes } from '@types';
|
|
11
|
+
import DownloadButton from './DownloadButton';
|
|
12
|
+
|
|
13
|
+
interface Props {
|
|
14
|
+
nodes: any;
|
|
15
|
+
edges: any;
|
|
16
|
+
title?: string;
|
|
17
|
+
subtitle?: string;
|
|
18
|
+
includeBackground?: boolean;
|
|
19
|
+
includeControls?: boolean;
|
|
20
|
+
linkTo: 'docs' | 'visualiser';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const getDocUrlForCollection = (collectionItem: CollectionEntry<CollectionTypes>) => {
|
|
24
|
+
return `/docs/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}`;
|
|
25
|
+
};
|
|
26
|
+
const getVisualiserUrlForCollection = (collectionItem: CollectionEntry<CollectionTypes>) => {
|
|
27
|
+
return `/visualiser/${collectionItem.collection}/${collectionItem.data.id}/${collectionItem.data.version}`;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// const NodeGraphBuilder = ({ title, subtitle, includeBackground = true, includeControls = true }: Props) => {
|
|
31
|
+
const NodeGraphBuilder = ({ nodes, edges, title, includeBackground = true, linkTo = 'docs' }: Props) => {
|
|
32
|
+
// const { fitView, viewportInitialized } = useReactFlow();
|
|
33
|
+
|
|
34
|
+
// const nodeTypes = useMemo(() => ({ service: ServiceNode, event: EventNode, command: CommandNode }), []);
|
|
35
|
+
const nodeTypes = useMemo(() => ({ services: ServiceNode, events: EventNode, commands: CommandNode }), []);
|
|
36
|
+
const nodeOrigin = [0.5, 0.5];
|
|
37
|
+
|
|
38
|
+
const handleNodeClick = (_: any, node: Node) => {
|
|
39
|
+
if (node.type === 'events' || node.type === 'commands') {
|
|
40
|
+
// return (window.location.href = linkTo === 'docs' ? getDocUrlForCollection(node.data.message) : getVisualiserUrlForCollection(node.data.message));
|
|
41
|
+
navigate(linkTo === 'docs' ? getDocUrlForCollection(node.data.message) : getVisualiserUrlForCollection(node.data.message));
|
|
42
|
+
}
|
|
43
|
+
if (node.type === 'services') {
|
|
44
|
+
navigate(linkTo === 'docs' ? getDocUrlForCollection(node.data.service) : getVisualiserUrlForCollection(node.data.service));
|
|
45
|
+
// return (window.location.href = linkTo === 'docs' ? getDocUrlForCollection(node.data.service) : getVisualiserUrlForCollection(node.data.service));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
<ReactFlow
|
|
52
|
+
nodeTypes={nodeTypes}
|
|
53
|
+
nodes={nodes}
|
|
54
|
+
edges={edges}
|
|
55
|
+
fitView
|
|
56
|
+
nodesDraggable
|
|
57
|
+
connectionLineType={ConnectionLineType.SmoothStep}
|
|
58
|
+
// @ts-ignore
|
|
59
|
+
nodeOrigin={nodeOrigin}
|
|
60
|
+
onNodeClick={handleNodeClick}
|
|
61
|
+
>
|
|
62
|
+
{title && (
|
|
63
|
+
<Panel position="top-right">
|
|
64
|
+
<span className="block shadow-sm bg-white text-xl z-10 text-black px-4 py-2 border-gray-200 rounded-md border">
|
|
65
|
+
<strong>Visualiser</strong> | {title}
|
|
66
|
+
</span>
|
|
67
|
+
</Panel>
|
|
68
|
+
)}
|
|
69
|
+
<DownloadButton filename={title} addPadding={!!title} />
|
|
70
|
+
{includeBackground && <Background color="#bbb" gap={16} />}
|
|
71
|
+
{includeBackground && <Controls />}
|
|
72
|
+
<Panel position="bottom-right">
|
|
73
|
+
<div className=" bg-white font-light px-4 text-[14px] shadow-md py-1 rounded-md">
|
|
74
|
+
<span className="font-bold">Key</span>
|
|
75
|
+
<ul>
|
|
76
|
+
<li className="flex space-x-2 items-center text-[12px]">
|
|
77
|
+
<span className="w-2 h-2 bg-orange-500 block" />
|
|
78
|
+
<span className="block">Event</span>
|
|
79
|
+
</li>
|
|
80
|
+
<li className="flex space-x-2 items-center text-[12px]">
|
|
81
|
+
<span className="w-2 h-2 bg-pink-500 block" />
|
|
82
|
+
<span className="block">Service</span>
|
|
83
|
+
</li>
|
|
84
|
+
<li className="flex space-x-2 items-center text-[12px]">
|
|
85
|
+
<span className="w-2 h-2 bg-blue-500 block" />
|
|
86
|
+
<span className="block">Command</span>
|
|
87
|
+
</li>
|
|
88
|
+
</ul>
|
|
89
|
+
</div>
|
|
90
|
+
</Panel>
|
|
91
|
+
</ReactFlow>
|
|
92
|
+
);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
interface NodeGraphProps {
|
|
96
|
+
id: string;
|
|
97
|
+
title?: string;
|
|
98
|
+
href?: string;
|
|
99
|
+
hrefLabel?: string;
|
|
100
|
+
nodes: Node[];
|
|
101
|
+
edges: Edge[];
|
|
102
|
+
linkTo: 'docs' | 'visualiser';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const NodeGraph = ({ id, nodes, edges, title, href, linkTo = 'docs', hrefLabel = 'Open in visualiser' }: NodeGraphProps) => {
|
|
106
|
+
const [elem, setElem] = useState(null);
|
|
107
|
+
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
setElem(document.getElementById(`${id}-portal`));
|
|
111
|
+
}, []);
|
|
112
|
+
|
|
113
|
+
if (!elem) return null;
|
|
114
|
+
|
|
115
|
+
return (
|
|
116
|
+
<div>
|
|
117
|
+
{createPortal(
|
|
118
|
+
<ReactFlowProvider>
|
|
119
|
+
<NodeGraphBuilder edges={edges} nodes={nodes} title={title} linkTo={linkTo} />
|
|
120
|
+
|
|
121
|
+
{href && (
|
|
122
|
+
<div className="py-2 w-full text-right">
|
|
123
|
+
<a className=" text-sm no-underline py-2 text-gray-800 hover:text-purple-500" href={href}>
|
|
124
|
+
{hrefLabel} →
|
|
125
|
+
</a>
|
|
126
|
+
</div>
|
|
127
|
+
)}
|
|
128
|
+
</ReactFlowProvider>,
|
|
129
|
+
elem
|
|
130
|
+
)}
|
|
131
|
+
</div>
|
|
132
|
+
);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export default NodeGraph;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const NodeGraphPortal = (props: any) => {
|
|
2
|
+
return (
|
|
3
|
+
<div
|
|
4
|
+
className="h-[30em] my-6 mb-12 w-full relative border border-gray-200 rounded-md"
|
|
5
|
+
id={`${props.id}-portal`}
|
|
6
|
+
style={{
|
|
7
|
+
maxHeight: props.maxHeight ? `${props.maxHeight}em` : `30em`,
|
|
8
|
+
}}
|
|
9
|
+
>
|
|
10
|
+
{/* <span className="absolute top-2 right-4 bg-white font-bold z-10">{props.title}</span> */}
|
|
11
|
+
</div>
|
|
12
|
+
);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default NodeGraphPortal;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EnvelopeIcon } from '@heroicons/react/16/solid';
|
|
2
|
+
import type { CollectionEntry } from 'astro:content';
|
|
3
|
+
import { Handle } from 'reactflow';
|
|
4
|
+
|
|
5
|
+
interface Data {
|
|
6
|
+
title: string;
|
|
7
|
+
label: string;
|
|
8
|
+
bgColor: string;
|
|
9
|
+
color: string;
|
|
10
|
+
mode: 'simple' | 'full';
|
|
11
|
+
message: CollectionEntry<'commands'>;
|
|
12
|
+
showTarget?: boolean;
|
|
13
|
+
showSource?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function classNames(...classes: any) {
|
|
17
|
+
return classes.filter(Boolean).join(' ');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default function CommandNode({ data, sourcePosition, targetPosition }: any) {
|
|
21
|
+
const { mode, message, showSource = true, showTarget = true } = data as Data;
|
|
22
|
+
|
|
23
|
+
const { name, version, summary, owners = [], producers = [], consumers = [] } = message.data;
|
|
24
|
+
|
|
25
|
+
const renderTarget = showTarget || (targetPosition && producers.length > 0);
|
|
26
|
+
const renderSource = showSource || (sourcePosition && consumers.length > 0);
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-blue-400')}>
|
|
30
|
+
<div
|
|
31
|
+
className={classNames(
|
|
32
|
+
'bg-gradient-to-b from-blue-500 to-blue-700 relative flex items-center w-5 justify-center rounded-l-sm text-blue-100-500',
|
|
33
|
+
`border-r-[1px] border-blue-500`
|
|
34
|
+
)}
|
|
35
|
+
>
|
|
36
|
+
<EnvelopeIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
|
|
37
|
+
{mode === 'full' && (
|
|
38
|
+
<span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
|
|
39
|
+
Command
|
|
40
|
+
</span>
|
|
41
|
+
)}
|
|
42
|
+
</div>
|
|
43
|
+
<div className="p-1">
|
|
44
|
+
{renderTarget && <Handle type="target" position={targetPosition} />}
|
|
45
|
+
{renderSource && <Handle type="source" position={sourcePosition} />}
|
|
46
|
+
<div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
|
|
47
|
+
<span className="text-xs font-bold block pb-0.5">{name}</span>
|
|
48
|
+
<div className="flex justify-between">
|
|
49
|
+
<span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
|
|
50
|
+
{mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Command</span>}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
{mode === 'full' && (
|
|
54
|
+
<div className="divide-y divide-gray-200 ">
|
|
55
|
+
<div className="leading-3 py-1">
|
|
56
|
+
<span className="text-[8px] font-light">{summary}</span>
|
|
57
|
+
</div>
|
|
58
|
+
<div className="grid grid-cols-2 gap-x-4 py-1">
|
|
59
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
60
|
+
Producers: {producers.length}
|
|
61
|
+
</span>
|
|
62
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
63
|
+
Consumers: {consumers.length}
|
|
64
|
+
</span>
|
|
65
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
66
|
+
Owners: {owners.length}
|
|
67
|
+
</span>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
)}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EnvelopeIcon } from '@heroicons/react/16/solid';
|
|
2
|
+
import type { CollectionEntry } from 'astro:content';
|
|
3
|
+
import { Handle } from 'reactflow';
|
|
4
|
+
|
|
5
|
+
interface Data {
|
|
6
|
+
title: string;
|
|
7
|
+
label: string;
|
|
8
|
+
bgColor: string;
|
|
9
|
+
color: string;
|
|
10
|
+
mode: 'simple' | 'full';
|
|
11
|
+
message: CollectionEntry<'events'>;
|
|
12
|
+
showTarget?: boolean;
|
|
13
|
+
showSource?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function classNames(...classes: any) {
|
|
17
|
+
return classes.filter(Boolean).join(' ');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default function EventNode({ data, sourcePosition, targetPosition }: any) {
|
|
21
|
+
const { mode, message, showTarget = true, showSource = true } = data as Data;
|
|
22
|
+
|
|
23
|
+
const { name, version, summary, owners = [], producers = [], consumers = [] } = message.data;
|
|
24
|
+
|
|
25
|
+
const renderTarget = showTarget || (targetPosition && producers.length > 0);
|
|
26
|
+
const renderSource = showSource || (sourcePosition && consumers.length > 0);
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-orange-400')}>
|
|
30
|
+
<div
|
|
31
|
+
className={classNames(
|
|
32
|
+
'bg-gradient-to-b from-orange-500 to-orange-700 relative flex items-center w-5 justify-center rounded-l-sm text-orange-100-500',
|
|
33
|
+
`border-r-[1px] border-orange-500`
|
|
34
|
+
)}
|
|
35
|
+
>
|
|
36
|
+
<EnvelopeIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
|
|
37
|
+
{mode === 'full' && (
|
|
38
|
+
<span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
|
|
39
|
+
Event
|
|
40
|
+
</span>
|
|
41
|
+
)}
|
|
42
|
+
</div>
|
|
43
|
+
<div className="p-1">
|
|
44
|
+
{renderTarget && <Handle type="target" position={targetPosition} />}
|
|
45
|
+
{renderSource && <Handle type="source" position={sourcePosition} />}
|
|
46
|
+
<div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
|
|
47
|
+
<span className="text-xs font-bold block pb-0.5">{name}</span>
|
|
48
|
+
<div className="flex justify-between">
|
|
49
|
+
<span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
|
|
50
|
+
{mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Event</span>}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
{mode === 'full' && (
|
|
54
|
+
<div className="divide-y divide-gray-200 ">
|
|
55
|
+
<div className="leading-3 py-1">
|
|
56
|
+
<span className="text-[8px] font-light">{summary}</span>
|
|
57
|
+
</div>
|
|
58
|
+
<div className="grid grid-cols-2 gap-x-4 py-1">
|
|
59
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
60
|
+
Producers: {producers.length}
|
|
61
|
+
</span>
|
|
62
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
63
|
+
Consumers: {consumers.length}
|
|
64
|
+
</span>
|
|
65
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
66
|
+
Owners: {owners.length}
|
|
67
|
+
</span>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
)}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ServerIcon } from '@heroicons/react/16/solid';
|
|
2
|
+
import type { CollectionEntry } from 'astro:content';
|
|
3
|
+
import { Handle } from 'reactflow';
|
|
4
|
+
|
|
5
|
+
interface Data {
|
|
6
|
+
label: string;
|
|
7
|
+
bgColor: string;
|
|
8
|
+
color: string;
|
|
9
|
+
mode: 'simple' | 'full';
|
|
10
|
+
service: CollectionEntry<'services'>;
|
|
11
|
+
showTarget?: boolean;
|
|
12
|
+
showSource?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function classNames(...classes: any) {
|
|
16
|
+
return classes.filter(Boolean).join(' ');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default function ServiceNode({ data, sourcePosition, targetPosition }: any) {
|
|
20
|
+
const { label, bgColor = 'bg-blue-500', mode, service, showTarget = true, showSource = true } = data as Data;
|
|
21
|
+
|
|
22
|
+
const { version, owners = [], sends = [], receives = [], name } = service.data;
|
|
23
|
+
|
|
24
|
+
const renderTarget = showTarget;
|
|
25
|
+
const renderSource = showSource;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div className={classNames('w-full rounded-md border flex justify-start bg-white text-black border-pink-500')}>
|
|
29
|
+
<div
|
|
30
|
+
className={classNames(
|
|
31
|
+
'bg-gradient-to-b from-pink-500 to-pink-700 relative flex items-center w-5 justify-center rounded-l-sm text-red-100-500',
|
|
32
|
+
`border-r-[1px] border-pink-500`
|
|
33
|
+
)}
|
|
34
|
+
>
|
|
35
|
+
<ServerIcon className="w-4 h-4 opacity-90 text-white absolute top-1 " />
|
|
36
|
+
{mode === 'full' && (
|
|
37
|
+
<span className="rotate -rotate-90 w-1/2 text-center absolute bottom-1 text-[9px] text-white font-bold uppercase tracking-[3px] ">
|
|
38
|
+
Service
|
|
39
|
+
</span>
|
|
40
|
+
)}
|
|
41
|
+
</div>
|
|
42
|
+
<div className="p-1">
|
|
43
|
+
{showTarget && <Handle type="target" position={targetPosition} />}
|
|
44
|
+
{showSource && <Handle type="source" position={sourcePosition} />}
|
|
45
|
+
{/* {mode === 'full' && (
|
|
46
|
+
<div className="flex justify-end font-thin space-x-1 border-b border-orange-200 pb-0.5 " style={{ fontSize: '0.2em' }}>
|
|
47
|
+
<span>Service</span>
|
|
48
|
+
<ServerIcon className="w-2 h-2 opacity-90" />
|
|
49
|
+
</div>
|
|
50
|
+
)} */}
|
|
51
|
+
<div className={classNames(mode === 'full' ? `border-b border-gray-200` : '')}>
|
|
52
|
+
<span className="text-xs font-bold block pt-0.5 pb-0.5">{name}</span>
|
|
53
|
+
<div className="flex justify-between">
|
|
54
|
+
<span className="text-[10px] font-light block pt-0.5 pb-0.5 ">v{version}</span>
|
|
55
|
+
{mode === 'simple' && <span className="text-[10px] text-gray-500 font-light block pt-0.5 pb-0.5 ">Service</span>}
|
|
56
|
+
</div>
|
|
57
|
+
{/* <div className="flex justify-end">
|
|
58
|
+
<span className="text-[8px] text-gray-500 font-light block pt-0.5 pb-0.5 ">View service</span>
|
|
59
|
+
</div> */}
|
|
60
|
+
</div>
|
|
61
|
+
{mode === 'full' && (
|
|
62
|
+
<div className="divide-y divide-gray-200 ">
|
|
63
|
+
<div className="leading-3 py-1">
|
|
64
|
+
<span className="text-[8px] font-light">{service.data.summary}</span>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div className="grid grid-cols-2 gap-x-4 py-1">
|
|
68
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
69
|
+
Receives messages: {receives.length}
|
|
70
|
+
</span>
|
|
71
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
72
|
+
Publishes messages: {sends.length}
|
|
73
|
+
</span>
|
|
74
|
+
<span className="text-xs" style={{ fontSize: '0.2em' }}>
|
|
75
|
+
Owners: {owners.length}
|
|
76
|
+
</span>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
)}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
);
|
|
83
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CollectionTypes } from '@types';
|
|
2
|
+
import type { CollectionEntry } from 'astro:content';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
|
|
6
|
+
const OpenAPI = (props: CollectionEntry<CollectionTypes>) => {
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
const collectionPath = props?.catalog?.path;
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
const publicPath = props?.catalog?.publicPath;
|
|
11
|
+
const fileName = 'openapi.yml';
|
|
12
|
+
|
|
13
|
+
const fileExists = existsSync(path.join(process.cwd(), 'public', publicPath, fileName));
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<div className="mb-4" id="openapi-component">
|
|
17
|
+
<span className="text-3xl font-bold">OpenAPI</span>
|
|
18
|
+
{!fileExists && (
|
|
19
|
+
<div className="text-sm text-red-500">
|
|
20
|
+
OpenAPI file not found. Put your OpenAPI file inside your {collectionPath} directory.
|
|
21
|
+
</div>
|
|
22
|
+
)}
|
|
23
|
+
{fileExists && (
|
|
24
|
+
<div>
|
|
25
|
+
This {props.collection.slice(0, -1)} has an OpenAPI file{' '}
|
|
26
|
+
<a className="text-purple-500" href={`/docs/${props.collection}/${props.data.id}/${props.data.version}/spec`}>
|
|
27
|
+
you can view here.
|
|
28
|
+
</a>
|
|
29
|
+
</div>
|
|
30
|
+
)}
|
|
31
|
+
</div>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default OpenAPI;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
const Schema = ({ file = 'schema.json', catalog, title }: any) => {
|
|
5
|
+
try {
|
|
6
|
+
const exists = fs.existsSync(path.join(catalog.filePath, file));
|
|
7
|
+
|
|
8
|
+
if (exists) {
|
|
9
|
+
const text = fs.readFileSync(path.join(catalog.filePath, file), 'utf-8');
|
|
10
|
+
return (
|
|
11
|
+
<div className="not-prose max-w-4xl overflow-x-auto">
|
|
12
|
+
<pre className="expressive-code" data-language="json">
|
|
13
|
+
<figure className="frame has-title">
|
|
14
|
+
<figcaption className="header">
|
|
15
|
+
{title && <span className="title">{title}</span>}
|
|
16
|
+
{!title && <span className="title">{file}</span>}
|
|
17
|
+
</figcaption>
|
|
18
|
+
<pre data-language="js">
|
|
19
|
+
<code>
|
|
20
|
+
<div className="ec-line">
|
|
21
|
+
<div className="code">{text}</div>
|
|
22
|
+
</div>
|
|
23
|
+
</code>
|
|
24
|
+
</pre>
|
|
25
|
+
<div className="copy">
|
|
26
|
+
<button title="Copy to clipboard" data-copied="Copied!" data-code={text}>
|
|
27
|
+
<div></div>
|
|
28
|
+
</button>
|
|
29
|
+
</div>
|
|
30
|
+
</figure>
|
|
31
|
+
</pre>
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
} else {
|
|
35
|
+
return (
|
|
36
|
+
<div className="italic">Tried to load schema from {path.join(catalog.filePath, file)}, but no schema can be found</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.log('Failed to load schema file', error);
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default Schema;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Astro components
|
|
2
|
+
|
|
3
|
+
// React components
|
|
4
|
+
import Schema from '@components/MDX/Schema';
|
|
5
|
+
import File from '@components/MDX/File';
|
|
6
|
+
import Accordion from '@components/MDX/Accordion/Accordion.astro';
|
|
7
|
+
import AccordionGroup from '@components/MDX/Accordion/AccordionGroup.astro';
|
|
8
|
+
import Admonition from '@components/MDX/Admonition';
|
|
9
|
+
import NodeGraphPortal from '@components/MDX/NodeGraph/NodeGraphPortal';
|
|
10
|
+
import OpenAPI from '@components/MDX/OpenAPI/OpenAPI';
|
|
11
|
+
|
|
12
|
+
const components = (props: any) => {
|
|
13
|
+
return {
|
|
14
|
+
AccordionGroup,
|
|
15
|
+
Accordion,
|
|
16
|
+
OpenAPI: (mdxProp: any) => <OpenAPI {...mdxProp} {...props} />,
|
|
17
|
+
Admonition: (mdxProp: any) => <Admonition {...mdxProp} {...props} />,
|
|
18
|
+
File: (mdxProp: any) => File({ ...props, ...mdxProp }),
|
|
19
|
+
Schema: (mdxProp: any) => Schema({ ...props, ...mdxProp }),
|
|
20
|
+
NodeGraph: (mdxProp: any) => NodeGraphPortal({ ...props.data, ...mdxProp }),
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default components;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
import PageFindSearch from 'astro-pagefind/components/Search';
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<div>
|
|
6
|
+
<div class="relative mt-2 flex items-center">
|
|
7
|
+
<input
|
|
8
|
+
id="search-dummy-input"
|
|
9
|
+
type="text"
|
|
10
|
+
name="search"
|
|
11
|
+
id="search"
|
|
12
|
+
placeholder="Search EventCatalog"
|
|
13
|
+
class="block w-full rounded-md caret-transparent border-0 py-1.5 pr-14 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 sm:text-sm sm:leading-6 px-4"
|
|
14
|
+
/>
|
|
15
|
+
<div class="absolute inset-y-0 right-0 flex py-1.5 pr-1.5">
|
|
16
|
+
<kbd class="inline-flex items-center rounded border border-gray-200 px-1 font-sans text-xs text-gray-400">⌘K</kbd>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<div id="search-dialog" class="hidden relative z-10" role="dialog" aria-modal="true">
|
|
22
|
+
<div class="fixed inset-0 bg-gray-500 bg-opacity-25 transition-opacity search-background backdrop-blur-sm bg-black/10"></div>
|
|
23
|
+
<div id="search-background" class="fixed inset-0 z-10 w-screen overflow-y-auto p-4 sm:p-6 md:p-20">
|
|
24
|
+
<div id="command-pal" class="mx-auto max-w-xl divide-y divide-gray-100 overflow-hidden rounded-xl bg-white shadow-2xl ring-1 ring-black ring-opacity-5 transition-all">
|
|
25
|
+
<div class="relative">
|
|
26
|
+
<svg class="pointer-events-none absolute left-4 top-3.5 h-5 w-5 text-gray-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
27
|
+
<path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd"></path>
|
|
28
|
+
</svg>
|
|
29
|
+
<PageFindSearch id="search" className="pagefind-ui" uiOptions={{ showImages: false }} />
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
const dummyInput = document.getElementById('search-dummy-input');
|
|
37
|
+
const dialog = document.getElementById('search-dialog');
|
|
38
|
+
|
|
39
|
+
// Listen for the short cut keys
|
|
40
|
+
window.addEventListener('keydown', (event) => {
|
|
41
|
+
if ((event.metaKey || event.ctrlKey) && event.key === 'k') {
|
|
42
|
+
event.preventDefault();
|
|
43
|
+
dummyInput?.click();
|
|
44
|
+
}
|
|
45
|
+
if(event.key === 'Escape') {
|
|
46
|
+
if(dialog){
|
|
47
|
+
dialog.style.display = 'none';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Fake input, to load the dialog
|
|
53
|
+
if (dummyInput) {
|
|
54
|
+
dummyInput.addEventListener('click', function (e) {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
this.blur();
|
|
57
|
+
const input = document.querySelector('.pagefind-ui__search-input');
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
input && input.focus();
|
|
61
|
+
}, 10);
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
dialog.style.display = 'block';
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Close it
|
|
68
|
+
dialog?.addEventListener('click', function (e) {
|
|
69
|
+
// @ts-ignore
|
|
70
|
+
if (e.target.id === 'search-background') {
|
|
71
|
+
dialog.style.display = 'none';
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// document.getElementById('search-dummy-input').addEventListener('click', function () {
|
|
76
|
+
// document.getElementById('search-dialog').style.display = 'block';
|
|
77
|
+
// });
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<style is:global>
|
|
81
|
+
.pagefind-ui__search-input,
|
|
82
|
+
#search-dummy-input {
|
|
83
|
+
outline: none;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.pagefind-ui__drawer {
|
|
87
|
+
padding: 0 1em !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.pagefind-ui__result {
|
|
91
|
+
padding: 0.5em 0 !important;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.pagefind-ui__results-area {
|
|
95
|
+
margin: 0 !important;
|
|
96
|
+
}
|
|
97
|
+
</style>
|
|
98
|
+
|
|
99
|
+
<!--
|
|
100
|
+
Command palette, show/hide based on modal state.
|
|
101
|
+
|
|
102
|
+
Entering: "ease-out duration-300"
|
|
103
|
+
From: "opacity-0 scale-95"
|
|
104
|
+
To: "opacity-100 scale-100"
|
|
105
|
+
Leaving: "ease-in duration-200"
|
|
106
|
+
From: "opacity-100 scale-100"
|
|
107
|
+
To: "opacity-0 scale-95"
|
|
108
|
+
-->
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEO } from 'astro-seo';
|
|
3
|
+
import config from '@config';
|
|
4
|
+
import defaultImageFile from '../../public/opengraph.png';
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
title = config.title,
|
|
8
|
+
description = config.tagline,
|
|
9
|
+
ogTitle = title,
|
|
10
|
+
ogType = 'website',
|
|
11
|
+
} = Astro.props;
|
|
12
|
+
|
|
13
|
+
const siteBaseURL = new URL(Astro.url);
|
|
14
|
+
const defaultImage = new URL(defaultImageFile.src, siteBaseURL);
|
|
15
|
+
|
|
16
|
+
let { image: _image } = Astro.props;
|
|
17
|
+
_image = _image || defaultImage;
|
|
18
|
+
|
|
19
|
+
let image = null;
|
|
20
|
+
if (typeof _image === 'string') {
|
|
21
|
+
image = new URL(_image, siteBaseURL);
|
|
22
|
+
} else if (_image && typeof _image['href'] !== 'undefined') {
|
|
23
|
+
image = new URL(_image['href'], siteBaseURL);
|
|
24
|
+
} else {
|
|
25
|
+
image = defaultImage;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<meta charset="UTF-8" />
|
|
31
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
32
|
+
<meta name="viewport" content="width=device-width" />
|
|
33
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
|
34
|
+
|
|
35
|
+
<SEO
|
|
36
|
+
title={title}
|
|
37
|
+
description={description}
|
|
38
|
+
openGraph={{
|
|
39
|
+
basic: {
|
|
40
|
+
url: config.homepageLink,
|
|
41
|
+
title: ogTitle,
|
|
42
|
+
type: ogType,
|
|
43
|
+
image: _image?.src ? _image.src : defaultImage.toString(),
|
|
44
|
+
},
|
|
45
|
+
image: {
|
|
46
|
+
url: image.toString(),
|
|
47
|
+
secureUrl: image.toString(),
|
|
48
|
+
alt: ogTitle,
|
|
49
|
+
height: _image?.height,
|
|
50
|
+
width: _image?.width,
|
|
51
|
+
type: _image?.format && `image/${_image.format}`,
|
|
52
|
+
},
|
|
53
|
+
}}
|
|
54
|
+
twitter={{
|
|
55
|
+
creator: '@liran_tal',
|
|
56
|
+
image: image ? image.toString() : undefined,
|
|
57
|
+
imageAlt: ogTitle,
|
|
58
|
+
title: ogTitle,
|
|
59
|
+
site: '@liran_tal',
|
|
60
|
+
description: description,
|
|
61
|
+
card: image ? 'summary_large_image' : 'summary',
|
|
62
|
+
}}
|
|
63
|
+
extend={{
|
|
64
|
+
meta: [
|
|
65
|
+
{
|
|
66
|
+
name: 'og:locale',
|
|
67
|
+
content: 'en_US',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'og:description',
|
|
71
|
+
content: description,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'og:site_name',
|
|
75
|
+
content: config.homepageLink,
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}}
|
|
79
|
+
/>
|