@auto-engineer/server-generator-nestjs 0.15.0 → 0.16.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +13 -12
  3. package/.turbo/turbo-build.log +0 -5
  4. package/dist/src/codegen/entity-consolidation.d.ts +0 -19
  5. package/dist/src/codegen/entity-consolidation.d.ts.map +0 -1
  6. package/dist/src/codegen/entity-consolidation.js +0 -134
  7. package/dist/src/codegen/entity-consolidation.js.map +0 -1
  8. package/dist/src/codegen/extract/commands.d.ts +0 -25
  9. package/dist/src/codegen/extract/commands.d.ts.map +0 -1
  10. package/dist/src/codegen/extract/commands.js +0 -67
  11. package/dist/src/codegen/extract/commands.js.map +0 -1
  12. package/dist/src/codegen/extract/data-sink.d.ts +0 -6
  13. package/dist/src/codegen/extract/data-sink.d.ts.map +0 -1
  14. package/dist/src/codegen/extract/data-sink.js +0 -78
  15. package/dist/src/codegen/extract/data-sink.js.map +0 -1
  16. package/dist/src/codegen/extract/events.d.ts +0 -10
  17. package/dist/src/codegen/extract/events.d.ts.map +0 -1
  18. package/dist/src/codegen/extract/events.js +0 -42
  19. package/dist/src/codegen/extract/events.js.map +0 -1
  20. package/dist/src/codegen/extract/fields.d.ts +0 -3
  21. package/dist/src/codegen/extract/fields.d.ts.map +0 -1
  22. package/dist/src/codegen/extract/fields.js +0 -9
  23. package/dist/src/codegen/extract/fields.js.map +0 -1
  24. package/dist/src/codegen/extract/graphql.d.ts +0 -14
  25. package/dist/src/codegen/extract/graphql.d.ts.map +0 -1
  26. package/dist/src/codegen/extract/graphql.js +0 -81
  27. package/dist/src/codegen/extract/graphql.js.map +0 -1
  28. package/dist/src/codegen/extract/gwt.d.ts +0 -6
  29. package/dist/src/codegen/extract/gwt.d.ts.map +0 -1
  30. package/dist/src/codegen/extract/gwt.js +0 -64
  31. package/dist/src/codegen/extract/gwt.js.map +0 -1
  32. package/dist/src/codegen/extract/imports.d.ts +0 -29
  33. package/dist/src/codegen/extract/imports.d.ts.map +0 -1
  34. package/dist/src/codegen/extract/imports.js +0 -55
  35. package/dist/src/codegen/extract/imports.js.map +0 -1
  36. package/dist/src/codegen/extract/index.d.ts +0 -10
  37. package/dist/src/codegen/extract/index.d.ts.map +0 -1
  38. package/dist/src/codegen/extract/index.js +0 -10
  39. package/dist/src/codegen/extract/index.js.map +0 -1
  40. package/dist/src/codegen/extract/messages.d.ts +0 -17
  41. package/dist/src/codegen/extract/messages.d.ts.map +0 -1
  42. package/dist/src/codegen/extract/messages.js +0 -172
  43. package/dist/src/codegen/extract/messages.js.map +0 -1
  44. package/dist/src/codegen/extract/projection.d.ts +0 -5
  45. package/dist/src/codegen/extract/projection.d.ts.map +0 -1
  46. package/dist/src/codegen/extract/projection.js +0 -44
  47. package/dist/src/codegen/extract/projection.js.map +0 -1
  48. package/dist/src/codegen/extract/query.d.ts +0 -14
  49. package/dist/src/codegen/extract/query.d.ts.map +0 -1
  50. package/dist/src/codegen/extract/query.js +0 -17
  51. package/dist/src/codegen/extract/query.js.map +0 -1
  52. package/dist/src/codegen/extract/states.d.ts +0 -5
  53. package/dist/src/codegen/extract/states.d.ts.map +0 -1
  54. package/dist/src/codegen/extract/states.js +0 -48
  55. package/dist/src/codegen/extract/states.js.map +0 -1
  56. package/dist/src/codegen/extract/step-converter.d.ts +0 -17
  57. package/dist/src/codegen/extract/step-converter.d.ts.map +0 -1
  58. package/dist/src/codegen/extract/step-converter.js +0 -82
  59. package/dist/src/codegen/extract/step-converter.js.map +0 -1
  60. package/dist/src/codegen/extract/step-types.d.ts +0 -29
  61. package/dist/src/codegen/extract/step-types.d.ts.map +0 -1
  62. package/dist/src/codegen/extract/step-types.js +0 -16
  63. package/dist/src/codegen/extract/step-types.js.map +0 -1
  64. package/dist/src/codegen/extract/type-helpers.d.ts +0 -13
  65. package/dist/src/codegen/extract/type-helpers.d.ts.map +0 -1
  66. package/dist/src/codegen/extract/type-helpers.js +0 -98
  67. package/dist/src/codegen/extract/type-helpers.js.map +0 -1
  68. package/dist/src/codegen/scaffoldFromSchema.d.ts +0 -9
  69. package/dist/src/codegen/scaffoldFromSchema.d.ts.map +0 -1
  70. package/dist/src/codegen/scaffoldFromSchema.js +0 -389
  71. package/dist/src/codegen/scaffoldFromSchema.js.map +0 -1
  72. package/dist/src/codegen/templates/command/command.ts.ejs +0 -16
  73. package/dist/src/codegen/templates/command/handler.specs.ts.ejs +0 -50
  74. package/dist/src/codegen/templates/command/handler.ts.ejs +0 -30
  75. package/dist/src/codegen/templates/command/input.ts.ejs +0 -23
  76. package/dist/src/codegen/templates/command/resolver.ts.ejs +0 -56
  77. package/dist/src/codegen/templates/entity/entity.ts.ejs +0 -35
  78. package/dist/src/codegen/templates/entity/index.ts.ejs +0 -6
  79. package/dist/src/codegen/templates/module/app-module.ts.ejs +0 -65
  80. package/dist/src/codegen/templates/module/domain-module.ts.ejs +0 -46
  81. package/dist/src/codegen/templates/query/handler.ts.ejs +0 -25
  82. package/dist/src/codegen/templates/query/query.ts.ejs +0 -1
  83. package/dist/src/codegen/templates/query/resolver.ts.ejs +0 -20
  84. package/dist/src/codegen/templates/query/type.ts.ejs +0 -24
  85. package/dist/src/codegen/types.d.ts +0 -38
  86. package/dist/src/codegen/types.d.ts.map +0 -1
  87. package/dist/src/codegen/types.js +0 -2
  88. package/dist/src/codegen/types.js.map +0 -1
  89. package/dist/src/codegen/utils/path.d.ts +0 -4
  90. package/dist/src/codegen/utils/path.d.ts.map +0 -1
  91. package/dist/src/codegen/utils/path.js +0 -18
  92. package/dist/src/codegen/utils/path.js.map +0 -1
  93. package/dist/src/commands/generate-server.d.ts +0 -28
  94. package/dist/src/commands/generate-server.d.ts.map +0 -1
  95. package/dist/src/commands/generate-server.js +0 -421
  96. package/dist/src/commands/generate-server.js.map +0 -1
  97. package/dist/src/index.d.ts +0 -3
  98. package/dist/src/index.d.ts.map +0 -1
  99. package/dist/src/index.js +0 -3
  100. package/dist/src/index.js.map +0 -1
  101. package/dist/src/shared/graphql-types.ts +0 -19
  102. package/dist/src/shared/main.ts +0 -27
  103. package/dist/src/shared/mikro-orm.config.ts +0 -18
  104. package/dist/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @auto-engineer/server-generator-nestjs
