@eventcatalog/core 5.0.0-beta.20 → 5.0.0-beta.22

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 (98) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/{chunk-R2X4ZEF6.js → chunk-3R4YXM3W.js} +1 -1
  6. package/dist/{chunk-FWH5T6U4.js → chunk-I7QC5DRU.js} +1 -1
  7. package/dist/{chunk-5ZUN2TXB.js → chunk-KYQBCP3A.js} +1 -1
  8. package/dist/chunk-S5GWAUG5.js +29 -0
  9. package/dist/{chunk-F236OJZD.js → chunk-UKD35J77.js} +1 -1
  10. package/dist/{chunk-3VQSVQTU.js → chunk-US5TWRHO.js} +1 -1
  11. package/dist/constants.cjs +1 -1
  12. package/dist/constants.js +1 -1
  13. package/dist/eventcatalog.cjs +32 -3
  14. package/dist/eventcatalog.js +16 -10
  15. package/dist/federation/federate.js +2 -2
  16. package/dist/generate.cjs +1 -1
  17. package/dist/generate.js +3 -3
  18. package/dist/utils/child-process-signals.cjs +53 -0
  19. package/dist/utils/child-process-signals.d.cts +19 -0
  20. package/dist/utils/child-process-signals.d.ts +19 -0
  21. package/dist/utils/child-process-signals.js +6 -0
  22. package/dist/utils/cli-logger.cjs +1 -1
  23. package/dist/utils/cli-logger.js +2 -2
  24. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.spec.ts +2 -3
  25. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/_index.data.ts +0 -7
  26. package/eventcatalog/src/pages/architecture/[type]/[id]/[version]/index.astro +3 -1
  27. package/eventcatalog/src/pages/diagrams/[id]/[version]/_index.data.ts +0 -7
  28. package/eventcatalog/src/pages/diagrams/[id]/[version]/embed.astro +1 -0
  29. package/eventcatalog/src/pages/diagrams/[id]/[version]/index.astro +1 -0
  30. package/eventcatalog/src/pages/directory/[type]/_index.data.ts +5 -7
  31. package/eventcatalog/src/pages/directory/[type]/index.astro +3 -1
  32. package/eventcatalog/src/pages/discover/[type]/_index.data.ts +5 -7
  33. package/eventcatalog/src/pages/discover/[type]/index.astro +3 -1
  34. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/_index.data.ts +0 -7
  35. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/[docVersion]/index.astro +1 -0
  36. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/_index.data.ts +0 -7
  37. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/[docType]/[docId]/index.astro +1 -0
  38. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/_index.data.ts +0 -7
  39. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/[filename].astro +3 -1
  40. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/asyncapi/_[filename].data.ts +0 -7
  41. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/_index.data.ts +0 -7
  42. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/changelog/index.astro +1 -0
  43. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/[...filename].astro +1 -0
  44. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/examples/_[...filename].data.ts +0 -4
  45. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/_index.data.ts +0 -7
  46. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/field-lineage/index.astro +1 -0
  47. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/[filename].astro +3 -1
  48. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/graphql/_[filename].data.ts +0 -7
  49. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/index.astro +1 -0
  50. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.spec.ts +2 -3
  51. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/_index.data.ts +0 -7
  52. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/resources/index.astro +1 -0
  53. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/[filename].astro +1 -0
  54. package/eventcatalog/src/pages/docs/[type]/[id]/[version]/spec/_[filename].data.ts +0 -7
  55. package/eventcatalog/src/pages/docs/[type]/[id]/_index.data.ts +0 -7
  56. package/eventcatalog/src/pages/docs/[type]/[id]/index.astro +1 -0
  57. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/_index.data.ts +0 -7
  58. package/eventcatalog/src/pages/docs/[type]/[id]/language/[dictionaryId]/index.astro +1 -0
  59. package/eventcatalog/src/pages/docs/[type]/[id]/language/_index.data.ts +0 -7
  60. package/eventcatalog/src/pages/docs/[type]/[id]/language/index.astro +1 -0
  61. package/eventcatalog/src/pages/docs/custom/[...path]/_index.data.ts +0 -7
  62. package/eventcatalog/src/pages/docs/custom/[...path]/index.astro +1 -0
  63. package/eventcatalog/src/pages/docs/services/[id]/[docType]/[docId]/index.astro +1 -1
  64. package/eventcatalog/src/pages/docs/services/[id]/[version]/resources/index.astro +1 -0
  65. package/eventcatalog/src/pages/docs/services/[id]/asyncapi/[filename].astro +1 -1
  66. package/eventcatalog/src/pages/docs/services/[id]/changelog/index.astro +1 -1
  67. package/eventcatalog/src/pages/docs/services/[id]/graphql/[filename].astro +1 -1
  68. package/eventcatalog/src/pages/docs/services/[id]/spec/[filename].astro +1 -1
  69. package/eventcatalog/src/pages/docs/teams/[id]/_index.data.ts +0 -7
  70. package/eventcatalog/src/pages/docs/teams/[id]/index.astro +1 -0
  71. package/eventcatalog/src/pages/docs/users/[id]/_index.data.ts +0 -7
  72. package/eventcatalog/src/pages/docs/users/[id]/index.astro +1 -0
  73. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/_index.data.ts +0 -7
  74. package/eventcatalog/src/pages/schemas/[type]/[id]/[version]/index.astro +1 -0
  75. package/eventcatalog/src/pages/schemas/explorer/_index.data.ts +0 -7
  76. package/eventcatalog/src/pages/schemas/explorer/index.astro +3 -1
  77. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/_index.data.ts +0 -7
  78. package/eventcatalog/src/pages/triggers/[type]/[id]/[version]/index.astro +1 -0
  79. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/_index.data.ts +0 -7
  80. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/_index.data.ts +0 -7
  81. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/data/index.astro +1 -0
  82. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/_index.data.ts +0 -7
  83. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/entity-map/index.astro +1 -0
  84. package/eventcatalog/src/pages/visualiser/[type]/[id]/[version]/index.astro +1 -0
  85. package/eventcatalog/src/pages/visualiser/[type]/[id]/_index.data.ts +38 -0
  86. package/eventcatalog/src/pages/visualiser/[type]/[id]/index.astro +17 -40
  87. package/eventcatalog/src/pages/visualiser/designs/[id]/_index.data.ts +0 -7
  88. package/eventcatalog/src/pages/visualiser/designs/[id]/index.astro +2 -1
  89. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/_index.data.ts +0 -7
  90. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/entity-map/index.astro +1 -0
  91. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/index.astro +1 -0
  92. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/_index.data.ts +0 -7
  93. package/eventcatalog/src/pages/visualiser/domains/[id]/[version]/systems-context/index.astro +1 -0
  94. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/_index.data.ts +0 -7
  95. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/context/index.astro +1 -0
  96. package/eventcatalog/src/pages/visualiser/systems/[id]/[version]/index.astro +1 -0
  97. package/eventcatalog/src/utils/page-loaders/hybrid-page.ts +4 -15
  98. package/package.json +1 -1
