@auto-engineer/server-generator-nestjs 0.11.16

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 (143) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/LICENSE +10 -0
  3. package/README.md +290 -0
  4. package/dist/src/codegen/entity-consolidation.d.ts +19 -0
  5. package/dist/src/codegen/entity-consolidation.d.ts.map +1 -0
  6. package/dist/src/codegen/entity-consolidation.js +134 -0
  7. package/dist/src/codegen/entity-consolidation.js.map +1 -0
  8. package/dist/src/codegen/extract/commands.d.ts +25 -0
  9. package/dist/src/codegen/extract/commands.d.ts.map +1 -0
  10. package/dist/src/codegen/extract/commands.js +67 -0
  11. package/dist/src/codegen/extract/commands.js.map +1 -0
  12. package/dist/src/codegen/extract/data-sink.d.ts +6 -0
  13. package/dist/src/codegen/extract/data-sink.d.ts.map +1 -0
  14. package/dist/src/codegen/extract/data-sink.js +78 -0
  15. package/dist/src/codegen/extract/data-sink.js.map +1 -0
  16. package/dist/src/codegen/extract/events.d.ts +10 -0
  17. package/dist/src/codegen/extract/events.d.ts.map +1 -0
  18. package/dist/src/codegen/extract/events.js +42 -0
  19. package/dist/src/codegen/extract/events.js.map +1 -0
  20. package/dist/src/codegen/extract/fields.d.ts +3 -0
  21. package/dist/src/codegen/extract/fields.d.ts.map +1 -0
  22. package/dist/src/codegen/extract/fields.js +9 -0
  23. package/dist/src/codegen/extract/fields.js.map +1 -0
  24. package/dist/src/codegen/extract/graphql.d.ts +14 -0
  25. package/dist/src/codegen/extract/graphql.d.ts.map +1 -0
  26. package/dist/src/codegen/extract/graphql.js +81 -0
  27. package/dist/src/codegen/extract/graphql.js.map +1 -0
  28. package/dist/src/codegen/extract/gwt.d.ts +6 -0
  29. package/dist/src/codegen/extract/gwt.d.ts.map +1 -0
  30. package/dist/src/codegen/extract/gwt.js +64 -0
  31. package/dist/src/codegen/extract/gwt.js.map +1 -0
  32. package/dist/src/codegen/extract/imports.d.ts +29 -0
  33. package/dist/src/codegen/extract/imports.d.ts.map +1 -0
  34. package/dist/src/codegen/extract/imports.js +55 -0
  35. package/dist/src/codegen/extract/imports.js.map +1 -0
  36. package/dist/src/codegen/extract/index.d.ts +10 -0
  37. package/dist/src/codegen/extract/index.d.ts.map +1 -0
  38. package/dist/src/codegen/extract/index.js +10 -0
  39. package/dist/src/codegen/extract/index.js.map +1 -0
  40. package/dist/src/codegen/extract/messages.d.ts +17 -0
  41. package/dist/src/codegen/extract/messages.d.ts.map +1 -0
  42. package/dist/src/codegen/extract/messages.js +172 -0
  43. package/dist/src/codegen/extract/messages.js.map +1 -0
  44. package/dist/src/codegen/extract/projection.d.ts +5 -0
  45. package/dist/src/codegen/extract/projection.d.ts.map +1 -0
  46. package/dist/src/codegen/extract/projection.js +44 -0
  47. package/dist/src/codegen/extract/projection.js.map +1 -0
  48. package/dist/src/codegen/extract/query.d.ts +14 -0
  49. package/dist/src/codegen/extract/query.d.ts.map +1 -0
  50. package/dist/src/codegen/extract/query.js +17 -0
  51. package/dist/src/codegen/extract/query.js.map +1 -0
  52. package/dist/src/codegen/extract/states.d.ts +5 -0
  53. package/dist/src/codegen/extract/states.d.ts.map +1 -0
  54. package/dist/src/codegen/extract/states.js +48 -0
  55. package/dist/src/codegen/extract/states.js.map +1 -0
  56. package/dist/src/codegen/extract/step-converter.d.ts +17 -0
  57. package/dist/src/codegen/extract/step-converter.d.ts.map +1 -0
  58. package/dist/src/codegen/extract/step-converter.js +82 -0
  59. package/dist/src/codegen/extract/step-converter.js.map +1 -0
  60. package/dist/src/codegen/extract/step-types.d.ts +29 -0
  61. package/dist/src/codegen/extract/step-types.d.ts.map +1 -0
  62. package/dist/src/codegen/extract/step-types.js +16 -0
  63. package/dist/src/codegen/extract/step-types.js.map +1 -0
  64. package/dist/src/codegen/extract/type-helpers.d.ts +13 -0
  65. package/dist/src/codegen/extract/type-helpers.d.ts.map +1 -0
  66. package/dist/src/codegen/extract/type-helpers.js +98 -0
  67. package/dist/src/codegen/extract/type-helpers.js.map +1 -0
  68. package/dist/src/codegen/scaffoldFromSchema.d.ts +9 -0
  69. package/dist/src/codegen/scaffoldFromSchema.d.ts.map +1 -0
  70. package/dist/src/codegen/scaffoldFromSchema.js +389 -0
  71. package/dist/src/codegen/scaffoldFromSchema.js.map +1 -0
  72. package/dist/src/codegen/templates/command/command.ts.ejs +16 -0
  73. package/dist/src/codegen/templates/command/handler.specs.ts.ejs +50 -0
  74. package/dist/src/codegen/templates/command/handler.ts.ejs +30 -0
  75. package/dist/src/codegen/templates/command/input.ts.ejs +23 -0
  76. package/dist/src/codegen/templates/command/resolver.ts.ejs +56 -0
  77. package/dist/src/codegen/templates/entity/entity.ts.ejs +35 -0
  78. package/dist/src/codegen/templates/entity/index.ts.ejs +6 -0
  79. package/dist/src/codegen/templates/module/app-module.ts.ejs +65 -0
  80. package/dist/src/codegen/templates/module/domain-module.ts.ejs +46 -0
  81. package/dist/src/codegen/templates/query/handler.ts.ejs +25 -0
  82. package/dist/src/codegen/templates/query/query.ts.ejs +1 -0
  83. package/dist/src/codegen/templates/query/resolver.ts.ejs +20 -0
  84. package/dist/src/codegen/templates/query/type.ts.ejs +24 -0
  85. package/dist/src/codegen/types.d.ts +38 -0
  86. package/dist/src/codegen/types.d.ts.map +1 -0
  87. package/dist/src/codegen/types.js +2 -0
  88. package/dist/src/codegen/types.js.map +1 -0
  89. package/dist/src/codegen/utils/path.d.ts +4 -0
  90. package/dist/src/codegen/utils/path.d.ts.map +1 -0
  91. package/dist/src/codegen/utils/path.js +18 -0
  92. package/dist/src/codegen/utils/path.js.map +1 -0
  93. package/dist/src/commands/generate-server.d.ts +28 -0
  94. package/dist/src/commands/generate-server.d.ts.map +1 -0
  95. package/dist/src/commands/generate-server.js +421 -0
  96. package/dist/src/commands/generate-server.js.map +1 -0
  97. package/dist/src/index.d.ts +3 -0
  98. package/dist/src/index.d.ts.map +1 -0
  99. package/dist/src/index.js +3 -0
  100. package/dist/src/index.js.map +1 -0
  101. package/dist/src/shared/graphql-types.ts +19 -0
  102. package/dist/src/shared/main.ts +27 -0
  103. package/dist/src/shared/mikro-orm.config.ts +18 -0
  104. package/dist/tsconfig.tsbuildinfo +1 -0
  105. package/package.json +70 -0
  106. package/src/codegen/entity-consolidation.ts +213 -0
  107. package/src/codegen/extract/commands.ts +108 -0
  108. package/src/codegen/extract/data-sink.ts +93 -0
  109. package/src/codegen/extract/events.ts +63 -0
  110. package/src/codegen/extract/fields.ts +17 -0
  111. package/src/codegen/extract/graphql.ts +103 -0
  112. package/src/codegen/extract/gwt.ts +79 -0
  113. package/src/codegen/extract/imports.ts +71 -0
  114. package/src/codegen/extract/index.ts +9 -0
  115. package/src/codegen/extract/messages.ts +232 -0
  116. package/src/codegen/extract/projection.ts +62 -0
  117. package/src/codegen/extract/query.ts +28 -0
  118. package/src/codegen/extract/states.ts +69 -0
  119. package/src/codegen/extract/step-converter.ts +124 -0
  120. package/src/codegen/extract/step-types.ts +51 -0
  121. package/src/codegen/extract/type-helpers.ts +102 -0
  122. package/src/codegen/scaffoldFromSchema.ts +559 -0
  123. package/src/codegen/templates/command/command.ts.ejs +16 -0
  124. package/src/codegen/templates/command/handler.specs.ts.ejs +50 -0
  125. package/src/codegen/templates/command/handler.ts.ejs +30 -0
  126. package/src/codegen/templates/command/input.ts.ejs +23 -0
  127. package/src/codegen/templates/command/resolver.ts.ejs +56 -0
  128. package/src/codegen/templates/entity/entity.ts.ejs +35 -0
  129. package/src/codegen/templates/entity/index.ts.ejs +6 -0
  130. package/src/codegen/templates/module/app-module.ts.ejs +65 -0
  131. package/src/codegen/templates/module/domain-module.ts.ejs +46 -0
  132. package/src/codegen/templates/query/handler.ts.ejs +25 -0
  133. package/src/codegen/templates/query/query.ts.ejs +1 -0
  134. package/src/codegen/templates/query/resolver.ts.ejs +20 -0
  135. package/src/codegen/templates/query/type.ts.ejs +24 -0
  136. package/src/codegen/types.ts +39 -0
  137. package/src/codegen/utils/path.ts +20 -0
  138. package/src/commands/generate-server.ts +551 -0
  139. package/src/index.ts +10 -0
  140. package/src/shared/graphql-types.ts +19 -0
  141. package/src/shared/main.ts +27 -0
  142. package/src/shared/mikro-orm.config.ts +18 -0
  143. package/tsconfig.json +12 -0
