@auto-engineer/server-generator-nestjs 0.19.0 → 0.20.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 (106) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-test.log +13 -0
  3. package/.turbo/turbo-type-check.log +4 -0
  4. package/CHANGELOG.md +7 -0
  5. package/dist/src/codegen/entity-consolidation.d.ts +19 -0
  6. package/dist/src/codegen/entity-consolidation.d.ts.map +1 -0
  7. package/dist/src/codegen/entity-consolidation.js +134 -0
  8. package/dist/src/codegen/entity-consolidation.js.map +1 -0
  9. package/dist/src/codegen/extract/commands.d.ts +25 -0
  10. package/dist/src/codegen/extract/commands.d.ts.map +1 -0
  11. package/dist/src/codegen/extract/commands.js +67 -0
  12. package/dist/src/codegen/extract/commands.js.map +1 -0
  13. package/dist/src/codegen/extract/data-sink.d.ts +6 -0
  14. package/dist/src/codegen/extract/data-sink.d.ts.map +1 -0
  15. package/dist/src/codegen/extract/data-sink.js +78 -0
  16. package/dist/src/codegen/extract/data-sink.js.map +1 -0
  17. package/dist/src/codegen/extract/events.d.ts +10 -0
  18. package/dist/src/codegen/extract/events.d.ts.map +1 -0
  19. package/dist/src/codegen/extract/events.js +42 -0
  20. package/dist/src/codegen/extract/events.js.map +1 -0
  21. package/dist/src/codegen/extract/fields.d.ts +3 -0
  22. package/dist/src/codegen/extract/fields.d.ts.map +1 -0
  23. package/dist/src/codegen/extract/fields.js +9 -0
  24. package/dist/src/codegen/extract/fields.js.map +1 -0
  25. package/dist/src/codegen/extract/graphql.d.ts +14 -0
  26. package/dist/src/codegen/extract/graphql.d.ts.map +1 -0
  27. package/dist/src/codegen/extract/graphql.js +81 -0
  28. package/dist/src/codegen/extract/graphql.js.map +1 -0
  29. package/dist/src/codegen/extract/gwt.d.ts +6 -0
  30. package/dist/src/codegen/extract/gwt.d.ts.map +1 -0
  31. package/dist/src/codegen/extract/gwt.js +64 -0
  32. package/dist/src/codegen/extract/gwt.js.map +1 -0
  33. package/dist/src/codegen/extract/imports.d.ts +29 -0
  34. package/dist/src/codegen/extract/imports.d.ts.map +1 -0
  35. package/dist/src/codegen/extract/imports.js +55 -0
  36. package/dist/src/codegen/extract/imports.js.map +1 -0
  37. package/dist/src/codegen/extract/index.d.ts +10 -0
  38. package/dist/src/codegen/extract/index.d.ts.map +1 -0
  39. package/dist/src/codegen/extract/index.js +10 -0
  40. package/dist/src/codegen/extract/index.js.map +1 -0
  41. package/dist/src/codegen/extract/messages.d.ts +17 -0
  42. package/dist/src/codegen/extract/messages.d.ts.map +1 -0
  43. package/dist/src/codegen/extract/messages.js +172 -0
  44. package/dist/src/codegen/extract/messages.js.map +1 -0
  45. package/dist/src/codegen/extract/projection.d.ts +5 -0
  46. package/dist/src/codegen/extract/projection.d.ts.map +1 -0
  47. package/dist/src/codegen/extract/projection.js +44 -0
  48. package/dist/src/codegen/extract/projection.js.map +1 -0
  49. package/dist/src/codegen/extract/query.d.ts +14 -0
  50. package/dist/src/codegen/extract/query.d.ts.map +1 -0
  51. package/dist/src/codegen/extract/query.js +17 -0
  52. package/dist/src/codegen/extract/query.js.map +1 -0
  53. package/dist/src/codegen/extract/states.d.ts +5 -0
  54. package/dist/src/codegen/extract/states.d.ts.map +1 -0
  55. package/dist/src/codegen/extract/states.js +48 -0
  56. package/dist/src/codegen/extract/states.js.map +1 -0
  57. package/dist/src/codegen/extract/step-converter.d.ts +17 -0
  58. package/dist/src/codegen/extract/step-converter.d.ts.map +1 -0
  59. package/dist/src/codegen/extract/step-converter.js +82 -0
  60. package/dist/src/codegen/extract/step-converter.js.map +1 -0
  61. package/dist/src/codegen/extract/step-types.d.ts +29 -0
  62. package/dist/src/codegen/extract/step-types.d.ts.map +1 -0
  63. package/dist/src/codegen/extract/step-types.js +16 -0
  64. package/dist/src/codegen/extract/step-types.js.map +1 -0
  65. package/dist/src/codegen/extract/type-helpers.d.ts +13 -0
  66. package/dist/src/codegen/extract/type-helpers.d.ts.map +1 -0
  67. package/dist/src/codegen/extract/type-helpers.js +98 -0
  68. package/dist/src/codegen/extract/type-helpers.js.map +1 -0
  69. package/dist/src/codegen/scaffoldFromSchema.d.ts +9 -0
  70. package/dist/src/codegen/scaffoldFromSchema.d.ts.map +1 -0
  71. package/dist/src/codegen/scaffoldFromSchema.js +389 -0
  72. package/dist/src/codegen/scaffoldFromSchema.js.map +1 -0
  73. package/dist/src/codegen/templates/command/command.ts.ejs +16 -0
  74. package/dist/src/codegen/templates/command/handler.specs.ts.ejs +50 -0
  75. package/dist/src/codegen/templates/command/handler.ts.ejs +30 -0
  76. package/dist/src/codegen/templates/command/input.ts.ejs +23 -0
  77. package/dist/src/codegen/templates/command/resolver.ts.ejs +56 -0
  78. package/dist/src/codegen/templates/entity/entity.ts.ejs +35 -0
  79. package/dist/src/codegen/templates/entity/index.ts.ejs +6 -0
  80. package/dist/src/codegen/templates/module/app-module.ts.ejs +65 -0
  81. package/dist/src/codegen/templates/module/domain-module.ts.ejs +46 -0
  82. package/dist/src/codegen/templates/query/handler.ts.ejs +25 -0
  83. package/dist/src/codegen/templates/query/query.ts.ejs +1 -0
  84. package/dist/src/codegen/templates/query/resolver.ts.ejs +20 -0
  85. package/dist/src/codegen/templates/query/type.ts.ejs +24 -0
  86. package/dist/src/codegen/types.d.ts +38 -0
  87. package/dist/src/codegen/types.d.ts.map +1 -0
  88. package/dist/src/codegen/types.js +2 -0
  89. package/dist/src/codegen/types.js.map +1 -0
  90. package/dist/src/codegen/utils/path.d.ts +4 -0
  91. package/dist/src/codegen/utils/path.d.ts.map +1 -0
  92. package/dist/src/codegen/utils/path.js +18 -0
  93. package/dist/src/codegen/utils/path.js.map +1 -0
  94. package/dist/src/commands/generate-server.d.ts +28 -0
  95. package/dist/src/commands/generate-server.d.ts.map +1 -0
  96. package/dist/src/commands/generate-server.js +421 -0
  97. package/dist/src/commands/generate-server.js.map +1 -0
  98. package/dist/src/index.d.ts +3 -0
  99. package/dist/src/index.d.ts.map +1 -0
  100. package/dist/src/index.js +3 -0
  101. package/dist/src/index.js.map +1 -0
  102. package/dist/src/shared/graphql-types.ts +19 -0
  103. package/dist/src/shared/main.ts +27 -0
  104. package/dist/src/shared/mikro-orm.config.ts +18 -0
  105. package/dist/tsconfig.tsbuildinfo +1 -0
  106. package/package.json +3 -3
