@eventcatalog/core 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/build-manifest.json +110 -0
  3. package/.next/cache/.tsbuildinfo +1 -0
  4. package/.next/cache/config.json +7 -0
  5. package/.next/cache/eslint/.cache_1bay4w0 +1 -0
  6. package/.next/cache/next-server.js.nft.json +1 -0
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/export-marker.json +1 -0
  12. package/.next/images-manifest.json +1 -0
  13. package/.next/next-server.js.nft.json +1 -0
  14. package/.next/prerender-manifest.json +1 -0
  15. package/.next/react-loadable-manifest.json +1717 -0
  16. package/.next/required-server-files.json +1 -0
  17. package/.next/routes-manifest.json +1 -0
  18. package/.next/server/chunks/237.js +116 -0
  19. package/.next/server/chunks/428.js +84 -0
  20. package/.next/server/chunks/47.js +51 -0
  21. package/.next/server/chunks/526.js +131 -0
  22. package/.next/server/chunks/565.js +121 -0
  23. package/.next/server/chunks/596.js +98 -0
  24. package/.next/server/chunks/730.js +324 -0
  25. package/.next/server/chunks/8.js +122 -0
  26. package/.next/server/chunks/938.js +109 -0
  27. package/.next/server/chunks/944.js +649 -0
  28. package/.next/server/chunks/959.js +286 -0
  29. package/.next/server/chunks/97.js +1837 -0
  30. package/.next/server/chunks/font-manifest.json +1 -0
  31. package/.next/server/font-manifest.json +1 -0
  32. package/.next/server/middleware-manifest.json +6 -0
  33. package/.next/server/pages/404.html +1 -0
  34. package/.next/server/pages/500.html +1 -0
  35. package/.next/server/pages/_app.js +370 -0
  36. package/.next/server/pages/_app.js.nft.json +1 -0
  37. package/.next/server/pages/_document.js +1004 -0
  38. package/.next/server/pages/_document.js.nft.json +1 -0
  39. package/.next/server/pages/_error.js +123 -0
  40. package/.next/server/pages/_error.js.nft.json +1 -0
  41. package/.next/server/pages/api/event/[name]/download.js +64 -0
  42. package/.next/server/pages/api/event/[name]/download.js.nft.json +1 -0
  43. package/.next/server/pages/events/AddedItemToCart.html +73 -0
  44. package/.next/server/pages/events/AddedItemToCart.json +1 -0
  45. package/.next/server/pages/events/OrderComplete.html +48 -0
  46. package/.next/server/pages/events/OrderComplete.json +1 -0
  47. package/.next/server/pages/events/OrderConfirmed.html +48 -0
  48. package/.next/server/pages/events/OrderConfirmed.json +1 -0
  49. package/.next/server/pages/events/OrderRequested.html +48 -0
  50. package/.next/server/pages/events/OrderRequested.json +1 -0
  51. package/.next/server/pages/events/PaymentProcessed.html +52 -0
  52. package/.next/server/pages/events/PaymentProcessed.json +1 -0
  53. package/.next/server/pages/events/RemovedItemFromCart.html +55 -0
  54. package/.next/server/pages/events/RemovedItemFromCart.json +1 -0
  55. package/.next/server/pages/events/ShipmentDelivered.html +53 -0
  56. package/.next/server/pages/events/ShipmentDelivered.json +1 -0
  57. package/.next/server/pages/events/ShipmentDispatched.html +52 -0
  58. package/.next/server/pages/events/ShipmentDispatched.json +1 -0
  59. package/.next/server/pages/events/ShipmentPrepared.html +52 -0
  60. package/.next/server/pages/events/ShipmentPrepared.json +1 -0
  61. package/.next/server/pages/events/[name]/logs.js +416 -0
  62. package/.next/server/pages/events/[name]/logs.js.nft.json +1 -0
  63. package/.next/server/pages/events/[name]/v/[version].js +274 -0
  64. package/.next/server/pages/events/[name]/v/[version].js.nft.json +1 -0
  65. package/.next/server/pages/events/[name].js +235 -0
  66. package/.next/server/pages/events/[name].js.nft.json +1 -0
  67. package/.next/server/pages/events.js +519 -0
  68. package/.next/server/pages/events.js.nft.json +1 -0
  69. package/.next/server/pages/index.html +1 -0
  70. package/.next/server/pages/index.js.nft.json +1 -0
  71. package/.next/server/pages/overview.js +240 -0
  72. package/.next/server/pages/overview.js.nft.json +1 -0
  73. package/.next/server/pages/services/Basket Service.html +11 -0
  74. package/.next/server/pages/services/Basket Service.json +1 -0
  75. package/.next/server/pages/services/Data Lake.html +12 -0
  76. package/.next/server/pages/services/Data Lake.json +1 -0
  77. package/.next/server/pages/services/Payment Service.html +10 -0
  78. package/.next/server/pages/services/Payment Service.json +1 -0
  79. package/.next/server/pages/services/Shipping Service.html +14 -0
  80. package/.next/server/pages/services/Shipping Service.json +1 -0
  81. package/.next/server/pages/services/[name].js +675 -0
  82. package/.next/server/pages/services/[name].js.nft.json +1 -0
  83. package/.next/server/pages/services.js +396 -0
  84. package/.next/server/pages/services.js.nft.json +1 -0
  85. package/.next/server/pages/users/[id].js +327 -0
  86. package/.next/server/pages/users/[id].js.nft.json +1 -0
  87. package/.next/server/pages-manifest.json +16 -0
  88. package/.next/server/webpack-api-runtime.js +160 -0
  89. package/.next/server/webpack-runtime.js +264 -0
  90. package/.next/static/chunks/020d8314.aea2d24215754e7b.js +1 -0
  91. package/.next/static/chunks/176cb4e4-8a0f6f010ef8accb.js +1 -0
  92. package/.next/static/chunks/236-0acd5083c102a9cb.js +1 -0
  93. package/.next/static/chunks/274-11c4d093341d7201.js +1 -0
  94. package/.next/static/chunks/336-5d9007a96aa8f2c7.js +1 -0
  95. package/.next/static/chunks/364-3cb3c8cf1d3c95de.js +1 -0
  96. package/.next/static/chunks/519-7f22292093abd7c3.js +1 -0
  97. package/.next/static/chunks/638.d570519ae49c92c8.js +1 -0
  98. package/.next/static/chunks/873-9d69271e4b2dd496.js +1 -0
  99. package/.next/static/chunks/962-d5070461f6d4a478.js +1 -0
  100. package/.next/static/chunks/framework-576ec6a1c1386453.js +1 -0
  101. package/.next/static/chunks/main-0289ecbd51cd4cb4.js +1 -0
  102. package/.next/static/chunks/pages/_app-c9d3172cc09cf069.js +1 -0
  103. package/.next/static/chunks/pages/_error-5a714c45c50a8db4.js +1 -0
  104. package/.next/static/chunks/pages/events/[name]/logs-f8568627ce642d13.js +1 -0
  105. package/.next/static/chunks/pages/events/[name]/v/[version]-dc146dc9bfa7362d.js +1 -0
  106. package/.next/static/chunks/pages/events/[name]-fb77119f66a5793e.js +1 -0
  107. package/.next/static/chunks/pages/events-bcad8442f21d6b67.js +1 -0
  108. package/.next/static/chunks/pages/index-3eeab7e4014a02ea.js +1 -0
  109. package/.next/static/chunks/pages/overview-5ac749891cbe1922.js +1 -0
  110. package/.next/static/chunks/pages/services/[name]-69692188d11304b7.js +1 -0
  111. package/.next/static/chunks/pages/services-bcc61898062e1bf4.js +1 -0
  112. package/.next/static/chunks/pages/users/[id]-2da54ccb6319b207.js +1 -0
  113. package/.next/static/chunks/polyfills-5cd94c89d3acac5f.js +1 -0
  114. package/.next/static/chunks/webpack-afe52d4a9fcc5a75.js +1 -0
  115. package/.next/static/css/5eeed9cb243ce668.css +1 -0
  116. package/.next/static/css/b44e1178a88a93b4.css +3 -0
  117. package/.next/static/vhOn9sHATcc4EnbZ7-GDM/_buildManifest.js +1 -0
  118. package/.next/static/vhOn9sHATcc4EnbZ7-GDM/_middlewareManifest.js +1 -0
  119. package/.next/static/vhOn9sHATcc4EnbZ7-GDM/_ssgManifest.js +1 -0
  120. package/.next/trace +37 -0
  121. package/CHANGELOG.md +12 -0
  122. package/bin/eventcatalog.js +4 -15
  123. package/components/ContentView.tsx +22 -29
  124. package/components/Grids/EventGrid.tsx +3 -13
  125. package/components/Grids/ServiceGrid.tsx +3 -11
  126. package/components/Header.tsx +1 -3
  127. package/components/Mdx/Examples.tsx +2 -9
  128. package/components/NotFound/index.tsx +2 -6
  129. package/components/Sidebars/EventSidebar.tsx +19 -14
  130. package/components/Sidebars/ServiceSidebar.tsx +26 -25
  131. package/eventcatalog.config.js +40 -0
  132. package/hooks/EventCatalog.tsx +1 -1
  133. package/lib/__tests__/assets/services/Basket Service/index.md +19 -0
  134. package/lib/__tests__/events.spec.ts +16 -27
  135. package/lib/__tests__/file-reader.spec.ts +3 -9
  136. package/lib/__tests__/services.spec.ts +27 -6
  137. package/lib/events.ts +4 -9
  138. package/lib/file-reader.ts +1 -3
  139. package/lib/graphs.ts +2 -4
  140. package/lib/services.ts +5 -11
  141. package/package.json +2 -2
  142. package/pages/_app.tsx +3 -12
  143. package/pages/events/[name]/logs.tsx +4 -13
  144. package/pages/events/[name].tsx +4 -13
  145. package/pages/events.tsx +5 -16
  146. package/pages/index.tsx +2 -9
  147. package/pages/overview.tsx +1 -4
  148. package/pages/services/[name].tsx +2 -2
  149. package/pages/services.tsx +2 -6
  150. package/pages/users/[id].tsx +4 -13
  151. package/scripts/__tests__/assets/eventcatalog.config.js +1 -2
  152. package/scripts/__tests__/generate.spec.ts +1 -4
  153. package/tailwind.config.js +1 -5
  154. package/tsconfig.json +1 -7