@@ -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"}
@@ -0,0 +1,64 @@
1
+ import { extractGwtSpecsFromSlice } from './step-converter.js';
2
+ export function buildCommandGwtMapping(slice) {
3
+ if (slice.type !== 'command') {
4
+ return {};
5
+ }
6
+ const gwtSpecs = extractGwtSpecsFromSlice(slice);
7
+ const mapping = buildCommandMapping(gwtSpecs);
8
+ return enhanceMapping(mapping);
9
+ }
10
+ function isCommandRef(when) {
11
+ return !Array.isArray(when) && 'commandRef' in when;
12
+ }
13
+ function buildCommandMapping(gwtSpecs) {
14
+ const mapping = {};
15
+ for (const gwt of gwtSpecs) {
16
+ if (!isCommandRef(gwt.when)) {
17
+ continue;
18
+ }
19
+ const command = gwt.when.commandRef;
20
+ if (typeof command === 'string' && command.length > 0) {
21
+ mapping[command] = mapping[command] ?? [];
22
+ mapping[command].push({
23
+ given: gwt.given,
24
+ when: gwt.when,
25
+ then: gwt.then,
26
+ description: gwt.description,
27
+ ruleDescription: gwt.ruleDescription,
28
+ });
29
+ }
30
+ }
31
+ return mapping;
32
+ }
33
+ function enhanceMapping(mapping) {
34
+ const enhancedMapping = {};
35
+ for (const command in mapping) {
36
+ const conditions = mapping[command];
37
+ const successfulData = findSuccessfulExampleData(conditions);
38
+ enhancedMapping[command] = conditions.map((gwt) => ({
39
+ ...gwt,
40
+ failingFields: findFailingFields(gwt, successfulData),
41
+ }));
42
+ }
43
+ return enhancedMapping;
44
+ }
45
+ function findSuccessfulExampleData(gwts) {
46
+ const successful = gwts.find((gwt) => gwt.then.some((t) => typeof t === 'object' && t !== null && 'eventRef' in t));
47
+ const whenData = Array.isArray(successful?.when) ? successful?.when[0]?.exampleData : successful?.when?.exampleData;
48
+ return typeof whenData === 'object' && whenData !== null ? whenData : {};
49
+ }
50
+ function findFailingFields(gwt, successfulData) {
51
+ const hasError = gwt.then.some((t) => typeof t === 'object' && t !== null && 'errorType' in t);
52
+ if (!hasError)
53
+ return [];
54
+ const whenData = Array.isArray(gwt.when) ? gwt.when[0]?.exampleData : gwt.when?.exampleData;
55
+ if (typeof whenData !== 'object' || whenData === null)
56
+ return [];
57
+ return Object.entries(whenData)
58
+ .filter(([key, val]) => {
59
+ const successVal = successfulData[key];
60
+ return val === '' && successVal !== '' && successVal !== undefined;
61
+ })
62
+ .map(([key]) => key);
63
+ }
64
+ //# sourceMappingURL=gwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gwt.js","sourceRoot":"","sources":["../../../../src/codegen/extract/gwt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Message } from '../types';
2
+ export interface ImportGroup {
3
+ importPath: string;
4
+ eventTypes: string[];
5
+ }
6
+ export interface CrossSliceImportContext {
7
+ currentSliceName: string;
8
+ events: Message[];
9
+ }
10
+ /**
11
+ * Groups events by their import paths, handling cross-slice imports correctly.
12
+ * Events from the current slice are imported from './events',
13
+ * while cross-slice events are imported from '../other-slice/events'.
14
+ */
15
+ export declare function groupEventImports(context: CrossSliceImportContext): ImportGroup[];
16
+ /**
17
+ * Filters events to only include those from the current slice (source === 'then').
18
+ * Used for generating local event definitions.
19
+ */
20
+ export declare function getLocalEvents(events: Message[]): Message[];
21
+ /**
22
+ * Extracts all unique event types from a list of events.
23
+ */
24
+ export declare function getAllEventTypes(events: Message[]): string[];
25
+ /**
26
+ * Creates a TypeScript union type string from event types.
27
+ */
28
+ export declare function createEventUnionType(events: Message[]): string;
29
+ //# sourceMappingURL=imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,EAAE,CA2BjF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAE3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAI5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAG9D"}
@@ -0,0 +1,55 @@
1
+ import { toKebabCase } from '../utils/path.js';
2
+ /**
3
+ * Groups events by their import paths, handling cross-slice imports correctly.
4
+ * Events from the current slice are imported from './events',
5
+ * while cross-slice events are imported from '../other-slice/events'.
6
+ */
7
+ export function groupEventImports(context) {
8
+ const { currentSliceName, events } = context;
9
+ const importGroups = new Map();
10
+ for (const event of events) {
11
+ if (!event.type)
12
+ continue;
13
+ let importPath;
14
+ const isFromCurrentSlice = event.source === 'then' || event.sourceSliceName === currentSliceName || event.sourceSliceName == null;
15
+ if (isFromCurrentSlice) {
16
+ importPath = './events';
17
+ }
18
+ else {
19
+ importPath = `../${toKebabCase(event.sourceSliceName ?? currentSliceName)}/events`;
20
+ }
21
+ if (!importGroups.has(importPath)) {
22
+ importGroups.set(importPath, []);
23
+ }
24
+ const eventTypes = importGroups.get(importPath);
25
+ if (!eventTypes.includes(event.type)) {
26
+ eventTypes.push(event.type);
27
+ }
28
+ }
29
+ return Array.from(importGroups.entries()).map(([importPath, eventTypes]) => ({
30
+ importPath,
31
+ eventTypes: eventTypes.sort(),
32
+ }));
33
+ }
34
+ /**
35
+ * Filters events to only include those from the current slice (source === 'then').
36
+ * Used for generating local event definitions.
37
+ */
38
+ export function getLocalEvents(events) {
39
+ return events.filter((event) => event.source === 'then');
40
+ }
41
+ /**
42
+ * Extracts all unique event types from a list of events.
43
+ */
44
+ export function getAllEventTypes(events) {
45
+ const eventTypes = events.map((event) => event.type).filter((type) => Boolean(type));
46
+ return Array.from(new Set(eventTypes)).sort();
47
+ }
48
+ /**
49
+ * Creates a TypeScript union type string from event types.
50
+ */
51
+ export function createEventUnionType(events) {
52
+ const eventTypes = getAllEventTypes(events);
53
+ return eventTypes.length > 0 ? eventTypes.join(' | ') : 'never';
54
+ }
55
+ //# sourceMappingURL=imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../../../../src/codegen/extract/imports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgC;IAChE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,SAAS;QAC1B,IAAI,UAAkB,CAAC;QACvB,MAAM,kBAAkB,GACtB,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,gBAAgB,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;QAEzG,IAAI,kBAAkB,EAAE,CAAC;YACvB,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,eAAe,IAAI,gBAAgB,CAAC,SAAS,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;KAC9B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAErG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAClE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './commands';
2
+ export * from './events';
3
+ export * from './gwt';
4
+ export * from './imports';
5
+ export * from './messages';
6
+ export * from './projection';
7
+ export * from './query';
8
+ export * from './states';
9
+ export * from './type-helpers';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './commands.js';
2
+ export * from './events.js';
3
+ export * from './gwt.js';
4
+ export * from './imports.js';
5
+ export * from './messages.js';
6
+ export * from './projection.js';
7
+ export * from './query.js';
8
+ export * from './states.js';
9
+ export * from './type-helpers.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/codegen/extract/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Slice } from '@auto-engineer/narrative';
2
+ import type { Message, MessageDefinition } from '../types';
3
+ import type { CommandExample, EventExample } from './step-types';
4
+ export interface ExtractedMessages {
5
+ commands: Message[];
6
+ events: Message[];
7
+ states: Message[];
8
+ commandSchemasByName: Record<string, Message>;
9
+ projectionIdField?: string;
10
+ projectionSingleton?: boolean;
11
+ }
12
+ export interface ReactGwtSpec {
13
+ when?: EventExample[];
14
+ then: CommandExample[];
15
+ }
16
+ export declare function extractMessagesFromSpecs(slice: Slice, allMessages: MessageDefinition[]): ExtractedMessages;
17
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/codegen/extract/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAO3D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;IACtB,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AA2KD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CA+B1G"}
@@ -0,0 +1,172 @@
1
+ import createDebug from 'debug';
2
+ import { extractCommandsFromGwt, extractCommandsFromThen } from './commands.js';
3
+ import { extractEventsFromGiven, extractEventsFromThen, extractEventsFromWhen } from './events.js';
4
+ import { extractFieldsFromMessage } from './fields.js';
5
+ import { extractProjectionIdField, extractProjectionSingleton } from './projection.js';
6
+ import { extractStatesFromData, extractStatesFromTarget } from './states.js';
7
+ import { extractGwtSpecsFromSlice } from './step-converter.js';
8
+ const debug = createDebug('auto:server-generator-nestjs:extract:messages');
9
+ const debugCommand = createDebug('auto:server-generator-nestjs:extract:messages:command');
10
+ const debugQuery = createDebug('auto:server-generator-nestjs:extract:messages:query');
11
+ const debugReact = createDebug('auto:server-generator-nestjs:extract:messages:react');
12
+ const debugDedupe = createDebug('auto:server-generator-nestjs:extract:messages:dedupe');
13
+ const EMPTY_EXTRACTED_MESSAGES = {
14
+ commands: [],
15
+ events: [],
16
+ states: [],
17
+ commandSchemasByName: {},
18
+ };
19
+ function deduplicateMessages(messages) {
20
+ debugDedupe('Deduplicating %d messages', messages.length);
21
+ const uniqueMap = new Map();
22
+ for (const message of messages) {
23
+ if (!uniqueMap.has(message.type)) {
24
+ uniqueMap.set(message.type, message);
25
+ debugDedupe(' Added unique message: %s', message.type);
26
+ }
27
+ else {
28
+ debugDedupe(' Skipped duplicate message: %s', message.type);
29
+ }
30
+ }
31
+ const result = Array.from(uniqueMap.values());
32
+ debugDedupe('Result: %d unique messages from %d total', result.length, messages.length);
33
+ return result;
34
+ }
35
+ function extractMessagesForCommand(slice, allMessages) {
36
+ debugCommand('Extracting messages for command slice: %s', slice.name);
37
+ if (slice.type !== 'command') {
38
+ debugCommand(' Slice type is not command, returning empty');
39
+ return EMPTY_EXTRACTED_MESSAGES;
40
+ }
41
+ const gwtSpecs = extractGwtSpecsFromSlice(slice);
42
+ debugCommand(' Found %d GWT specs', gwtSpecs.length);
43
+ const { commands, commandSchemasByName } = extractCommandsFromGwt(gwtSpecs, allMessages);
44
+ debugCommand(' Extracted %d commands', commands.length);
45
+ debugCommand(' Command schemas: %o', Object.keys(commandSchemasByName));
46
+ const events = gwtSpecs.flatMap((gwt) => {
47
+ const givenEventsOnly = gwt.given?.filter((item) => 'eventRef' in item);
48
+ const givenEvents = extractEventsFromGiven(givenEventsOnly, allMessages, slice.name);
49
+ const thenEventsOnly = gwt.then.filter((item) => 'eventRef' in item);
50
+ const thenEvents = extractEventsFromThen(thenEventsOnly, allMessages, slice.name);
51
+ debugCommand(' GWT: given=%d events, then=%d events', givenEvents.length, thenEvents.length);
52
+ return [...givenEvents, ...thenEvents];
53
+ });
54
+ debugCommand(' Total events extracted: %d', events.length);
55
+ const result = {
56
+ commands,
57
+ events: deduplicateMessages(events),
58
+ states: [],
59
+ commandSchemasByName,
60
+ };
61
+ debugCommand(' Final result: %d commands, %d events', result.commands.length, result.events.length);
62
+ return result;
63
+ }
64
+ function extractMessagesForQuery(slice, allMessages) {
65
+ debugQuery('Extracting messages for query slice: %s', slice.name);
66
+ if (slice.type !== 'query') {
67
+ debugQuery(' Slice type is not query, returning empty');
68
+ return EMPTY_EXTRACTED_MESSAGES;
69
+ }
70
+ const gwtSpecs = extractGwtSpecsFromSlice(slice);
71
+ debugQuery(' Found %d GWT specs', gwtSpecs.length);
72
+ const projectionIdField = extractProjectionIdField(slice);
73
+ debugQuery(' Projection ID field: %s', projectionIdField ?? 'none');
74
+ const projectionSingleton = extractProjectionSingleton(slice);
75
+ debugQuery(' Projection singleton: %s', projectionSingleton);
76
+ const events = gwtSpecs.flatMap((gwt) => {
77
+ const eventsFromGiven = Array.isArray(gwt.given)
78
+ ? gwt.given.filter((item) => 'eventRef' in item)
79
+ : [];
80
+ let eventsFromWhen = [];
81
+ if (Array.isArray(gwt.when)) {
82
+ eventsFromWhen = gwt.when.filter((item) => 'eventRef' in item);
83
+ }
84
+ else if (gwt.when != null && typeof gwt.when === 'object' && 'eventRef' in gwt.when) {
85
+ const whenItem = gwt.when;
86
+ if (whenItem.eventRef && whenItem.eventRef.trim() !== '') {
87
+ eventsFromWhen = [whenItem];
88
+ }
89
+ }
90
+ const givenEvents = extractEventsFromGiven(eventsFromGiven, allMessages);
91
+ const whenEvents = eventsFromWhen
92
+ .map((eventExample) => {
93
+ const fields = extractFieldsFromMessage(eventExample.eventRef, 'event', allMessages);
94
+ const messageDef = allMessages.find((m) => m.type === 'event' && m.name === eventExample.eventRef);
95
+ const metadata = messageDef?.metadata;
96
+ return {
97
+ type: eventExample.eventRef,
98
+ fields,
99
+ source: 'when',
100
+ sourceFlowName: metadata?.sourceFlowName,
101
+ sourceSliceName: metadata?.sourceSliceName,
102
+ };
103
+ })
104
+ .filter((event) => event.type !== undefined);
105
+ return [...givenEvents, ...whenEvents];
106
+ });
107
+ debugQuery(' Extracted %d events total', events.length);
108
+ const states = extractStatesFromTarget(slice, allMessages);
109
+ debugQuery(' Extracted %d states from target', states.length);
110
+ const result = {
111
+ commands: [],
112
+ events: deduplicateMessages(events),
113
+ states,
114
+ commandSchemasByName: {},
115
+ projectionIdField,
116
+ projectionSingleton,
117
+ };
118
+ debugQuery(' Final result: %d events, %d states', result.events.length, result.states.length);
119
+ return result;
120
+ }
121
+ function extractMessagesForReact(slice, allMessages) {
122
+ debugReact('Extracting messages for react slice: %s', slice.name);
123
+ if (slice.type !== 'react') {
124
+ debugReact(' Slice type is not react, returning empty');
125
+ return EMPTY_EXTRACTED_MESSAGES;
126
+ }
127
+ const gwtSpecs = extractGwtSpecsFromSlice(slice);
128
+ debugReact(' Found %d GWT specs', gwtSpecs.length);
129
+ const reactGwtSpecs = gwtSpecs.map((gwt) => ({
130
+ when: Array.isArray(gwt.when) ? gwt.when : undefined,
131
+ then: gwt.then.filter((t) => 'commandRef' in t),
132
+ }));
133
+ const events = extractEventsFromWhen(reactGwtSpecs, allMessages);
134
+ debugReact(' Extracted %d events from when', events.length);
135
+ const { commands, commandSchemasByName } = extractCommandsFromThen(gwtSpecs, allMessages);
136
+ debugReact(' Extracted %d commands from then', commands.length);
137
+ debugReact(' Command schemas: %o', Object.keys(commandSchemasByName));
138
+ const states = extractStatesFromData(slice, allMessages);
139
+ debugReact(' Extracted %d states from data', states.length);
140
+ const result = {
141
+ commands,
142
+ events: deduplicateMessages(events),
143
+ states,
144
+ commandSchemasByName,
145
+ };
146
+ debugReact(' Final result: %d commands, %d events, %d states', result.commands.length, result.events.length, result.states.length);
147
+ return result;
148
+ }
149
+ export function extractMessagesFromSpecs(slice, allMessages) {
150
+ debug('Extracting messages from slice: %s (type: %s)', slice.name, slice.type);
151
+ debug(' Total message definitions available: %d', allMessages.length);
152
+ let result;
153
+ switch (slice.type) {
154
+ case 'command':
155
+ result = extractMessagesForCommand(slice, allMessages);
156
+ break;
157
+ case 'query':
158
+ result = extractMessagesForQuery(slice, allMessages);
159
+ break;
160
+ case 'react':
161
+ result = extractMessagesForReact(slice, allMessages);
162
+ break;
163
+ default: {
164
+ const unknownSlice = slice;
165
+ debug(' Unknown slice type: %s, returning empty', unknownSlice.type);
166
+ result = EMPTY_EXTRACTED_MESSAGES;
167
+ }
168
+ }
169
+ debug(' Extraction complete: %d commands, %d events, %d states', result.commands.length, result.events.length, result.states.length);
170
+ return result;
171
+ }
172
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/codegen/extract/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Slice } from '@auto-engineer/narrative';
2
+ export declare function extractProjectionIdField(slice: Slice): string | undefined;
3
+ export declare function extractProjectionName(slice: Slice): string | undefined;
4
+ export declare function extractProjectionSingleton(slice: Slice): boolean;
5
+ //# sourceMappingURL=projection.d.ts.map