@@ -0,0 +1,5 @@
1
+
2
+ > @auto-engineer/server-generator-nestjs@0.11.16 build /Users/sam/WebstormProjects/top/auto-engineer-1/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/
@@ -0,0 +1,13 @@
1
+
2
+ > @auto-engineer/server-generator-nestjs@0.15.0 test /Users/sam/WebstormProjects/top/auto-engineer-1/packages/server-generator-nestjs
3
+ > vitest run --reporter=dot
4
+
5
+
6
+ RUN v3.2.4 /Users/sam/WebstormProjects/top/auto-engineer-1/packages/server-generator-nestjs
7
+
8
+
9
+ No test files found, exiting with code 0
10
+
11
+ include: **/*.specs.{js,ts}
12
+ exclude: **/.tmp/**, **/node_modules/**, **/dist/**, **/examples/**, **/create-auto-app/templates/**, **/*-starter/**, **/vite.config.ts
13
+
@@ -0,0 +1,4 @@
1
+
2
+ > @auto-engineer/server-generator-nestjs@0.15.0 type-check /Users/sam/WebstormProjects/top/auto-engineer-1/packages/server-generator-nestjs
3
+ > tsc --noEmit --project tsconfig.json
4
+
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @auto-engineer/server-generator-nestjs
2
2
 
3
+ ## 0.20.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies []:
8
+ - @auto-engineer/narrative@0.20.0
9
+
3
10
  ## 0.19.0
4
11
 
5
12
  ### Minor Changes
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,134 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-consolidation.js","sourceRoot":"","sources":["../../../src/codegen/entity-consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,67 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../../src/codegen/extract/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,78 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sink.js","sourceRoot":"","sources":["../../../../src/codegen/extract/data-sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,42 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,14 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,81 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../../src/codegen/extract/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,EAAE,KAAK,EAAiB,MAAM,SAAS,CAAC;AAgBpF,SAAS,WAAW,CAAC,QAAkB;IACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,6BAA6B;IAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;YAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxF,mFAAmF;gBACnF,OAAO,KAAK,CAAC,GAAkC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,CACjG,CAAC;IAEF,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;IACjC,IAAI,SAAS,IAAI,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAgB,CAAC,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW;YACX,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;YAChC,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IAEjD,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,IAAI;QACJ,UAAU;QACV,YAAY,EAAE,GAAG,UAAU,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Slice } from '@auto-engineer/narrative';
2
+ import type { GwtCondition } from '../types';
3
+ export declare function buildCommandGwtMapping(slice: Slice): Record<string, (GwtCondition & {
4
+ failingFields?: string[];
5
+ })[]>;
6
+ //# sourceMappingURL=gwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gwt.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/gwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,CAAC,CAQpH"}