@@ -21,9 +21,7 @@ describe('file-reader lib', () => {
21
21
  { encoding: 'utf-8' }
22
22
  );
23
23
 
24
- const result = getSchemaFromDir(
25
- path.join(process.env.PROJECT_DIR, 'events', 'EventWithSchemaAndExamples')
26
- );
24
+ const result = getSchemaFromDir(path.join(process.env.PROJECT_DIR, 'events', 'EventWithSchemaAndExamples'));
27
25
 
28
26
  expect(result.snippet).toEqual(rawSchemaFile);
29
27
  expect(result.language).toEqual('json');
@@ -42,14 +40,10 @@ describe('file-reader lib', () => {
42
40
  path.join(process.env.PROJECT_DIR, 'events', 'EventWithSchemaAndExamples', 'schema.json')
43
41
  );
44
42
 
45
- const stats = fs.statSync(
46
- path.join(process.env.PROJECT_DIR, 'events', 'EventWithSchemaAndExamples', 'schema.json')
47
- );
43
+ const stats = fs.statSync(path.join(process.env.PROJECT_DIR, 'events', 'EventWithSchemaAndExamples', 'schema.json'));
48
44
 
49
45
  const fileData = new Date(stats.mtime);
50
- const expectedResult = `${fileData.getFullYear()}/${
51
- fileData.getMonth() + 1
52
- }/${fileData.getDate()}`;
46
+ const expectedResult = `${fileData.getFullYear()}/${fileData.getMonth() + 1}/${fileData.getDate()}`;
53
47
 
54
48
  expect(result).toEqual(expectedResult);
55
49
  });
