@auto-engineer/narrative 1.139.0 → 1.140.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 (181) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +5 -5
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +18 -0
  5. package/dist/scripts/convert-flow-exec.js +2 -2
  6. package/dist/scripts/convert-flow-exec.js.map +1 -1
  7. package/dist/scripts/print-schema.js +5 -5
  8. package/dist/scripts/print-schema.js.map +1 -1
  9. package/dist/src/fluent-builder.d.ts +29 -29
  10. package/dist/src/fluent-builder.d.ts.map +1 -1
  11. package/dist/src/fluent-builder.js +81 -81
  12. package/dist/src/fluent-builder.js.map +1 -1
  13. package/dist/src/{getNarratives.d.ts → getScenes.d.ts} +6 -6
  14. package/dist/src/getScenes.d.ts.map +1 -0
  15. package/dist/src/{getNarratives.js → getScenes.js} +16 -16
  16. package/dist/src/getScenes.js.map +1 -0
  17. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  18. package/dist/src/id/addAutoIds.js +22 -22
  19. package/dist/src/id/addAutoIds.js.map +1 -1
  20. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  21. package/dist/src/id/hasAllIds.js +2 -2
  22. package/dist/src/id/hasAllIds.js.map +1 -1
  23. package/dist/src/index.d.ts +8 -8
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +4 -4
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/loader/index.js +1 -1
  28. package/dist/src/loader/index.js.map +1 -1
  29. package/dist/src/loader/runtime-cjs.js +1 -1
  30. package/dist/src/loader/runtime-cjs.js.map +1 -1
  31. package/dist/src/narrative-context.d.ts +9 -9
  32. package/dist/src/narrative-context.d.ts.map +1 -1
  33. package/dist/src/narrative-context.js +47 -47
  34. package/dist/src/narrative-context.js.map +1 -1
  35. package/dist/src/narrative-registry.d.ts +6 -6
  36. package/dist/src/narrative-registry.d.ts.map +1 -1
  37. package/dist/src/narrative-registry.js +26 -26
  38. package/dist/src/narrative-registry.js.map +1 -1
  39. package/dist/src/narrative.d.ts +5 -5
  40. package/dist/src/narrative.d.ts.map +1 -1
  41. package/dist/src/narrative.js +26 -27
  42. package/dist/src/narrative.js.map +1 -1
  43. package/dist/src/parse-graphql-request.d.ts +1 -1
  44. package/dist/src/parse-graphql-request.d.ts.map +1 -1
  45. package/dist/src/parse-graphql-request.js +3 -3
  46. package/dist/src/parse-graphql-request.js.map +1 -1
  47. package/dist/src/samples/items.narrative.js +2 -2
  48. package/dist/src/samples/items.narrative.js.map +1 -1
  49. package/dist/src/samples/mixed-given-types.narrative.js +2 -2
  50. package/dist/src/samples/mixed-given-types.narrative.js.map +1 -1
  51. package/dist/src/samples/place-order.narrative.js +2 -2
  52. package/dist/src/samples/place-order.narrative.js.map +1 -1
  53. package/dist/src/samples/questionnaires.narrative.js +2 -2
  54. package/dist/src/samples/questionnaires.narrative.js.map +1 -1
  55. package/dist/src/samples/seasonal-assistant.schema.json +2 -2
  56. package/dist/src/samples/test-with-ids.narrative.js +2 -2
  57. package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
  58. package/dist/src/schema.d.ts +136 -136
  59. package/dist/src/schema.d.ts.map +1 -1
  60. package/dist/src/schema.js +76 -76
  61. package/dist/src/schema.js.map +1 -1
  62. package/dist/src/slice-builder.d.ts +6 -6
  63. package/dist/src/slice-builder.d.ts.map +1 -1
  64. package/dist/src/slice-builder.js +21 -21
  65. package/dist/src/slice-builder.js.map +1 -1
  66. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js +1 -1
  67. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js.map +1 -1
  68. package/dist/src/transformers/model-to-narrative/cross-module-imports.js +4 -4
  69. package/dist/src/transformers/model-to-narrative/cross-module-imports.js.map +1 -1
  70. package/dist/src/transformers/model-to-narrative/generators/compose.js +3 -3
  71. package/dist/src/transformers/model-to-narrative/generators/compose.js.map +1 -1
  72. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +2 -2
  73. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  74. package/dist/src/transformers/model-to-narrative/generators/flow.js +20 -20
  75. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  76. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
  77. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
  78. package/dist/src/transformers/model-to-narrative/generators/imports.js +1 -1
  79. package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
  80. package/dist/src/transformers/model-to-narrative/generators/module-code.js +14 -14
  81. package/dist/src/transformers/model-to-narrative/generators/module-code.js.map +1 -1
  82. package/dist/src/transformers/model-to-narrative/index.d.ts +4 -4
  83. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  84. package/dist/src/transformers/model-to-narrative/index.js +1 -1
  85. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts +2 -2
  86. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts.map +1 -1
  87. package/dist/src/transformers/model-to-narrative/spec-traversal.js +5 -5
  88. package/dist/src/transformers/model-to-narrative/spec-traversal.js.map +1 -1
  89. package/dist/src/transformers/model-to-narrative/types.d.ts +1 -1
  90. package/dist/src/transformers/model-to-narrative/types.d.ts.map +1 -1
  91. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts +1 -1
  92. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts.map +1 -1
  93. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js +4 -4
  94. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js.map +1 -1
  95. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts +1 -1
  96. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts.map +1 -1
  97. package/dist/src/transformers/model-to-narrative/validate-modules.js +19 -19
  98. package/dist/src/transformers/model-to-narrative/validate-modules.js.map +1 -1
  99. package/dist/src/transformers/narrative-to-model/assemble.d.ts +2 -2
  100. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  101. package/dist/src/transformers/narrative-to-model/assemble.js +10 -3
  102. package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -1
  103. package/dist/src/transformers/narrative-to-model/debug.d.ts.map +1 -1
  104. package/dist/src/transformers/narrative-to-model/debug.js +1 -1
  105. package/dist/src/transformers/narrative-to-model/debug.js.map +1 -1
  106. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts +2 -2
  107. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts.map +1 -1
  108. package/dist/src/transformers/narrative-to-model/derive-modules.js +9 -9
  109. package/dist/src/transformers/narrative-to-model/derive-modules.js.map +1 -1
  110. package/dist/src/transformers/narrative-to-model/index.d.ts +2 -2
  111. package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
  112. package/dist/src/transformers/narrative-to-model/index.js +39 -39
  113. package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
  114. package/dist/src/transformers/narrative-to-model/spec-processors.js +1 -1
  115. package/dist/src/transformers/narrative-to-model/spec-processors.js.map +1 -1
  116. package/dist/src/transformers/narrative-to-model/strings.d.ts +1 -1
  117. package/dist/src/transformers/narrative-to-model/strings.d.ts.map +1 -1
  118. package/dist/src/transformers/narrative-to-model/strings.js +6 -6
  119. package/dist/src/transformers/narrative-to-model/strings.js.map +1 -1
  120. package/dist/src/validate-slice-requests.d.ts +4 -4
  121. package/dist/src/validate-slice-requests.d.ts.map +1 -1
  122. package/dist/src/validate-slice-requests.js +34 -34
  123. package/dist/src/validate-slice-requests.js.map +1 -1
  124. package/dist/tsconfig.tsbuildinfo +1 -1
  125. package/package.json +4 -4
  126. package/scripts/convert-flow-exec.ts +2 -2
  127. package/scripts/print-schema.ts +8 -8
  128. package/src/fluent-builder.specs.ts +3 -3
  129. package/src/fluent-builder.ts +141 -141
  130. package/src/{getNarratives.cache.specs.ts → getScenes.cache.specs.ts} +45 -45
  131. package/src/{getNarratives.specs.ts → getScenes.specs.ts} +302 -300
  132. package/src/{getNarratives.ts → getScenes.ts} +20 -20
  133. package/src/id/addAutoIds.specs.ts +105 -105
  134. package/src/id/addAutoIds.ts +26 -26
  135. package/src/id/hasAllIds.specs.ts +59 -59
  136. package/src/id/hasAllIds.ts +6 -6
  137. package/src/index.ts +12 -13
  138. package/src/loader/index.ts +1 -1
  139. package/src/loader/runtime-cjs.ts +1 -1
  140. package/src/model-to-narrative.specs.ts +133 -135
  141. package/src/narrative-context.specs.ts +24 -24
  142. package/src/narrative-context.ts +61 -61
  143. package/src/narrative-registry.ts +31 -31
  144. package/src/narrative.ts +31 -33
  145. package/src/parse-graphql-request.specs.ts +5 -5
  146. package/src/parse-graphql-request.ts +3 -3
  147. package/src/samples/items.narrative.ts +2 -2
  148. package/src/samples/mixed-given-types.narrative.ts +2 -2
  149. package/src/samples/place-order.narrative.ts +2 -2
  150. package/src/samples/questionnaires.narrative.ts +2 -2
  151. package/src/samples/seasonal-assistant.schema.json +2 -2
  152. package/src/samples/test-with-ids.narrative.ts +2 -2
  153. package/src/schema.specs.ts +99 -91
  154. package/src/schema.ts +89 -89
  155. package/src/slice-builder.ts +30 -30
  156. package/src/transformers/model-to-narrative/analysis/lint-helpers.ts +1 -1
  157. package/src/transformers/model-to-narrative/cross-module-imports.specs.ts +43 -43
  158. package/src/transformers/model-to-narrative/cross-module-imports.ts +4 -4
  159. package/src/transformers/model-to-narrative/generators/compose.ts +4 -4
  160. package/src/transformers/model-to-narrative/generators/flow.ts +36 -36
  161. package/src/transformers/model-to-narrative/generators/imports.ts +1 -1
  162. package/src/transformers/model-to-narrative/generators/module-code.ts +15 -15
  163. package/src/transformers/model-to-narrative/index.ts +4 -4
  164. package/src/transformers/model-to-narrative/modules.specs.ts +58 -58
  165. package/src/transformers/model-to-narrative/spec-traversal.specs.ts +43 -43
  166. package/src/transformers/model-to-narrative/spec-traversal.ts +6 -6
  167. package/src/transformers/model-to-narrative/types.ts +1 -1
  168. package/src/transformers/model-to-narrative/utils/integration-extractor.ts +5 -5
  169. package/src/transformers/model-to-narrative/validate-modules.ts +22 -22
  170. package/src/transformers/narrative-to-model/assemble.ts +12 -4
  171. package/src/transformers/narrative-to-model/debug.ts +1 -1
  172. package/src/transformers/narrative-to-model/derive-modules.specs.ts +35 -35
  173. package/src/transformers/narrative-to-model/derive-modules.ts +11 -11
  174. package/src/transformers/narrative-to-model/index.ts +47 -47
  175. package/src/transformers/narrative-to-model/spec-processors.ts +1 -1
  176. package/src/transformers/narrative-to-model/strings.ts +6 -6
  177. package/src/transformers/narrative-to-model/type-inference.specs.ts +11 -11
  178. package/src/validate-slice-requests.specs.ts +113 -113
  179. package/src/validate-slice-requests.ts +49 -49
  180. package/dist/src/getNarratives.d.ts.map +0 -1
  181. package/dist/src/getNarratives.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { type DocumentNode, type OperationDefinitionNode, parse, type SelectionSetNode, type TypeNode } from 'graphql';