2
2
 
3
+ ## 0.16.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @auto-engineer/narrative@0.16.0
9
+
3
10
  ## 0.15.0
4
11
 
5
12
  ### Minor Changes
package/package.json CHANGED
@@ -40,7 +40,7 @@
40
40
  "ts-node": "^10.9.2",
41
41
  "type-fest": "^4.41.0",
42
42
  "uuid": "^11.0.0",
43
- "@auto-engineer/narrative": "0.15.0"
43
+ "@auto-engineer/narrative": "0.16.0"
44
44
  },
45
45
  "publishConfig": {
46
46
  "access": "public"
@@ -52,19 +52,20 @@
52
52
  "tsx": "^4.19.2",
53
53
  "typescript": "^5.8.3",
54
54
  "vitest": "^3.2.4",
55
- "@auto-engineer/cli": "0.15.0"
55
+ "@auto-engineer/cli": "0.16.0"
56
56
  },
57
- "version": "0.15.0",
57
+ "version": "0.16.0",
58
58
  "scripts": {
59
59
  "generate:server": "tsx src/cli/index.ts",
60
- "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 -r src/shared dist/src",
61
- "test": "vitest run --reporter=dot",
62
- "type-check": "tsc --noEmit --project tsconfig.json",
63
- "lint": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --ignore-pattern '**/.tmp/**' --ignore-pattern 'src/shared/**' --max-warnings 0 --config ../../eslint.config.ts",
64
- "format": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
65
- "lint:fix": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --ignore-pattern '**/.tmp/**' --fix --config ../../eslint.config.ts",
66
- "format:fix": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
67
- "link:dev": "pnpm build && pnpm link --global",
68
- "unlink:dev": "pnpm unlink --global"
60
+ "-DISABLE-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 -r src/shared dist/src",
61
+ "-DISABLE-test": "vitest run --reporter=dot",
62
+ "-DISABLE-type-check": "tsc --noEmit --project tsconfig.json",
63
+ "-DISABLE-lint": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --ignore-pattern '**/.tmp/**' --ignore-pattern 'src/shared/**' --max-warnings 0 --config ../../eslint.config.ts",
64
+ "-DISABLE-format": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
65
+ "-DISABLE-lint:fix": "eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --ignore-pattern '**/.tmp/**' --fix --config ../../eslint.config.ts",
66
+ "-DISABLE-format:fix": "prettier --write \"**/*.{js,ts,json,md,yml,yaml}\" --ignore-path ../../.prettierignore --log-level warn",
67
+ "-DISABLE-link:dev": "pnpm build && pnpm link --global",
68
+ "-DISABLE-unlink:dev": "pnpm unlink --global",
69
+ "-DISABLE-prepublishOnly": "npm run build"
69
70
  }