@@ -18,10 +18,27 @@ describe('services', () => {
18
18
  const services = await getAllServices();
19
19
 
20
20
  expect(services).toEqual([
21
+ {
22
+ externalLinks: [
23
+ {
24
+ label: 'AsyncAPI Specification',
25
+ url: 'https://studio.asyncapi.com/#schema-lightMeasuredPayload',
26
+ },
27
+ ],
28
+ name: 'Basket Service',
29
+ owners: ['mSmith'],
30
+ publishes: [],
31
+ repository: {
32
+ language: 'JavaScript',
33
+ url: 'https://github.com/boyney123/pretend-basket-service',
34
+ },
35
+ subscribes: [],
36
+ summary: 'CRUD based API to handle Basket interactions for users of the shopping website.\n',
37
+ tags: [],
38
+ },
21
39
  {
22
40
  name: 'Email Platform',
23
- summary:
24
- 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
41
+ summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
25
42
  owners: ['dboyne'],
26
43
  repository: {
27
44
  url: 'https://github.com/boyney123/EmailPlatform',
@@ -43,11 +60,13 @@ describe('services', () => {
43
60
  summary: 'Tells us when an email has been sent\n',
44
61
  producers: ['Email Platform'],
45
62
  consumers: [],
63
+ externalLinks: [],
46
64
  historicVersions: [],
47
65
  owners: ['dboyne', 'mSmith'],
48
66
  },
49
67
  ],
50
68
  subscribes: [],
69
+ externalLinks: [],
51
70
  },
52
71
  ]);
53
72
  });
@@ -65,8 +84,7 @@ describe('services', () => {
65
84
  expect(services).toEqual([
66
85
  {
67
86
  name: 'Email Platform',
68
- summary:
69
- 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
87
+ summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
70
88
  owners: ['dboyne'],
71
89
  repository: {
72
90
  url: 'https://github.com/boyney123/EmailPlatform',
@@ -89,10 +107,12 @@ describe('services', () => {
89
107
  producers: ['Email Platform'],
90
108
  consumers: [],
91
109
  historicVersions: [],
110
+ externalLinks: [],
92
111
  owners: ['dboyne', 'mSmith'],
93
112
  },
94
113
  ],
95
114
  subscribes: [],
115
+ externalLinks: [],
96
116
  },
97
117
  ]);
98
118
  });
@@ -104,8 +124,7 @@ describe('services', () => {
104
124
 
105
125
  expect(service).toEqual({
106
126
  name: 'Email Platform',
107
- summary:
108
- 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
127
+ summary: 'Internal Email system. Used to send emails to 1000s of customers. Hosted in AWS\n',
109
128
  owners: ['dboyne'],
110
129
  repository: {
111
130
  url: 'https://github.com/boyney123/EmailPlatform',
@@ -128,10 +147,12 @@ describe('services', () => {
128
147
  producers: ['Email Platform'],
129
148
  consumers: [],
130
149
  historicVersions: [],
150
+ externalLinks: [],
131
151
  owners: ['dboyne', 'mSmith'],
132
152
  },
133
153
  ],
134
154
  subscribes: [],
155
+ externalLinks: [],
135
156
  });
136
157
 
137
158
  // @ts-ignore
package/lib/events.ts CHANGED
@@ -11,8 +11,8 @@ import { extentionToLanguageMap } from './file-reader';
11
11
  import { getLastModifiedDateOfFile, getSchemaFromDir, readMarkdownFile } from '@/lib/file-reader';
12
12
 
13
13
  const parseEventFrontMatterIntoEvent = (eventFrontMatter: any): Event => {
14
- const { name, version, summary, producers = [], consumers = [], owners = [] } = eventFrontMatter;
15
- return { name, version, summary, producers, consumers, owners };
14
+ const { name, version, summary, producers = [], consumers = [], owners = [], externalLinks = [] } = eventFrontMatter;
15
+ return { name, version, summary, producers, consumers, owners, externalLinks };
16
16
  };
17
17
 
18
18
  const versionsForEvents = (pathToEvent) => {
@@ -36,9 +36,7 @@ export const getLogsForEvent = (eventName) => {
36
36
  }));
37
37
 
38
38
  // Get the latest version
39
- const { data: { version: latestVersion } = {} } = readMarkdownFile(
40
- path.join(eventsDir, eventName, 'index.md')
41
- );
39
+ const { data: { version: latestVersion } = {} } = readMarkdownFile(path.join(eventsDir, eventName, 'index.md'));
42
40
 
43
41
  // Add the current version to the list
44
42
  allVersions.unshift({ version: latestVersion, pathToDir: path.join(eventsDir, eventName) });
@@ -143,10 +141,7 @@ export const getAllEvents = (): Event[] => {
143
141
  });
144
142
  };
145
143
 
146
- export const getEventByName = async (
147
- eventName: string,
148
- version?: string
149
- ): Promise<{ event: Event; markdown: MarkdownFile }> => {
144
+ export const getEventByName = async (eventName: string, version?: string): Promise<{ event: Event; markdown: MarkdownFile }> => {
150
145
  const eventsDir = path.join(process.env.PROJECT_DIR, 'events');
151
146
  const eventDirectory = path.join(eventsDir, eventName);
152
147
  let versionDirectory = null;
@@ -46,7 +46,5 @@ export const getSchemaFromDir = (pathToSchemaDir: string): Schema => {
46
46
  export const getLastModifiedDateOfFile = (filePath) => {
47
47
  const stats = fs.statSync(filePath);
48
48
  const lastModifiedDate = new Date(stats.mtime);
49
- return `${lastModifiedDate.getFullYear()}/${
50
- lastModifiedDate.getMonth() + 1
51
- }/${lastModifiedDate.getDate()}`;
49
+ return `${lastModifiedDate.getFullYear()}/${lastModifiedDate.getMonth() + 1}/${lastModifiedDate.getDate()}`;
52
50
  };
package/lib/graphs.ts CHANGED
@@ -16,10 +16,8 @@ ${rNodes.map((node) => `${nodeValue}:::event-->${node}:::consumer\n`).join('')}
16
16
  `;
17
17
  };
18
18
 
19
- export const buildMermaidFlowChartForEvent = (
20
- { name: eventName, producers, consumers }: Event,
21
- rootNodeColor = '#2563eb'
22
- ) => buildMermaid(eventName, producers, consumers, rootNodeColor);
19
+ export const buildMermaidFlowChartForEvent = ({ name: eventName, producers, consumers }: Event, rootNodeColor = '#2563eb') =>
20
+ buildMermaid(eventName, producers, consumers, rootNodeColor);
23
21
 
24
22
  export const buildMermaidFlowChartForService = (
25
23
  { publishes, subscribes, name: serviceName }: Service,
package/lib/services.ts CHANGED
@@ -8,17 +8,15 @@ import { MarkdownFile } from '../types/index';
8
8
  import { getAllEvents, getAllEventsThatHaveRelationshipWithService } from '@/lib/events';
9
9
 
10
10
  const buildService = (eventFrontMatter: any): Service => {
11
- const { name, summary, owners = [], repository = {}, tags = [] } = eventFrontMatter;
12
- return { name, summary, owners, repository, tags };
11
+ const { name, summary, owners = [], repository = {}, tags = [], externalLinks = [] } = eventFrontMatter;
12
+ return { name, summary, owners, repository, tags, externalLinks };
13
13
  };
14
14
 
15
15
  export const getAllServices = (): Service[] => {
16
16
  const servicesDir = path.join(process.env.PROJECT_DIR, 'services');
17
17
 
18
18
  const folders = fs.readdirSync(servicesDir);
19
- const services = folders.map((folder) =>
20
- readMarkdownFile(path.join(servicesDir, folder, 'index.md'))
21
- );
19
+ const services = folders.map((folder) => readMarkdownFile(path.join(servicesDir, folder, 'index.md')));
22
20
  const events = getAllEvents();
23
21
 
24
22
  const parsedServices = services.map((frontMatter) => buildService(frontMatter.data));
@@ -32,17 +30,13 @@ export const getAllServices = (): Service[] => {
32
30
 
33
31
  export const getAllServicesByOwnerId = async (ownerId): Promise<Service[]> => {
34
32
  const services = await getAllServices();
35
- const servicesOwnedByUser = services.filter((service) =>
36
- service.owners.some((id) => id === ownerId)
37
- );
33
+ const servicesOwnedByUser = services.filter((service) => service.owners.some((id) => id === ownerId));
38
34
  return servicesOwnedByUser.map((service) => ({
39
35
  ...service,
40
36
  }));
41
37
  };
42
38
 
43
- export const getServiceByName = async (
44
- serviceName
45
- ): Promise<{ service: Service; markdown: MarkdownFile }> => {
39
+ export const getServiceByName = async (serviceName): Promise<{ service: Service; markdown: MarkdownFile }> => {
46
40
  try {
47
41
  const servicesDir = path.join(process.env.PROJECT_DIR, 'services');
48
42
  const serviceDirectory = path.join(servicesDir, serviceName);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventcatalog/core",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -37,7 +37,7 @@
37
37
  "react-syntax-highlighter": "^15.4.5"
38
38
  },
39
39
  "devDependencies": {
40
- "@eventcatalog/types": "0.0.2",
40
+ "@eventcatalog/types": "0.0.3",
41
41
  "@types/react": "^17.0.36",
42
42
  "autoprefixer": "^10.4.0",
43
43
  "commander": "^8.3.0",
package/pages/_app.tsx CHANGED
@@ -18,29 +18,20 @@ export default ({ Component, pageProps }: AppProps) => (
18
18
  />
19
19
  <meta property="og:url" content="https://eventcatalog.dev/" />
20
20
  <meta property="og:type" content="website" />
21
- <meta
22
- property="og:title"
23
- content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."
24
- />
21
+ <meta property="og:title" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures." />
25
22
  <meta
26
23
  property="og:description"
27
24
  content="An open source tool powered by markdown to document your Event Driven Architecture."
28
25
  />
29
26
  <meta property="og:image" content="https://eventcatalog.dev/img/opengraph.png" />
30
- <meta
31
- property="og:image:alt"
32
- content="EventCatalog | Discover, Explore and Document your Event Driven Architectures."
33
- />
27
+ <meta property="og:image:alt" content="EventCatalog | Discover, Explore and Document your Event Driven Architectures." />
34
28
  <meta property="og:image:width" content="1200" />
35
29
  <meta property="og:image:height" content="600" />
36
30
  <meta property="og:locale" content="en-GB" />
37
31
  <meta name="author" content="David Boyne" />
38
32
 
39
33
  {/* Need to load this before any of the Html2Diff Code */}
40
- <link
41
- rel="stylesheet"
42
- href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css"
43
- />
34
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/atom-one-light.min.css" />
44
35
  </Head>
45
36
  <Header />
46
37
  <Component {...pageProps} />
@@ -67,9 +67,7 @@ function Logs({ changes, name: eventName, currentVersion }: LogsProps) {
67
67
  </div>
68
68
  </div>
69
69
 
70
- {changes.length === 0 && (
71
- <div className="text-gray-400 text-xl">No versions for Event found.</div>
72
- )}
70
+ {changes.length === 0 && <div className="text-gray-400 text-xl">No versions for Event found.</div>}
73
71
 
74
72
  <div className="flow-root mb-20">
75
73
  <ul className="">
@@ -77,10 +75,7 @@ function Logs({ changes, name: eventName, currentVersion }: LogsProps) {
77
75
  <li key={eventIdx} className="">
78
76
  <div className="relative pb-8">
79
77
  {eventIdx !== changes.length - 1 ? (
80
- <span
81
- className="absolute top-4 left-4 -ml-px h-full w-0.5 bg-gray-100"
82
- aria-hidden="true"
83
- />
78
+ <span className="absolute top-4 left-4 -ml-px h-full w-0.5 bg-gray-100" aria-hidden="true" />
84
79
  ) : null}
85
80
  <div className="relative flex space-x-3">
86
81
  <div>
@@ -99,9 +94,7 @@ function Logs({ changes, name: eventName, currentVersion }: LogsProps) {
99
94
  Schema version update
100
95
  {event.versions.map((version, index) => {
101
96
  const linkHref =
102
- version === currentVersion
103
- ? `/events/${eventName}`
104
- : `/events/${eventName}/v/${version}`;
97
+ version === currentVersion ? `/events/${eventName}` : `/events/${eventName}/v/${version}`;
105
98
  return (
106
99
  <Link key={version} href={linkHref}>
107
100
  <a className="font-medium">
@@ -127,9 +120,7 @@ function Logs({ changes, name: eventName, currentVersion }: LogsProps) {
127
120
  </>
128
121
  )}
129
122
  {!event.changelog.source && (
130
- <h2 className="text-base text-gray-300 font-bold mt-4">
131
- No changelog file found.
132
- </h2>
123
+ <h2 className="text-base text-gray-300 font-bold mt-4">No changelog file found.</h2>
133
124
  )}
134
125
  </div>
135
126
  <div className="text-right text-sm text-gray-500 py-4">
@@ -31,11 +31,7 @@ export const getComponents = ({ event, schema, examples }: any) => ({
31
31
  code: ({ className, ...props }) => {
32
32
  const match = /language-(\w+)/.exec(className || '');
33
33
 
34
- return match ? (
35
- <SyntaxHighlighter language={match[1]} {...props} />
36
- ) : (
37
- <code className={className} {...props} />
38
- );
34
+ return match ? <SyntaxHighlighter language={match[1]} {...props} /> : <code className={className} {...props} />;
39
35
  },
40
36
  Schema: ({ title = 'Event Schema' }: { title: string }) => {
41
37
  if (!schema) return null;
@@ -45,11 +41,7 @@ export const getComponents = ({ event, schema, examples }: any) => ({
45
41
  <h2 id="activity-title" className="text-lg font-medium text-gray-900 underline">
46
42
  {title}
47
43
  </h2>
48
- <SyntaxHighlighter
49
- language={schema.language}
50
- showLineNumbers={false}
51
- name={`${event.name} Schema (${schema.language})`}
52
- >
44
+ <SyntaxHighlighter language={schema.language} showLineNumbers={false} name={`${event.name} Schema (${schema.language})`}>
53
45
  {schema.snippet}
54
46
  </SyntaxHighlighter>
55
47
  </section>
@@ -75,7 +67,7 @@ export const getComponents = ({ event, schema, examples }: any) => ({
75
67
 
76
68
  export default function Events(props: EventsPageProps) {
77
69
  const { event, markdown, loadedVersion, notFound } = props;
78
- const { getEditUrl } = useUrl();
70
+ const { getEditUrl, hasEditUrl } = useUrl();
79
71
 
80
72
  if (notFound) return <NotFound type="event" name={event.name} editUrl={editUrl} />;
81
73
 
@@ -97,9 +89,8 @@ export default function Events(props: EventsPageProps) {
97
89
  </title>
98
90
  </Head>
99
91
  <ContentView
100
- // {...props}
101
92
  title={name}
102
- editUrl={getEditUrl(`/events/${name}/index.md`)}
93
+ editUrl={hasEditUrl ? getEditUrl(`/events/${name}/index.md`) : ''}
103
94
  subtitle={summary}
104
95
  draft={draft}
105
96
  lastModifiedDate={lastModifiedDate}
package/pages/events.tsx CHANGED
@@ -57,12 +57,8 @@ export default function Page({ events, services }: PageProps) {
57
57
  eventsToRender = eventsToRender.filter((event) => {
58
58
  const { services: serviceFilters } = selectedFilters;
59
59
 
60
- const hasConsumersFromFilters = event.consumers.some(
61
- (consumerId) => serviceFilters.indexOf(consumerId) > -1
62
- );
63
- const hasProducersFromFilters = event.producers.some(
64
- (producerId) => serviceFilters.indexOf(producerId) > -1
65
- );
60
+ const hasConsumersFromFilters = event.consumers.some((consumerId) => serviceFilters.indexOf(consumerId) > -1);
61
+ const hasProducersFromFilters = event.producers.some((producerId) => serviceFilters.indexOf(producerId) > -1);
66
62
 
67
63
  return hasConsumersFromFilters || hasProducersFromFilters;
68
64
  });
@@ -75,9 +71,7 @@ export default function Page({ events, services }: PageProps) {
75
71
  </Head>
76
72
  <main className="max-w-7xl mx-auto min-h-screen px-4 md:px-0">
77
73
  <div className="relative z-10 flex items-baseline justify-between pt-8 pb-6 border-b border-gray-200">
78
- <h1 className="text-2xl font-extrabold tracking-tight text-gray-900">
79
- Events ({events.length})
80
- </h1>
74
+ <h1 className="text-2xl font-extrabold tracking-tight text-gray-900">Events ({events.length})</h1>
81
75
 
82
76
  <div className="flex items-center">
83
77
  <Menu as="div" className="hidden relative text-left">
@@ -160,10 +154,7 @@ export default function Page({ events, services }: PageProps) {
160
154
  defaultChecked={option.checked}
161
155
  className="h-4 w-4 border-gray-300 rounded text-gray-600 focus:ring-gray-500"
162
156
  />
163
- <label
164
- htmlFor={`filter-${section.id}-${optionIdx}`}
165
- className="ml-3 text-sm text-gray-600"
166
- >
157
+ <label htmlFor={`filter-${section.id}-${optionIdx}`} className="ml-3 text-sm text-gray-600">
167
158
  {option.label}
168
159
  </label>
169
160
  </div>
@@ -200,9 +191,7 @@ export default function Page({ events, services }: PageProps) {
200
191
 
201
192
  <div className="col-span-4 lg:col-span-3">
202
193
  <div>
203
- <h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">
204
- Events ({eventsToRender.length})
205
- </h2>
194
+ <h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">Events ({eventsToRender.length})</h2>
206
195
  <EventGrid events={eventsToRender} showMermaidDiagrams={showMermaidDiagrams} />
207
196
  </div>
208
197
  </div>
package/pages/index.tsx CHANGED
@@ -11,15 +11,8 @@ export default function Example() {
11
11
  return (
12
12
  <main className="sm:bg-top md:min-h-screen bg-gradient-to-t from-blue-700 to-gray-800">
13
13
  <div className="max-w-7xl mx-auto px-4 py-16 text-center sm:px-6 sm:py-24 lg:px-8 lg:py-48">
14
- <img
15
- src={logoToLoad.src}
16
- alt={logoToLoad.alt}
17
- style={{ height: '85px' }}
18
- className="mx-auto"
19
- />
20
- <h1 className="mt-2 text-4xl font-extrabold text-white tracking-tight sm:text-5xl">
21
- {title}
22
- </h1>
14
+ <img src={logoToLoad.src} alt={logoToLoad.alt} style={{ height: '85px' }} className="mx-auto" />
15
+ <h1 className="mt-2 text-4xl font-extrabold text-white tracking-tight sm:text-5xl">{title}</h1>
23
16
  {tagline && <p className="mt-2 text-lg font-medium text-white">{tagline}</p>}
24
17
  <div className="mt-5 max-w-md mx-auto sm:flex sm:justify-center md:mt-8">
25
18
  <div className="rounded-md shadow">
@@ -6,10 +6,7 @@ import dynamic from 'next/dynamic';
6
6
 
7
7
  import { getAllEvents, getUniqueServicesNamesFromEvents } from '@/lib/events';
8
8
 
9
- const ForceGraph3D = dynamic(
10
- () => import('react-force-graph-3d').then((module) => module.default),
11
- { ssr: false }
12
- );
9
+ const ForceGraph3D = dynamic(() => import('react-force-graph-3d').then((module) => module.default), { ssr: false });
13
10
 
14
11
  function NodeElement({ node: { id } }: { node: { id: string } }) {
15
12
  return <div className={`text-sm text-center p-1 rounded-md `}>{id}</div>;
@@ -37,7 +37,7 @@ const getComponents = (service) => ({
37
37
 
38
38
  export default function Services(props: ServicesPageProps) {
39
39
  const { service, markdown, notFound } = props;
40
- const { getEditUrl } = useUrl();
40
+ const { getEditUrl, hasEditUrl } = useUrl();
41
41
 
42
42
  if (notFound) return <NotFound type="service" name={service.name} editUrl={editUrl} />;
43
43
 
@@ -58,7 +58,7 @@ export default function Services(props: ServicesPageProps) {
58
58
  </Head>
59
59
  <ContentView
60
60
  title={name}
61
- editUrl={getEditUrl(`/services/${name}/index.md`)}
61
+ editUrl={hasEditUrl ? getEditUrl(`/services/${name}/index.md`) : ''}
62
62
  subtitle={summary}
63
63
  draft={draft}
64
64
  lastModifiedDate={lastModifiedDate}
@@ -31,9 +31,7 @@ export default function Page({ services }: PageProps) {
31
31
  </Head>
32
32
  <main className="max-w-7xl mx-auto md:min-h-screen px-4 md:px-0">
33
33
  <div className="relative z-10 flex items-baseline justify-between pt-8 pb-6 border-b border-gray-200">
34
- <h1 className="text-2xl font-extrabold tracking-tight text-gray-900">
35
- Services ({services.length})
36
- </h1>
34
+ <h1 className="text-2xl font-extrabold tracking-tight text-gray-900">Services ({services.length})</h1>
37
35
 
38
36
  <div className="flex items-center">
39
37
  <Menu as="div" className="relative hidden text-left">
@@ -99,9 +97,7 @@ export default function Page({ services }: PageProps) {
99
97
 
100
98
  <div className="col-span-4 lg:col-span-3">
101
99
  <div>
102
- <h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">
103
- Services
104
- </h2>
100
+ <h2 className="text-gray-500 text-xs font-medium uppercase tracking-wide">Services</h2>
105
101
  <ServiceGrid services={services} />
106
102
  </div>
107
103
  </div>
@@ -29,15 +29,11 @@ export default function UserPage({ events, services, userId }: UserPageProps) {
29
29
  </div>
30
30
  </div>
31
31
  <div className=" border-b border-gray-100 pb-6">
32
- <h1 className="text-lg font-bold text-gray-800 relative mt-4">
33
- Owner of Events ({events.length})
34
- </h1>
32
+ <h1 className="text-lg font-bold text-gray-800 relative mt-4">Owner of Events ({events.length})</h1>
35
33
  <EventGrid events={events} />
36
34
  </div>
37
35
  <div>
38
- <h1 className="text-lg font-bold text-gray-800 relative mt-4">
39
- Owner of Services ({services.length})
40
- </h1>
36
+ <h1 className="text-lg font-bold text-gray-800 relative mt-4">Owner of Services ({services.length})</h1>
41
37
  <ServiceGrid services={services} />
42
38
  </div>
43
39
  </div>
@@ -46,10 +42,7 @@ export default function UserPage({ events, services, userId }: UserPageProps) {
46
42
  <div className="flex-shrink-0">
47
43
  <div className="relative">
48
44
  <img className="h-16 w-16 rounded-full" src={user.avatarUrl} alt="" />
49
- <span
50
- className="absolute inset-0 shadow-inner rounded-full"
51
- aria-hidden="true"
52
- />
45
+ <span className="absolute inset-0 shadow-inner rounded-full" aria-hidden="true" />
53
46
  </div>
54
47
  </div>
55
48
  <div>
@@ -57,9 +50,7 @@ export default function UserPage({ events, services, userId }: UserPageProps) {
57
50
  <p className="text-sm font-medium text-gray-500">{user.role}</p>
58
51
  </div>
59
52
  </div>
60
- <div className="mt-6 flow-root border-t border-gray-200 py-6 text-sm">
61
- {user.summary}
62
- </div>
53
+ <div className="mt-6 flow-root border-t border-gray-200 py-6 text-sm">{user.summary}</div>
63
54
  </div>
64
55
  </div>
65
56
  </div>
@@ -26,8 +26,7 @@ module.exports = {
26
26
  name: 'Matthew Smith',
27
27
  avatarUrl: 'https://randomuser.me/api/portraits/lego/3.jpg',
28
28
  role: 'Developer',
29
- summary:
30
- 'About Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat.',
29
+ summary: 'About Fugiat ipsum ipsum deserunt culpa aute sint do nostrud anim incididunt cillum culpa consequat.',
31
30
  },
32
31
  ],
33
32
  };
@@ -31,9 +31,6 @@ describe('generate script', () => {
31
31
  await generate();
32
32
 
33
33
  expect(mockPlugin).toHaveBeenCalled();
34
- expect(mockPlugin).toHaveBeenCalledWith(
35
- { eventCatalogConfig: config },
36
- { file: './asyncapi.yml' }
37
- );
34
+ expect(mockPlugin).toHaveBeenCalledWith({ eventCatalogConfig: config }, { file: './asyncapi.yml' });
38
35
  });
39
36
  });
@@ -8,9 +8,5 @@ module.exports = {
8
8
  extend: {},
9
9
  },
10
10
  purge: ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'],
11
- plugins: [
12
- require('@tailwindcss/typography'),
13
- require('@tailwindcss/forms'),
14
- require('@tailwindcss/line-clamp'),
15
- ],
11
+ plugins: [require('@tailwindcss/typography'), require('@tailwindcss/forms'), require('@tailwindcss/line-clamp')],
16
12
  };
package/tsconfig.json CHANGED
@@ -27,12 +27,6 @@
27
27
  },
28
28
  "jsx": "preserve"
29
29
  },
30
- "include": [
31
- "next-env.d.ts",
32
- "**/*.ts",
33
- "**/*.tsx",
34
- "hooks/EventCatalog.tsx",
35
- "scripts/generate.js"
36
- ],
30
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "hooks/EventCatalog.tsx", "scripts/generate.js"],
37
31
  "exclude": ["node_modules"]
38
32
  }