@auto-engineer/server-generator-apollo-emmett 0.9.3 → 0.9.5

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/package.json CHANGED
@@ -28,8 +28,8 @@
28
28
  "graphql-type-json": "^0.3.2",
29
29
  "uuid": "^10.0.0",
30
30
  "web-streams-polyfill": "^4.1.0",
31
- "@auto-engineer/flow": "0.9.3",
32
- "@auto-engineer/message-bus": "0.9.3"
31
+ "@auto-engineer/message-bus": "0.9.5",
32
+ "@auto-engineer/flow": "0.9.5"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
@@ -37,9 +37,9 @@
37
37
  "devDependencies": {
38
38
  "@types/ejs": "^3.1.5",
39
39
  "@types/fs-extra": "^11.0.4",
40
- "@auto-engineer/cli": "0.9.3"
40
+ "@auto-engineer/cli": "0.9.5"
41
41
  },
42
- "version": "0.9.3",
42
+ "version": "0.9.5",
43
43
  "scripts": {
44
44
  "generate:server": "tsx src/cli/index.ts",
45
45
  "build": "tsc && tsx ../../scripts/fix-esm-imports.ts && rm -rf dist/src/codegen/templates && mkdir -p dist/src/codegen && cp -r src/codegen/templates dist/src/codegen/templates && cp src/server.ts dist/src && cp -r src/utils dist/src && cp -r src/domain dist/src",
@@ -93,11 +93,10 @@ export function getStreamFromSink(slice: Slice): { streamPattern?: string; strea
93
93
  if (!('server' in slice)) return {};
94
94
  const gwtSpecs = extractGwtSpecs(slice);
95
95
  const exampleData = extractExampleDataFromSpecs(slice, gwtSpecs);
96
- const serverData = slice.server?.data;
97
-
98
- if (!Array.isArray(serverData)) {
96
+ if (!('server' in slice) || slice.server == null || !('data' in slice.server) || !Array.isArray(slice.server.data)) {
99
97
  return {};
100
98
  }
99
+ const serverData = slice.server.data;
101
100
 
102
101
  for (const item of serverData) {
103
102
  const result = processStreamSink(item, exampleData);
@@ -2,6 +2,13 @@ import { Slice } from '@auto-engineer/flow';
2
2
  import { Message, MessageDefinition } from '../types';
3
3
  import { extractFieldsFromMessage } from './fields';
4
4
 
5
+ interface DataItem {
6
+ origin?: unknown;
7
+ target?: {
8
+ name?: string;
9
+ };
10
+ }
11
+
5
12
  function createStateMessage(stateName: string, allMessages: MessageDefinition[]): Message {
6
13
  return {
7
14
  type: stateName,
@@ -9,19 +16,31 @@ function createStateMessage(stateName: string, allMessages: MessageDefinition[])
9
16
  };
10
17
  }
11
18
 
19
+ function hasServerData(slice: Slice): slice is Slice & { server: { data: unknown[] } } {
20
+ return (
21
+ 'server' in slice &&
22
+ Boolean(slice.server) &&
23
+ 'data' in slice.server &&
24
+ Array.isArray(slice.server.data) &&
25
+ slice.server.data.length > 0
26
+ );
27
+ }
28
+
12
29
  export function extractStatesFromTarget(slice: Slice, allMessages: MessageDefinition[]): Message[] {
13
- if (!('server' in slice) || !slice.server?.data) {
30
+ if (!hasServerData(slice)) {
14
31
  return [];
15
32
  }
16
33
 
17
- const targets = slice.server.data.map((d) => d.target?.name).filter((name): name is string => Boolean(name));
34
+ const targets = slice.server.data
35
+ .map((d) => (d as DataItem).target?.name)
36
+ .filter((name): name is string => typeof name === 'string');
18
37
  const uniqueTargets = Array.from(new Set(targets));
19
38
 
20
39
  return uniqueTargets.map((name) => createStateMessage(name, allMessages));
21
40
  }
22
41
 
23
42
  export function extractStatesFromData(slice: Slice, allMessages: MessageDefinition[]): Message[] {
24
- if (!('server' in slice) || !slice.server?.data) {
43
+ if (!hasServerData(slice)) {
25
44
  return [];
26
45
  }
27
46
 
@@ -29,11 +48,12 @@ export function extractStatesFromData(slice: Slice, allMessages: MessageDefiniti
29
48
  const seenStates = new Set<string>();
30
49
 
31
50
  for (const dataItem of slice.server.data) {
32
- if (!('origin' in dataItem) || !dataItem.target?.name) {
51
+ const item = dataItem as DataItem;
52
+ if (!('origin' in item) || typeof item.target?.name !== 'string') {
33
53
  continue;
34
54
  }
35
55
 
36
- const stateName = dataItem.target.name;
56
+ const stateName = item.target.name;
37
57
  if (seenStates.has(stateName)) {
38
58
  continue;
39
59
  }