@@ -1,53 +1,30 @@
1
1
  ---
2
2
  import Seo from '@components/Seo.astro';
3
3
  import { buildUrl } from '@utils/url-builder';
4
- import { getEvents } from '@utils/collections/events';
5
- import { getCommands } from '@utils/collections/commands';
6
- import { getServices } from '@utils/collections/services';
7
- import { getDomains } from '@utils/collections/domains';
8
- import { getContainers } from '@utils/collections/containers';
9
- import type { CollectionEntry } from 'astro:content';
10
- import type { CollectionTypes } from '@types';
11
- import { isVisualiserEnabled } from '@utils/feature';
4
+ import { isSSR } from '@utils/feature';
5
+ import { findVisualiserResource, getVisualiserResources } from './_index.data';
12
6
 
13
- export async function getStaticPaths() {
14
- if (!isVisualiserEnabled()) {
15
- return [];
16
- }
17
-
18
- const [events, commands, services, domains, containers] = await Promise.all([
19
- getEvents(),
20
- getCommands(),
21
- getServices(),
22
- getDomains(),
23
- getContainers(),
24
- ]);
7
+ export const prerender = !isSSR();
25
8
 
26
- const resources = [...domains, ...events, ...services, ...commands, ...containers];
27
- const resourcesWithVisualiserEnabled = resources.filter((resource) => resource.data.visualiser !== false);
9
+ export async function getStaticPaths() {
10
+ const resources = await getVisualiserResources();
11
+ return resources.map(({ type, item }) => ({ params: { type, id: item.data.id }, props: item }));
12
+ }
28
13
 
29
- const buildPages = (collection: CollectionEntry<CollectionTypes>[]) => {
30
- return collection.map((item) => ({
31
- params: {
32
- type: item.collection,
33
- id: item.data.id,
34
- },
35
- props: {
36
- type: item.collection,
37
- ...item,
38
- },
39
- }));
40
- };
14
+ // A static build gets the resource from getStaticPaths; a server, which has no static paths, looks it up
15
+ const resource = isSSR() ? await findVisualiserResource(Astro.params.type, Astro.params.id) : Astro.props;
41
16
 
42
- return [...buildPages(resourcesWithVisualiserEnabled)];
17
+ if (!resource?.data) {
18
+ return new Response(null, { status: 404, statusText: 'Not found' });
43
19
  }
44
20
 
45
- const props = Astro.props;
46
- const pageTitle = `${props.collection} | ${props.data.name}`.replace(/^\w/, (c) => c.toUpperCase());
47
-
48
- const { pathname } = Astro.url;
21
+ const pageTitle = `${resource.collection} | ${resource.data.name}`.replace(/^\w/, (c) => c.toUpperCase());
22
+ const redirectUrl = buildUrl(`${Astro.url.pathname.replace(/\/$/, '')}/${resource.data.latestVersion}`, false, true);
49
23
 
50
- const redirectUrl = buildUrl(pathname + '/' + props.data.latestVersion, false, true);
24
+ // A server redirects straight away (with any query string); a static page redirects in the browser
25
+ if (isSSR()) {
26
+ return Astro.redirect(`${redirectUrl}${Astro.url.search}`);
27
+ }
51
28
  ---
52
29
 
53
30
  <!doctype html>
@@ -45,13 +45,6 @@ export class Page extends HybridPage {
45
45
  };
46
46
  }