2
2
  import { convertJsonAstToSdl } from './parse-graphql-request';
3
- import type { CommandSlice, Model, QuerySlice } from './schema';
3
+ import type { CommandMoment, Model, QueryMoment } from './schema';
4
4
  import { isInlineObject, isInlineObjectArray, parseInlineObjectFields } from './ts-type-helpers';
5
5
 
6
- export interface SliceRequestValidationError {
6
+ export interface MomentRequestValidationError {
7
7
  type:
8
8
  | 'request_parse_error'
9
9
  | 'mutation_wrong_operation_type'
@@ -15,8 +15,8 @@ export interface SliceRequestValidationError {
15
15
  | 'query_field_not_found'
16
16
  | 'query_nested_field_not_found';
17
17
  message: string;
18
- flowName: string;
19
- sliceName: string;
18
+ sceneName: string;
19
+ momentName: string;
20
20
  }
21
21
 
22
22
  type ParseResult = { ok: true; operation: OperationDefinitionNode } | { ok: false; error: string };
@@ -44,33 +44,33 @@ function parseRequestSafe(request: string): ParseResult {
44
44
  return { ok: true, operation: op };
45
45
  }
46
46
 
47
- function validateSlice(
48
- slice: CommandSlice | QuerySlice,
47
+ function validateMoment(
48
+ moment: CommandMoment | QueryMoment,
49
49
  model: Model,
50
- flowName: string,
51
- ): SliceRequestValidationError[] {
52
- if (!slice.request || slice.request.trim() === '') return [];
50
+ sceneName: string,
51
+ ): MomentRequestValidationError[] {
52
+ if (!moment.request || moment.request.trim() === '') return [];
53
53
 
54
- const sliceName = slice.name;
55
- const parsed = parseRequestSafe(slice.request);
54
+ const momentName = moment.name;
55
+ const parsed = parseRequestSafe(moment.request);
56
56
 
57
57
  if (!parsed.ok) {
58
- return [{ type: 'request_parse_error', message: parsed.error, flowName, sliceName }];
58
+ return [{ type: 'request_parse_error', message: parsed.error, sceneName, momentName }];
59
59
  }
60
60
 
61
- if (slice.type === 'command') {
62
- return validateMutationRequest(parsed.operation, model, flowName, sliceName);
61
+ if (moment.type === 'command') {
62
+ return validateMutationRequest(parsed.operation, model, sceneName, momentName);
63
63
  }
64
- return validateQueryRequest(parsed.operation, model, slice, flowName, sliceName);
64
+ return validateQueryRequest(parsed.operation, model, moment, sceneName, momentName);
65
65
  }
66
66
 
67
- export function validateSliceRequests(model: Model): SliceRequestValidationError[] {
68
- const errors: SliceRequestValidationError[] = [];
67
+ export function validateMomentRequests(model: Model): MomentRequestValidationError[] {
68
+ const errors: MomentRequestValidationError[] = [];
69
69
 
70
- for (const narrative of model.narratives) {
71
- for (const slice of narrative.slices) {
72
- if (slice.type !== 'command' && slice.type !== 'query') continue;
73
- errors.push(...validateSlice(slice, model, narrative.name));
70
+ for (const scene of model.scenes) {
71
+ for (const moment of scene.moments) {
72
+ if (moment.type !== 'command' && moment.type !== 'query') continue;
73
+ errors.push(...validateMoment(moment, model, scene.name));
74
74
  }
75
75
  }
76
76
 
@@ -85,18 +85,18 @@ function unwrapType(typeNode: TypeNode): string {
85
85
  function validateMutationRequest(
86
86
  operation: OperationDefinitionNode,
87
87
  model: Model,
88
- flowName: string,
89
- sliceName: string,
90
- ): SliceRequestValidationError[] {
91
- const errors: SliceRequestValidationError[] = [];
88
+ sceneName: string,
89
+ momentName: string,
90
+ ): MomentRequestValidationError[] {
91
+ const errors: MomentRequestValidationError[] = [];
92
92
  const operationName = operation.name!.value;
93
93
 
94
94
  if (operation.operation !== 'mutation') {
95
95
  errors.push({
96
96
  type: 'mutation_wrong_operation_type',
97
- message: `Command slice '${sliceName}' request should be a mutation, but found ${operation.operation}`,
98
- flowName,
99
- sliceName,
97
+ message: `Command moment '${momentName}' request should be a mutation, but found ${operation.operation}`,
98
+ sceneName,
99
+ momentName,
100
100
  });
101
101
  return errors;
102
102
  }
@@ -107,8 +107,8 @@ function validateMutationRequest(
107
107
  errors.push({
108
108
  type: 'mutation_missing_input_arg',
109
109
  message: `Mutation '${operationName}' is missing required $input variable`,
110
- flowName,
111
- sliceName,
110
+ sceneName,
111
+ momentName,
112
112
  });
113
113
  return errors;
114
114
  }
@@ -120,8 +120,8 @@ function validateMutationRequest(
120
120
  errors.push({
121
121
  type: 'mutation_input_type_mismatch',
122
122
  message: `Mutation '${operationName}' input type should be '${expectedTypeName}', but found '${inputTypeName}'`,
123
- flowName,
124
- sliceName,
123
+ sceneName,
124
+ momentName,
125
125
  });
126
126
  return errors;
127
127
  }
@@ -132,8 +132,8 @@ function validateMutationRequest(
132
132
  errors.push({
133
133
  type: 'mutation_message_not_found',
134
134
  message: `No command message '${operationName}' found in model.messages`,
135
- flowName,
136
- sliceName,
135
+ sceneName,
136
+ momentName,
137
137
  });
138
138
  }
139
139
 
@@ -178,24 +178,24 @@ function extractSelections(selectionSet: SelectionSetNode): SelectionField[] {
178
178
  function validateQueryRequest(
179
179
  operation: OperationDefinitionNode,
180
180
  model: Model,
181
- slice: QuerySlice,
182
- flowName: string,
183
- sliceName: string,
184
- ): SliceRequestValidationError[] {
185
- const errors: SliceRequestValidationError[] = [];
181
+ moment: QueryMoment,
182
+ sceneName: string,
183
+ momentName: string,
184
+ ): MomentRequestValidationError[] {
185
+ const errors: MomentRequestValidationError[] = [];
186
186
  const operationName = operation.name!.value;
187
187
 
188
188
  if (operation.operation !== 'query') {
189
189
  errors.push({
190
190
  type: 'query_wrong_operation_type',
191
- message: `Query slice '${sliceName}' request should be a query, but found ${operation.operation}`,
192
- flowName,
193
- sliceName,
191
+ message: `Query moment '${momentName}' request should be a query, but found ${operation.operation}`,
192
+ sceneName,
193
+ momentName,
194
194
  });
195
195
  return errors;
196
196
  }
197
197
 
198
- const targetName = slice.server?.data?.items?.[0]?.target?.name;
198
+ const targetName = moment.server?.data?.items?.[0]?.target?.name;
199
199
  if (!targetName) return errors;
200
200
 
201
201
  const stateMessage = model.messages.find((m) => m.type === 'state' && m.name === targetName);
@@ -204,8 +204,8 @@ function validateQueryRequest(
204
204
  errors.push({
205
205
  type: 'query_state_not_found',
206
206
  message: `State '${targetName}' referenced by query '${operationName}' not found in model.messages`,
207
- flowName,
208
- sliceName,
207
+ sceneName,
208
+ momentName,
209
209
  });
210
210
  return errors;
211
211
  }
@@ -221,8 +221,8 @@ function validateQueryRequest(
221
221
  errors.push({
222
222
  type: 'query_field_not_found',
223
223
  message: `Field '${sel.name}' in query '${operationName}' not found on state '${targetName}'`,
224
- flowName,
225
- sliceName,
224
+ sceneName,
225
+ momentName,
226
226
  });
227
227
  continue;
228
228
  }
@@ -240,8 +240,8 @@ function validateQueryRequest(
240
240
  errors.push({
241
241
  type: 'query_nested_field_not_found',
242
242
  message: `Nested field '${child.name}' in query '${operationName}' not found on type of '${sel.name}'`,
243
- flowName,
244
- sliceName,
243
+ sceneName,
244
+ momentName,
245
245
  });
246
246
  }
247
247
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNarratives.d.ts","sourceRoot":"","sources":["../../src/getNarratives.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAkDhD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,UAAU,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA8DD,eAAO,MAAM,aAAa,GACxB,MAAM,oBAAoB,KACzB,OAAO,CAAC;IACT,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,OAAO,EAAE,MAAM,KAAK,CAAC;CACtB,CAwDA,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAO,IAG1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getNarratives.js","sourceRoot":"","sources":["../../src/getNarratives.ts"],"names":[],"mappings":"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"}