70
71
  }
@@ -1,5 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-nestjs@0.15.0 build /home/runner/work/auto-engineer/auto-engineer/packages/server-generator-nestjs
3
- > 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 -r src/shared dist/src
4
-
5
- Fixed ESM imports in dist/
@@ -1,19 +0,0 @@
1
- import type { Narrative } from '@auto-engineer/narrative';
2
- import type { MessageDefinition } from './types.js';
3
- export interface EntityField {
4
- name: string;
5
- tsType: string;
6
- nullable: boolean;
7
- isPrimary: boolean;
8
- isEnum: boolean;
9
- enumName?: string;
10
- indexed: boolean;
11
- }
12
- export interface ConsolidatedEntity {
13
- entityName: string;
14
- tableName: string;
15
- fields: EntityField[];
16
- enumImports: string[];
17
- }
18
- export declare function consolidateEntityFields(flow: Narrative, messages: MessageDefinition[], unionToEnumName: Map<string, string>): ConsolidatedEntity;
19
- //# sourceMappingURL=entity-consolidation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-consolidation.d.ts","sourceRoot":"","sources":["../../../src/codegen/entity-consolidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI1D,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAkKD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,kBAAkB,CAuBpB"}
@@ -1,134 +0,0 @@
1
- import { camelCase, pascalCase } from 'change-case';
2
- import createDebug from 'debug';
3
- import { extractMessagesFromSpecs } from './extract/index.js';
4
- const debug = createDebug('auto:server-generator-nestjs:entity');
5
- function isEnumType(tsType) {
6
- const cleanType = tsType.replace(/\s*\|\s*null\b/g, '').trim();
7
- return /^"[^"]+"(\s*\|\s*"[^"]+")+$/.test(cleanType) || /^'[^']+'(\s*\|\s*'[^']+)+$/.test(cleanType);
8
- }
9
- function detectPrimaryKeyField(fields, flowName) {
10
- const idCandidates = [`${camelCase(flowName)}Id`, 'id', `${camelCase(flowName)}ID`, 'ID'];
11
- for (const candidate of idCandidates) {
12
- const field = fields.find((f) => f.name === candidate);
13
- if (field) {
14
- return field.name;
15
- }
16
- }
17
- const stringFields = fields.filter((f) => f.tsType === 'string' && f.name.toLowerCase().includes('id'));
18
- if (stringFields.length > 0) {
19
- return stringFields[0].name;
20
- }
21
- return null;
22
- }
23
- function shouldIndexField(fieldName, tsType) {
24
- const indexableNames = ['status', 'type', 'category', 'state'];
25
- const nameLower = fieldName.toLowerCase();
26
- if (indexableNames.some((name) => nameLower.includes(name))) {
27
- return true;
28
- }
29
- if (isEnumType(tsType)) {
30
- return true;
31
- }
32
- return false;
33
- }
34
- function processFieldsFromMessages(fields, fieldMap, unionToEnumName, enumsUsed) {
35
- for (const field of fields) {
36
- if (field.name === 'now')
37
- continue;
38
- if (!fieldMap.has(field.name)) {
39
- const isEnum = isEnumType(field.tsType);
40
- const cleanType = field.tsType.replace(/\s*\|\s*null\b/g, '').trim();
41
- let enumName;
42
- if (isEnum) {
43
- const matches = cleanType.match(/'([^']+)'/g);
44
- const values = matches !== null ? matches.map((v) => v.slice(1, -1)) : [];
45
- const normalized = values
46
- .sort()
47
- .map((v) => `'${v}'`)
48
- .join(' | ');
49
- enumName = unionToEnumName.get(normalized);
50
- if (typeof enumName === 'string' && enumName.length > 0) {
51
- enumsUsed.add(enumName);
52
- }
53
- }
54
- fieldMap.set(field.name, {
55
- name: field.name,
56
- tsType: field.tsType,
57
- nullable: /\|\s*null\b/.test(field.tsType),
58
- isPrimary: false,
59
- isEnum,
60
- enumName,
61
- indexed: false,
62
- });
63
- }
64
- }
65
- }
66
- function processMessagesWithFields(messageArray, messageLabel, fieldMap, unionToEnumName, enumsUsed) {
67
- for (const msg of messageArray) {
68
- debug(' %s: %s with %d fields', messageLabel, msg.type, msg.fields.length);
69
- if (msg.fields.length > 0) {
70
- processFieldsFromMessages(msg.fields, fieldMap, unionToEnumName, enumsUsed);
71
- }
72
- }
73
- }
74
- function processCommandSlice(slice, messages, fieldMap, unionToEnumName, enumsUsed) {
75
- debug(' Processing slice: %s (type: %s)', slice.name, slice.type);
76
- const extracted = extractMessagesFromSpecs(slice, messages);
77
- processMessagesWithFields(extracted.commands, 'Command', fieldMap, unionToEnumName, enumsUsed);
78
- processMessagesWithFields(extracted.events, 'Event', fieldMap, unionToEnumName, enumsUsed);
79
- }
80
- function processQuerySlice(slice, messages, fieldMap, unionToEnumName, enumsUsed) {
81
- debug(' Processing slice: %s (type: %s)', slice.name, slice.type);
82
- const extracted = extractMessagesFromSpecs(slice, messages);
83
- processMessagesWithFields(extracted.states, 'State', fieldMap, unionToEnumName, enumsUsed);
84
- }
85
- function collectFieldsFromSlices(flow, messages, fieldMap, unionToEnumName, enumsUsed) {
86
- for (const slice of flow.slices) {
87
- if (slice.type === 'experience')
88
- continue;
89
- if (slice.type === 'command') {
90
- processCommandSlice(slice, messages, fieldMap, unionToEnumName, enumsUsed);
91
- }
92
- if (slice.type === 'query') {
93
- processQuerySlice(slice, messages, fieldMap, unionToEnumName, enumsUsed);
94
- }
95
- }
96
- }
97
- function markPrimaryKeyAndIndexes(fields, fieldMap, flowName) {
98
- const primaryKeyField = detectPrimaryKeyField(fields, flowName);
99
- if (typeof primaryKeyField === 'string' && primaryKeyField.length > 0) {
100
- const field = fieldMap.get(primaryKeyField);
101
- if (field !== undefined) {
102
- field.isPrimary = true;
103
- debug(' Detected primary key: %s', primaryKeyField);
104
- }
105
- }
106
- else {
107
- debug(' WARNING: No primary key detected for flow: %s', flowName);
108
- }
109
- for (const field of fields) {
110
- if (!field.isPrimary && shouldIndexField(field.name, field.tsType)) {
111
- field.indexed = true;
112
- debug(' Marking field for indexing: %s', field.name);
113
- }
114
- }
115
- }
116
- export function consolidateEntityFields(flow, messages, unionToEnumName) {
117
- debug('Consolidating entity fields for flow: %s', flow.name);
118
- const fieldMap = new Map();
119
- const enumsUsed = new Set();
120
- collectFieldsFromSlices(flow, messages, fieldMap, unionToEnumName, enumsUsed);
121
- const fields = Array.from(fieldMap.values());
122
- markPrimaryKeyAndIndexes(fields, fieldMap, flow.name);
123
- const entityName = pascalCase(flow.name) + 'Entity';
124
- const tableName = camelCase(flow.name) + 's';
125
- debug('Consolidated entity: %s with %d fields', entityName, fields.length);
126
- debug(' Enum imports: %o', Array.from(enumsUsed));
127
- return {
128
- entityName,
129
- tableName,
130
- fields,
131
- enumImports: Array.from(enumsUsed),
132
- };
133
- }
134
- //# sourceMappingURL=entity-consolidation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-consolidation.js","sourceRoot":"","sources":["../../../src/codegen/entity-consolidation.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { Message, MessageDefinition } from '../types';
2
- import type { CommandExample, EventExample } from './step-types';
3
- export declare function extractCommandsFromGwt(gwtSpecs: Array<{
4
- given?: Array<EventExample | unknown>;
5
- when?: CommandExample | EventExample | unknown[];
6
- then: Array<EventExample | unknown | {
7
- errorType: string;
8
- message?: string;
9
- }>;
10
- }>, allMessages: MessageDefinition[]): {
11
- commands: Message[];
12
- commandSchemasByName: Record<string, Message>;
13
- };
14
- export declare function extractCommandsFromThen(gwtSpecs: Array<{
15
- given?: Array<EventExample | unknown>;
16
- when?: CommandExample | EventExample | unknown[];
17
- then: Array<EventExample | unknown | {
18
- errorType: string;
19
- message?: string;
20
- }>;
21
- }>, allMessages: MessageDefinition[]): {
22
- commands: Message[];
23
- commandSchemasByName: Record<string, Message>;
24
- };
25
- //# sourceMappingURL=commands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAoBjE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC;IACjD,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E,CAAC,EACF,WAAW,EAAE,iBAAiB,EAAE,GAC/B;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAwBxE;AAgCD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC;IACjD,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E,CAAC,EACF,WAAW,EAAE,iBAAiB,EAAE,GAC/B;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAexE"}
@@ -1,67 +0,0 @@
1
- import { extractFieldsFromMessage } from './fields.js';
2
- function createCommandMessage(commandRef, allMessages, source) {
3
- const fields = extractFieldsFromMessage(commandRef, 'command', allMessages);
4
- if (fields.length === 0 && source === 'then') {
5
- return undefined;
6
- }
7
- return {
8
- type: commandRef,
9
- fields,
10
- source,
11
- };
12
- }
13
- export function extractCommandsFromGwt(gwtSpecs, allMessages) {
14
- const commandSchemasByName = {};
15
- const commands = gwtSpecs
16
- .map((gwt) => {
17
- const cmd = gwt.when;
18
- if (Array.isArray(cmd) ||
19
- typeof cmd !== 'object' ||
20
- cmd === null ||
21
- !('commandRef' in cmd) ||
22
- typeof cmd.commandRef !== 'string' ||
23
- !cmd.commandRef)
24
- return undefined;
25
- const command = createCommandMessage(cmd.commandRef, allMessages, 'when');
26
- if (command) {
27
- commandSchemasByName[cmd.commandRef] = command;
28
- }
29
- return command;
30
- })
31
- .filter((cmd) => cmd !== undefined);
32
- return { commands, commandSchemasByName };
33
- }
34
- function isValidCommandExample(commandExample) {
35
- return (typeof commandExample === 'object' &&
36
- commandExample !== null &&
37
- 'commandRef' in commandExample &&
38
- typeof commandExample.commandRef === 'string' &&
39
- !!commandExample.commandRef);
40
- }
41
- function processCommandExample(commandExample, commands, commandSchemasByName, allMessages) {
42
- if (!isValidCommandExample(commandExample)) {
43
- return;
44
- }
45
- const commandRef = commandExample.commandRef;
46
- if (!(commandRef in commandSchemasByName)) {
47
- const command = createCommandMessage(commandRef, allMessages, 'then');
48
- if (command) {
49
- commands.push(command);
50
- commandSchemasByName[commandRef] = command;
51
- }
52
- }
53
- }
54
- export function extractCommandsFromThen(gwtSpecs, allMessages) {
55
- const commands = [];
56
- const commandSchemasByName = {};
57
- for (const gwt of gwtSpecs) {
58
- if (!Array.isArray(gwt.then)) {
59
- continue;
60
- }
61
- for (const commandExample of gwt.then) {
62
- processCommandExample(commandExample, commands, commandSchemasByName, allMessages);
63
- }
64
- }
65
- return { commands, commandSchemasByName };
66
- }
67
- //# sourceMappingURL=commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/codegen/extract/commands.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { Slice } from '@auto-engineer/narrative';
2
- export declare function getStreamFromSink(slice: Slice): {
3
- streamPattern?: string;
4
- streamId?: string;
5
- };
6
- //# sourceMappingURL=data-sink.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-sink.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/data-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AA2EtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB7F"}
@@ -1,78 +0,0 @@
1
- import { extractGwtSpecsFromSlice } from './step-converter.js';
2
- function resolveStreamId(stream, exampleData) {
3
- return stream.replace(/\$\{([^}]+)\}/g, (_, key) => String(exampleData?.[key] ?? 'unknown'));
4
- }
5
- function extractExampleDataFromReact(firstSpec) {
6
- if (Array.isArray(firstSpec.when)) {
7
- const firstWhen = firstSpec.when[0];
8
- return typeof firstWhen?.exampleData === 'object' && firstWhen.exampleData !== null ? firstWhen.exampleData : {};
9
- }
10
- return {};
11
- }
12
- function extractExampleDataFromCommand(firstSpec) {
13
- const then = firstSpec.then;
14
- const firstExample = then.find((t) => 'exampleData' in t);
15
- return typeof firstExample?.exampleData === 'object' && firstExample.exampleData !== null
16
- ? firstExample.exampleData
17
- : {};
18
- }
19
- function extractExampleDataFromQuery(firstSpec) {
20
- if (Array.isArray(firstSpec.when)) {
21
- const firstWhen = firstSpec.when[0];
22
- return typeof firstWhen?.exampleData === 'object' && firstWhen.exampleData !== null ? firstWhen.exampleData : {};
23
- }
24
- return {};
25
- }
26
- function extractExampleDataFromSpecs(slice, gwtSpecs) {
27
- if (gwtSpecs.length === 0) {
28
- return {};
29
- }
30
- const firstSpec = gwtSpecs[0];
31
- switch (slice.type) {
32
- case 'react':
33
- return extractExampleDataFromReact(firstSpec);
34
- case 'command':
35
- return extractExampleDataFromCommand(firstSpec);
36
- case 'query':
37
- return extractExampleDataFromQuery(firstSpec);
38
- default:
39
- return {};
40
- }
41
- }
42
- function isValidStreamSink(item) {
43
- return (typeof item === 'object' &&
44
- item !== null &&
45
- 'destination' in item &&
46
- typeof item.destination === 'object' &&
47
- item.destination !== null &&
48
- 'type' in item.destination &&
49
- item.destination.type === 'stream' &&
50
- 'pattern' in item.destination &&
51
- typeof item.destination.pattern === 'string');
52
- }
53
- function processStreamSink(item, exampleData) {
54
- if (!isValidStreamSink(item)) {
55
- return null;
56
- }
57
- const streamPattern = item.destination.pattern;
58
- const streamId = streamPattern.length > 0 ? resolveStreamId(streamPattern, exampleData) : undefined;
59
- return { streamPattern, streamId };
60
- }
61
- export function getStreamFromSink(slice) {
62
- if (!('server' in slice))
63
- return {};
64
- const gwtSpecs = extractGwtSpecsFromSlice(slice);
65
- const exampleData = extractExampleDataFromSpecs(slice, gwtSpecs);
66
- if (!('server' in slice) || slice.server == null || !('data' in slice.server) || !Array.isArray(slice.server.data)) {
67
- return {};
68
- }
69
- const serverData = slice.server.data;
70
- for (const item of serverData) {
71
- const result = processStreamSink(item, exampleData);
72
- if (result) {
73
- return result;
74
- }
75
- }
76
- return {};
77
- }
78
- //# sourceMappingURL=data-sink.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-sink.js","sourceRoot":"","sources":["../../../../src/codegen/extract/data-sink.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { Message, MessageDefinition } from '../types';
2
- import type { ReactGwtSpec } from './messages';
3
- import type { EventExample } from './step-types';
4
- export declare function extractEventsFromThen(thenItems: Array<EventExample | {
5
- errorType: string;
6
- message?: string;
7
- }>, allMessages: MessageDefinition[], currentSliceName?: string, currentFlowName?: string): Message[];
8
- export declare function extractEventsFromGiven(givenEvents: EventExample[] | undefined, allMessages: MessageDefinition[], currentSliceName?: string, currentFlowName?: string): Message[];
9
- export declare function extractEventsFromWhen(gwtSpecs: ReactGwtSpec[], allMessages: MessageDefinition[]): Message[];
10
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAyBjD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,KAAK,CAAC,YAAY,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACxE,WAAW,EAAE,iBAAiB,EAAE,EAChC,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,EAAE,CAOX;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,YAAY,EAAE,GAAG,SAAS,EACvC,WAAW,EAAE,iBAAiB,EAAE,EAChC,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,EAAE,CAMX;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAO3G"}
@@ -1,42 +0,0 @@
1
- import { extractFieldsFromMessage } from './fields.js';
2
- function createEventMessage(eventRef, source, allMessages, currentSliceName, currentFlowName) {
3
- if (eventRef == null)
4
- return undefined;
5
- const fields = extractFieldsFromMessage(eventRef, 'event', allMessages);
6
- const messageDef = allMessages.find((m) => m.type === 'event' && m.name === eventRef);
7
- const metadata = messageDef?.metadata;
8
- const sourceFlowName = metadata?.sourceFlowName ?? currentFlowName;
9
- const sourceSliceName = metadata?.sourceSliceName ?? currentSliceName;
10
- return {
11
- type: eventRef,
12
- fields,
13
- source,
14
- sourceFlowName,
15
- sourceSliceName,
16
- };
17
- }
18
- export function extractEventsFromThen(thenItems, allMessages, currentSliceName, currentFlowName) {
19
- return thenItems
20
- .map((then) => {
21
- if (!('eventRef' in then))
22
- return undefined;
23
- return createEventMessage(then.eventRef, 'then', allMessages, currentSliceName, currentFlowName);
24
- })
25
- .filter((event) => event !== undefined);
26
- }
27
- export function extractEventsFromGiven(givenEvents, allMessages, currentSliceName, currentFlowName) {
28
- if (!givenEvents)
29
- return [];
30
- return givenEvents
31
- .map((given) => createEventMessage(given.eventRef, 'given', allMessages, currentSliceName, currentFlowName))
32
- .filter((event) => event !== undefined);
33
- }
34
- export function extractEventsFromWhen(gwtSpecs, allMessages) {
35
- return gwtSpecs.flatMap((gwt) => {
36
- if (!Array.isArray(gwt.when)) {
37
- return [];
38
- }
39
- return gwt.when.flatMap((eventExample) => extractEventsFromGiven([eventExample], allMessages));
40
- });
41
- }
42
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/codegen/extract/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAIpD,SAAS,kBAAkB,CACzB,QAA4B,EAC5B,MAAiC,EACjC,WAAgC,EAChC,gBAAyB,EACzB,eAAwB;IAExB,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,UAAU,EAAE,QAA6E,CAAC;IAC3G,MAAM,cAAc,GAAG,QAAQ,EAAE,cAAc,IAAI,eAAe,CAAC;IACnE,MAAM,eAAe,GAAG,QAAQ,EAAE,eAAe,IAAI,gBAAgB,CAAC;IAEtE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,MAAM;QACN,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAwE,EACxE,WAAgC,EAChC,gBAAyB,EACzB,eAAwB;IAExB,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,IAAI,EAAuB,EAAE;QACjC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IACnG,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,WAAuC,EACvC,WAAgC,EAChC,gBAAyB,EACzB,eAAwB;IAExB,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE5B,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;SAC3G,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAwB,EAAE,WAAgC;IAC9F,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Field, MessageDefinition } from '../types';
2
- export declare function extractFieldsFromMessage(messageName: string, messageType: 'command' | 'event' | 'state', allMessages: MessageDefinition[]): Field[];
3
- //# sourceMappingURL=fields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEzD,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,EAC1C,WAAW,EAAE,iBAAiB,EAAE,GAC/B,KAAK,EAAE,CAUT"}
@@ -1,9 +0,0 @@
1
- export function extractFieldsFromMessage(messageName, messageType, allMessages) {
2
- const messageDef = allMessages.find((m) => m.type === messageType && m.name === messageName);
3
- return (messageDef?.fields?.map((f) => ({
4
- name: f.name,
5
- tsType: f.type,
6
- required: f.required ?? true,
7
- })) ?? []);
8
- }
9
- //# sourceMappingURL=fields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../src/codegen/extract/fields.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,WAA0C,EAC1C,WAAgC;IAEhC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAE7F,OAAO,CACL,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;KAC7B,CAAC,CAAC,IAAI,EAAE,CACV,CAAC;AACJ,CAAC"}
@@ -1,14 +0,0 @@
1
- export interface ParsedArg {
2
- name: string;
3
- tsType: string;
4
- graphqlType: string;
5
- nullable: boolean;
6
- }
7
- export interface ParsedGraphQlQuery {
8
- queryName: string;
9
- args: ParsedArg[];
10
- returnType: string;
11
- tsReturnType: string;
12
- }
13
- export declare function parseGraphQlRequest(request: string): ParsedGraphQlQuery;
14
- //# sourceMappingURL=graphql.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/graphql.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8CD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAsCvE"}
@@ -1,81 +0,0 @@
1
- import { parse, print } from 'graphql';
2
- function getTypeName(typeNode) {
3
- if (typeNode.kind === 'NamedType') {
4
- return { graphqlType: typeNode.name.value, nullable: true };
5
- }
6
- else if (typeNode.kind === 'NonNullType') {
7
- const inner = getTypeName(typeNode.type);
8
- return { ...inner, nullable: false };
9
- }
10
- else {
11
- return getTypeName(typeNode.type);
12
- }
13
- }
14
- function graphqlToTs(type) {
15
- switch (type) {
16
- case 'String':
17
- return 'string';
18
- case 'Int':
19
- case 'Float':
20
- case 'Number':
21
- return 'number';
22
- case 'Boolean':
23
- return 'boolean';
24
- case 'Date':
25
- return 'Date';
26
- default:
27
- return type;
28
- }
29
- }
30
- function convertJsonAstToSdl(request) {
31
- // Handle JSON-serialized AST
32
- if (request.startsWith('{') && request.includes('"kind"')) {
33
- try {
34
- const ast = JSON.parse(request);
35
- if (typeof ast === 'object' && ast !== null && 'kind' in ast && ast.kind === 'Document') {
36
- // Convert AST to SDL string - cast is safe here as we've validated it's a Document
37
- return print(ast);
38
- }
39
- }
40
- catch {
41
- // If parsing fails, assume it's already a GraphQL string
42
- }
43
- }
44
- return request;
45
- }
46
- export function parseGraphQlRequest(request) {
47
- const sdlRequest = convertJsonAstToSdl(request);
48
- const ast = parse(sdlRequest);
49
- const op = ast.definitions.find((d) => d.kind === 'OperationDefinition' && d.operation === 'query');
50
- if (!op)
51
- throw new Error('No query operation found');
52
- const queryName = op.name?.value;
53
- if (queryName == null)
54
- throw new Error('Query must have a name');
55
- const args = (op.variableDefinitions ?? []).map((def) => {
56
- const varName = def.variable.name.value;
57
- const { graphqlType, nullable } = getTypeName(def.type);
58
- return {
59
- name: varName,
60
- graphqlType,
61
- tsType: graphqlToTs(graphqlType),
62
- nullable,
63
- };
64
- });
65
- const field = op.selectionSet.selections[0];
66
- if (field?.kind !== 'Field' || !field.name.value) {
67
- throw new Error('Query selection must be a field');
68
- }
69
- const baseName = field.name.value;
70
- const returnType = pascalCase(baseName) + 'View';
71
- return {
72
- queryName: baseName,
73
- args,
74
- returnType,
75
- tsReturnType: `${returnType}[]`,
76
- };
77
- }
78
- function pascalCase(input) {
79
- return input.replace(/(^\w|_\w)/g, (match) => match.replace('_', '').toUpperCase());
80
- }
81
- //# sourceMappingURL=graphql.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../../src/codegen/extract/graphql.ts"],"names":[],"mappings":"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"}