47
47
 
48
- protected static createNotFoundResponse(): Response {
49
- return new Response(null, {
50
- status: 404,
51
- statusText: 'Design not found',
52
- });
53
- }
54
-
55
48
  static get clientAuthScript(): string {
56
49
  if (!isAuthEnabled() || !isVisualiserEnabled()) {
57
50
  return '';
@@ -13,7 +13,8 @@ const isChatEnabled = isEventCatalogChatVisible();
13
13
  export const prerender = Page.prerender;
14
14
  export const getStaticPaths = Page.getStaticPaths;
15
15
 
16
- const props = Astro.props;
16
+ const props = await Page.getData(Astro);
17
+ if (!props) return Astro.rewrite('/404');
17
18
 
18
19
  const { data } = props;
19
20
  ---
@@ -47,13 +47,6 @@ export class Page extends HybridPage {
47
47
  return item;
48
48
  }
49
49
 
50
- protected static createNotFoundResponse(): Response {
51
- return new Response(null, {
52
- status: 404,
53
- statusText: 'Domain entity map page not found',
54
- });
55
- }
56
-
57
50
  static get clientAuthScript(): string {
58
51
  if (!isAuthEnabled() || !isVisualiserEnabled()) {
59
52
  return '';
@@ -10,6 +10,7 @@ export const getStaticPaths = Page.getStaticPaths;
10
10
 
11
11
  // Get data
12
12
  const props = await Page.getData(Astro);
13
+ if (!props) return Astro.rewrite('/404');
13
14
 
14
15
  const {
15
16
  data: { id },
@@ -11,6 +11,7 @@ export const getStaticPaths = Page.getStaticPaths;
11
11
 
12
12
  // Get data
13
13
  const props = await Page.getData(Astro);
14
+ if (!props) return Astro.rewrite('/404');
14
15
 
15
16
  const {
16
17
  data: { id },
@@ -58,13 +58,6 @@ export class Page extends HybridPage {
58
58
  return item;
59
59
  }
60
60
 
61
- protected static createNotFoundResponse(): Response {
62
- return new Response(null, {
63
- status: 404,
64
- statusText: 'Domain System Diagram page not found',
65
- });
66
- }
67
-
68
61
  static get clientAuthScript(): string {
69
62
  if (!isAuthEnabled() || !isVisualiserEnabled()) {
70
63
  return '';
@@ -8,6 +8,7 @@ export const getStaticPaths = Page.getStaticPaths;
8
8
 
9
9
  // Get data
10
10
  const props = await Page.getData(Astro);
11
+ if (!props) return Astro.rewrite('/404');
11
12
 
12
13
  // The System Diagram is now level 1 of the domain's visualiser page
13
14
  return Astro.redirect(buildUrl(`/visualiser/domains/${props.data.id}/${props.data.version}?level=1`));
@@ -61,13 +61,6 @@ export class Page extends HybridPage {
61
61
  return item;
62
62
  }
63
63
 
64
- protected static createNotFoundResponse(): Response {
65
- return new Response(null, {
66
- status: 404,
67
- statusText: 'System Diagram page not found',
68
- });
69
- }
70
-
71
64
  static get clientAuthScript(): string {
72
65
  if (!isAuthEnabled() || !isVisualiserEnabled()) {
73
66
  return '';
@@ -8,6 +8,7 @@ export const getStaticPaths = Page.getStaticPaths;
8
8
 
9
9
  // Get data
10
10
  const props = await Page.getData(Astro);
11
+ if (!props) return Astro.rewrite('/404');
11
12
 
12
13
  // The System Context diagram is now level 1 of the system's visualiser page
13
14
  return Astro.redirect(buildUrl(`/visualiser/systems/${props.data.id}/${props.data.version}?level=1`));
@@ -11,6 +11,7 @@ export const getStaticPaths = Page.getStaticPaths;
11
11
 
12
12
  // Get data
13
13
  const props = await Page.getData(Astro);
14
+ if (!props) return Astro.rewrite('/404');
14
15
 
15
16
  const {
16
17
  data: { id },
@@ -24,7 +24,9 @@ export class HybridPage<T = any> {
24
24
  }
25
25
 
26
26
  /**
27
- * Static method for getting data
27
+ * The page's data: its props in a static build, or looked up from its URL on a server. Undefined
28
+ * when nothing matches (an unknown resource or version): the page then returns
29
+ * `Astro.rewrite('/404')`. Throwing a Response instead made Astro answer with an empty 500.
28
30
  */
29
31
  static async getData(astro: AstroGlobal): Promise<any> {
30
32
  // Try props first (static mode)
@@ -32,13 +34,7 @@ export class HybridPage<T = any> {
32
34
  return this.transformProps(astro.props);
33
35
  }
34
36
 
35
- const data = await this.fetchData(astro.params);
36
-
37
- if (!data) {
38
- throw this.createNotFoundResponse();
39
- }
40
-
41
- return data;
37
+ return (await this.fetchData(astro.params)) ?? undefined;
42
38
  }
43
39
 
44
40
  /**
@@ -58,11 +54,4 @@ export class HybridPage<T = any> {
58
54
  protected static transformProps(props: any): any {
59
55
  return props;
60
56
  }
61
-
62
- protected static createNotFoundResponse(): Response {
63
- return new Response(null, {
64
- status: 404,
65
- statusText: 'Not found',
66
- });
67
- }
68
57
  }
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "license": "BUSL-1.1",
9
9
  "type": "module",
10
- "version": "5.0.0-beta.20",
10
+ "version": "5.0.0-beta.22",
11
11
  "publishConfig": {
12
12
  "access": "public"
13
13
  },