@auto-engineer/narrative 1.139.0 → 1.140.1

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 (182) 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 +32 -0
  5. package/README.md +8 -8
  6. package/dist/scripts/convert-flow-exec.js +2 -2
  7. package/dist/scripts/convert-flow-exec.js.map +1 -1
  8. package/dist/scripts/print-schema.js +5 -5
  9. package/dist/scripts/print-schema.js.map +1 -1
  10. package/dist/src/fluent-builder.d.ts +29 -29
  11. package/dist/src/fluent-builder.d.ts.map +1 -1
  12. package/dist/src/fluent-builder.js +81 -81
  13. package/dist/src/fluent-builder.js.map +1 -1
  14. package/dist/src/{getNarratives.d.ts → getScenes.d.ts} +6 -6
  15. package/dist/src/getScenes.d.ts.map +1 -0
  16. package/dist/src/{getNarratives.js → getScenes.js} +16 -16
  17. package/dist/src/getScenes.js.map +1 -0
  18. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  19. package/dist/src/id/addAutoIds.js +22 -22
  20. package/dist/src/id/addAutoIds.js.map +1 -1
  21. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  22. package/dist/src/id/hasAllIds.js +2 -2
  23. package/dist/src/id/hasAllIds.js.map +1 -1
  24. package/dist/src/index.d.ts +8 -8
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/index.js +4 -4
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/loader/index.js +1 -1
  29. package/dist/src/loader/index.js.map +1 -1
  30. package/dist/src/loader/runtime-cjs.js +1 -1
  31. package/dist/src/loader/runtime-cjs.js.map +1 -1
  32. package/dist/src/narrative-context.d.ts +9 -9
  33. package/dist/src/narrative-context.d.ts.map +1 -1
  34. package/dist/src/narrative-context.js +47 -47
  35. package/dist/src/narrative-context.js.map +1 -1
  36. package/dist/src/narrative-registry.d.ts +6 -6
  37. package/dist/src/narrative-registry.d.ts.map +1 -1
  38. package/dist/src/narrative-registry.js +26 -26
  39. package/dist/src/narrative-registry.js.map +1 -1
  40. package/dist/src/narrative.d.ts +5 -5
  41. package/dist/src/narrative.d.ts.map +1 -1
  42. package/dist/src/narrative.js +26 -27
  43. package/dist/src/narrative.js.map +1 -1
  44. package/dist/src/parse-graphql-request.d.ts +1 -1
  45. package/dist/src/parse-graphql-request.d.ts.map +1 -1
  46. package/dist/src/parse-graphql-request.js +3 -3
  47. package/dist/src/parse-graphql-request.js.map +1 -1
  48. package/dist/src/samples/items.narrative.js +2 -2
  49. package/dist/src/samples/items.narrative.js.map +1 -1
  50. package/dist/src/samples/mixed-given-types.narrative.js +2 -2
  51. package/dist/src/samples/mixed-given-types.narrative.js.map +1 -1
  52. package/dist/src/samples/place-order.narrative.js +2 -2
  53. package/dist/src/samples/place-order.narrative.js.map +1 -1
  54. package/dist/src/samples/questionnaires.narrative.js +2 -2
  55. package/dist/src/samples/questionnaires.narrative.js.map +1 -1
  56. package/dist/src/samples/seasonal-assistant.schema.json +2 -2
  57. package/dist/src/samples/test-with-ids.narrative.js +2 -2
  58. package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
  59. package/dist/src/schema.d.ts +136 -136
  60. package/dist/src/schema.d.ts.map +1 -1
  61. package/dist/src/schema.js +76 -76
  62. package/dist/src/schema.js.map +1 -1
  63. package/dist/src/slice-builder.d.ts +6 -6
  64. package/dist/src/slice-builder.d.ts.map +1 -1
  65. package/dist/src/slice-builder.js +21 -21
  66. package/dist/src/slice-builder.js.map +1 -1
  67. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js +1 -1
  68. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js.map +1 -1
  69. package/dist/src/transformers/model-to-narrative/cross-module-imports.js +4 -4
  70. package/dist/src/transformers/model-to-narrative/cross-module-imports.js.map +1 -1
  71. package/dist/src/transformers/model-to-narrative/generators/compose.js +3 -3
  72. package/dist/src/transformers/model-to-narrative/generators/compose.js.map +1 -1
  73. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +2 -2
  74. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  75. package/dist/src/transformers/model-to-narrative/generators/flow.js +20 -20
  76. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  77. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
  78. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
  79. package/dist/src/transformers/model-to-narrative/generators/imports.js +1 -1
  80. package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
  81. package/dist/src/transformers/model-to-narrative/generators/module-code.js +14 -14
  82. package/dist/src/transformers/model-to-narrative/generators/module-code.js.map +1 -1
  83. package/dist/src/transformers/model-to-narrative/index.d.ts +4 -4
  84. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  85. package/dist/src/transformers/model-to-narrative/index.js +1 -1
  86. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts +2 -2
  87. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts.map +1 -1
  88. package/dist/src/transformers/model-to-narrative/spec-traversal.js +5 -5
  89. package/dist/src/transformers/model-to-narrative/spec-traversal.js.map +1 -1
  90. package/dist/src/transformers/model-to-narrative/types.d.ts +1 -1
  91. package/dist/src/transformers/model-to-narrative/types.d.ts.map +1 -1
  92. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts +1 -1
  93. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts.map +1 -1
  94. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js +4 -4
  95. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js.map +1 -1
  96. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts +1 -1
  97. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts.map +1 -1
  98. package/dist/src/transformers/model-to-narrative/validate-modules.js +19 -19
  99. package/dist/src/transformers/model-to-narrative/validate-modules.js.map +1 -1
  100. package/dist/src/transformers/narrative-to-model/assemble.d.ts +2 -2
  101. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  102. package/dist/src/transformers/narrative-to-model/assemble.js +10 -3
  103. package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -1
  104. package/dist/src/transformers/narrative-to-model/debug.d.ts.map +1 -1
  105. package/dist/src/transformers/narrative-to-model/debug.js +1 -1
  106. package/dist/src/transformers/narrative-to-model/debug.js.map +1 -1
  107. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts +2 -2
  108. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts.map +1 -1
  109. package/dist/src/transformers/narrative-to-model/derive-modules.js +9 -9
  110. package/dist/src/transformers/narrative-to-model/derive-modules.js.map +1 -1
  111. package/dist/src/transformers/narrative-to-model/index.d.ts +2 -2
  112. package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
  113. package/dist/src/transformers/narrative-to-model/index.js +39 -39
  114. package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
  115. package/dist/src/transformers/narrative-to-model/spec-processors.js +1 -1
  116. package/dist/src/transformers/narrative-to-model/spec-processors.js.map +1 -1
  117. package/dist/src/transformers/narrative-to-model/strings.d.ts +1 -1
  118. package/dist/src/transformers/narrative-to-model/strings.d.ts.map +1 -1
  119. package/dist/src/transformers/narrative-to-model/strings.js +6 -6
  120. package/dist/src/transformers/narrative-to-model/strings.js.map +1 -1
  121. package/dist/src/validate-slice-requests.d.ts +4 -4
  122. package/dist/src/validate-slice-requests.d.ts.map +1 -1
  123. package/dist/src/validate-slice-requests.js +34 -34
  124. package/dist/src/validate-slice-requests.js.map +1 -1
  125. package/dist/tsconfig.tsbuildinfo +1 -1
  126. package/package.json +4 -4
  127. package/scripts/convert-flow-exec.ts +2 -2
  128. package/scripts/print-schema.ts +8 -8
  129. package/src/fluent-builder.specs.ts +3 -3
  130. package/src/fluent-builder.ts +141 -141
  131. package/src/{getNarratives.cache.specs.ts → getScenes.cache.specs.ts} +45 -45
  132. package/src/{getNarratives.specs.ts → getScenes.specs.ts} +302 -300
  133. package/src/{getNarratives.ts → getScenes.ts} +20 -20
  134. package/src/id/addAutoIds.specs.ts +105 -105
  135. package/src/id/addAutoIds.ts +26 -26
  136. package/src/id/hasAllIds.specs.ts +59 -59
  137. package/src/id/hasAllIds.ts +6 -6
  138. package/src/index.ts +12 -13
  139. package/src/loader/index.ts +1 -1
  140. package/src/loader/runtime-cjs.ts +1 -1
  141. package/src/model-to-narrative.specs.ts +133 -135
  142. package/src/narrative-context.specs.ts +24 -24
  143. package/src/narrative-context.ts +61 -61
  144. package/src/narrative-registry.ts +31 -31
  145. package/src/narrative.ts +31 -33
  146. package/src/parse-graphql-request.specs.ts +5 -5
  147. package/src/parse-graphql-request.ts +3 -3
  148. package/src/samples/items.narrative.ts +2 -2
  149. package/src/samples/mixed-given-types.narrative.ts +2 -2
  150. package/src/samples/place-order.narrative.ts +2 -2
  151. package/src/samples/questionnaires.narrative.ts +2 -2
  152. package/src/samples/seasonal-assistant.schema.json +2 -2
  153. package/src/samples/test-with-ids.narrative.ts +2 -2
  154. package/src/schema.specs.ts +99 -91
  155. package/src/schema.ts +89 -89
  156. package/src/slice-builder.ts +30 -30
  157. package/src/transformers/model-to-narrative/analysis/lint-helpers.ts +1 -1
  158. package/src/transformers/model-to-narrative/cross-module-imports.specs.ts +43 -43
  159. package/src/transformers/model-to-narrative/cross-module-imports.ts +4 -4
  160. package/src/transformers/model-to-narrative/generators/compose.ts +4 -4
  161. package/src/transformers/model-to-narrative/generators/flow.ts +36 -36
  162. package/src/transformers/model-to-narrative/generators/imports.ts +1 -1
  163. package/src/transformers/model-to-narrative/generators/module-code.ts +15 -15
  164. package/src/transformers/model-to-narrative/index.ts +4 -4
  165. package/src/transformers/model-to-narrative/modules.specs.ts +58 -58
  166. package/src/transformers/model-to-narrative/spec-traversal.specs.ts +43 -43
  167. package/src/transformers/model-to-narrative/spec-traversal.ts +6 -6
  168. package/src/transformers/model-to-narrative/types.ts +1 -1
  169. package/src/transformers/model-to-narrative/utils/integration-extractor.ts +5 -5
  170. package/src/transformers/model-to-narrative/validate-modules.ts +22 -22
  171. package/src/transformers/narrative-to-model/assemble.ts +12 -4
  172. package/src/transformers/narrative-to-model/debug.ts +1 -1
  173. package/src/transformers/narrative-to-model/derive-modules.specs.ts +35 -35
  174. package/src/transformers/narrative-to-model/derive-modules.ts +11 -11
  175. package/src/transformers/narrative-to-model/index.ts +47 -47
  176. package/src/transformers/narrative-to-model/spec-processors.ts +1 -1
  177. package/src/transformers/narrative-to-model/strings.ts +6 -6
  178. package/src/transformers/narrative-to-model/type-inference.specs.ts +11 -11
  179. package/src/validate-slice-requests.specs.ts +113 -113
  180. package/src/validate-slice-requests.ts +49 -49
  181. package/dist/src/getNarratives.d.ts.map +0 -1
  182. package/dist/src/getNarratives.js.map +0 -1
@@ -1,29 +1,29 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import type { Model } from './schema';
3
- import { validateSliceRequests } from './validate-slice-requests';
3
+ import { validateMomentRequests } from './validate-slice-requests';
4
4
 
5
5
  function emptyModel(overrides: Partial<Model> = {}): Model {
6
6
  return {
7
7
  variant: 'specs',
8
- narratives: [],
8
+ scenes: [],
9
9
  messages: [],
10
10
  modules: [],
11
11
  ...overrides,
12
12
  };
13
13
  }
14
14
 
15
- describe('validateSliceRequests', () => {
15
+ describe('validateMomentRequests', () => {
16
16
  describe('burst 1: parse safety', () => {
17
17
  it('returns empty array for empty model', () => {
18
- expect(validateSliceRequests(emptyModel())).toEqual([]);
18
+ expect(validateMomentRequests(emptyModel())).toEqual([]);
19
19
  });
20
20
 
21
- it('skips slices without request', () => {
21
+ it('skips moments without request', () => {
22
22
  const model = emptyModel({
23
- narratives: [
23
+ scenes: [
24
24
  {
25
25
  name: 'TestFlow',
26
- slices: [
26
+ moments: [
27
27
  {
28
28
  type: 'command',
29
29
  name: 'DoThing',
@@ -34,15 +34,15 @@ describe('validateSliceRequests', () => {
34
34
  },
35
35
  ],
36
36
  });
37
- expect(validateSliceRequests(model)).toEqual([]);
37
+ expect(validateMomentRequests(model)).toEqual([]);
38
38
  });
39
39
 
40
- it('skips slices with empty string request', () => {
40
+ it('skips moments with empty string request', () => {
41
41
  const model = emptyModel({
42
- narratives: [
42
+ scenes: [
43
43
  {
44
44
  name: 'TestFlow',
45
- slices: [
45
+ moments: [
46
46
  {
47
47
  type: 'command',
48
48
  name: 'DoThing',
@@ -54,15 +54,15 @@ describe('validateSliceRequests', () => {
54
54
  },
55
55
  ],
56
56
  });
57
- expect(validateSliceRequests(model)).toEqual([]);
57
+ expect(validateMomentRequests(model)).toEqual([]);
58
58
  });
59
59
 
60
60
  it('returns request_parse_error for invalid syntax', () => {
61
61
  const model = emptyModel({
62
- narratives: [
62
+ scenes: [
63
63
  {
64
64
  name: 'TestFlow',
65
- slices: [
65
+ moments: [
66
66
  {
67
67
  type: 'command',
68
68
  name: 'DoThing',
@@ -74,22 +74,22 @@ describe('validateSliceRequests', () => {
74
74
  },
75
75
  ],
76
76
  });
77
- expect(validateSliceRequests(model)).toEqual([
77
+ expect(validateMomentRequests(model)).toEqual([
78
78
  {
79
79
  type: 'request_parse_error',
80
80
  message: expect.any(String),
81
- flowName: 'TestFlow',
82
- sliceName: 'DoThing',
81
+ sceneName: 'TestFlow',
82
+ momentName: 'DoThing',
83
83
  },
84
84
  ]);
85
85
  });
86
86
 
87
87
  it('returns request_parse_error for anonymous operation', () => {
88
88
  const model = emptyModel({
89
- narratives: [
89
+ scenes: [
90
90
  {
91
91
  name: 'TestFlow',
92
- slices: [
92
+ moments: [
93
93
  {
94
94
  type: 'command',
95
95
  name: 'DoThing',
@@ -101,22 +101,22 @@ describe('validateSliceRequests', () => {
101
101
  },
102
102
  ],
103
103
  });
104
- expect(validateSliceRequests(model)).toEqual([
104
+ expect(validateMomentRequests(model)).toEqual([
105
105
  {
106
106
  type: 'request_parse_error',
107
107
  message: 'Operation must have a name',
108
- flowName: 'TestFlow',
109
- sliceName: 'DoThing',
108
+ sceneName: 'TestFlow',
109
+ momentName: 'DoThing',
110
110
  },
111
111
  ]);
112
112
  });
113
113
 
114
114
  it('returns request_parse_error when no operation definition found', () => {
115
115
  const model = emptyModel({
116
- narratives: [
116
+ scenes: [
117
117
  {
118
118
  name: 'TestFlow',
119
- slices: [
119
+ moments: [
120
120
  {
121
121
  type: 'command',
122
122
  name: 'DoThing',
@@ -128,12 +128,12 @@ describe('validateSliceRequests', () => {
128
128
  },
129
129
  ],
130
130
  });
131
- expect(validateSliceRequests(model)).toEqual([
131
+ expect(validateMomentRequests(model)).toEqual([
132
132
  {
133
133
  type: 'request_parse_error',
134
134
  message: 'No operation found in request',
135
- flowName: 'TestFlow',
136
- sliceName: 'DoThing',
135
+ sceneName: 'TestFlow',
136
+ momentName: 'DoThing',
137
137
  },
138
138
  ]);
139
139
  });
@@ -145,10 +145,10 @@ describe('validateSliceRequests', () => {
145
145
  const jsonAst = JSON.stringify(ast);
146
146
 
147
147
  const model = emptyModel({
148
- narratives: [
148
+ scenes: [
149
149
  {
150
150
  name: 'TestFlow',
151
- slices: [
151
+ moments: [
152
152
  {
153
153
  type: 'command',
154
154
  name: 'DoThing',
@@ -168,19 +168,19 @@ describe('validateSliceRequests', () => {
168
168
  },
169
169
  ],
170
170
  });
171
- const errors = validateSliceRequests(model);
171
+ const errors = validateMomentRequests(model);
172
172
  const parseErrors = errors.filter((e) => e.type === 'request_parse_error');
173
173
  expect(parseErrors).toEqual([]);
174
174
  });
175
175
  });
176
176
 
177
177
  describe('burst 2: mutation validation', () => {
178
- it('returns mutation_wrong_operation_type when command slice uses query', () => {
178
+ it('returns mutation_wrong_operation_type when command moment uses query', () => {
179
179
  const model = emptyModel({
180
- narratives: [
180
+ scenes: [
181
181
  {
182
182
  name: 'TestFlow',
183
- slices: [
183
+ moments: [
184
184
  {
185
185
  type: 'command',
186
186
  name: 'DoThing',
@@ -192,22 +192,22 @@ describe('validateSliceRequests', () => {
192
192
  },
193
193
  ],
194
194
  });
195
- expect(validateSliceRequests(model)).toEqual([
195
+ expect(validateMomentRequests(model)).toEqual([
196
196
  {
197
197
  type: 'mutation_wrong_operation_type',
198
- message: "Command slice 'DoThing' request should be a mutation, but found query",
199
- flowName: 'TestFlow',
200
- sliceName: 'DoThing',
198
+ message: "Command moment 'DoThing' request should be a mutation, but found query",
199
+ sceneName: 'TestFlow',
200
+ momentName: 'DoThing',
201
201
  },
202
202
  ]);
203
203
  });
204
204
 
205
205
  it('returns mutation_missing_input_arg when no $input variable', () => {
206
206
  const model = emptyModel({
207
- narratives: [
207
+ scenes: [
208
208
  {
209
209
  name: 'TestFlow',
210
- slices: [
210
+ moments: [
211
211
  {
212
212
  type: 'command',
213
213
  name: 'DoThing',
@@ -219,22 +219,22 @@ describe('validateSliceRequests', () => {
219
219
  },
220
220
  ],
221
221
  });
222
- expect(validateSliceRequests(model)).toEqual([
222
+ expect(validateMomentRequests(model)).toEqual([
223
223
  {
224
224
  type: 'mutation_missing_input_arg',
225
225
  message: "Mutation 'DoThing' is missing required $input variable",
226
- flowName: 'TestFlow',
227
- sliceName: 'DoThing',
226
+ sceneName: 'TestFlow',
227
+ momentName: 'DoThing',
228
228
  },
229
229
  ]);
230
230
  });
231
231
 
232
232
  it('returns mutation_input_type_mismatch when input type does not match', () => {
233
233
  const model = emptyModel({
234
- narratives: [
234
+ scenes: [
235
235
  {
236
236
  name: 'TestFlow',
237
- slices: [
237
+ moments: [
238
238
  {
239
239
  type: 'command',
240
240
  name: 'DoThing',
@@ -246,22 +246,22 @@ describe('validateSliceRequests', () => {
246
246
  },
247
247
  ],
248
248
  });
249
- expect(validateSliceRequests(model)).toEqual([
249
+ expect(validateMomentRequests(model)).toEqual([
250
250
  {
251
251
  type: 'mutation_input_type_mismatch',
252
252
  message: "Mutation 'DoThing' input type should be 'DoThingInput', but found 'WrongInput'",
253
- flowName: 'TestFlow',
254
- sliceName: 'DoThing',
253
+ sceneName: 'TestFlow',
254
+ momentName: 'DoThing',
255
255
  },
256
256
  ]);
257
257
  });
258
258
 
259
259
  it('returns mutation_message_not_found when command not in messages', () => {
260
260
  const model = emptyModel({
261
- narratives: [
261
+ scenes: [
262
262
  {
263
263
  name: 'TestFlow',
264
- slices: [
264
+ moments: [
265
265
  {
266
266
  type: 'command',
267
267
  name: 'DoThing',
@@ -274,22 +274,22 @@ describe('validateSliceRequests', () => {
274
274
  ],
275
275
  messages: [],
276
276
  });
277
- expect(validateSliceRequests(model)).toEqual([
277
+ expect(validateMomentRequests(model)).toEqual([
278
278
  {
279
279
  type: 'mutation_message_not_found',
280
280
  message: "No command message 'DoThing' found in model.messages",
281
- flowName: 'TestFlow',
282
- sliceName: 'DoThing',
281
+ sceneName: 'TestFlow',
282
+ momentName: 'DoThing',
283
283
  },
284
284
  ]);
285
285
  });
286
286
 
287
287
  it('returns no errors for valid mutation', () => {
288
288
  const model = emptyModel({
289
- narratives: [
289
+ scenes: [
290
290
  {
291
291
  name: 'TestFlow',
292
- slices: [
292
+ moments: [
293
293
  {
294
294
  type: 'command',
295
295
  name: 'DoThing',
@@ -308,17 +308,17 @@ describe('validateSliceRequests', () => {
308
308
  },
309
309
  ],
310
310
  });
311
- expect(validateSliceRequests(model)).toEqual([]);
311
+ expect(validateMomentRequests(model)).toEqual([]);
312
312
  });
313
313
  });
314
314
 
315
315
  describe('burst 3: query validation — operation type, state, top-level fields', () => {
316
- it('returns query_wrong_operation_type when query slice uses mutation', () => {
316
+ it('returns query_wrong_operation_type when query moment uses mutation', () => {
317
317
  const model = emptyModel({
318
- narratives: [
318
+ scenes: [
319
319
  {
320
320
  name: 'TestFlow',
321
- slices: [
321
+ moments: [
322
322
  {
323
323
  type: 'query',
324
324
  name: 'GetThing',
@@ -330,22 +330,22 @@ describe('validateSliceRequests', () => {
330
330
  },
331
331
  ],
332
332
  });
333
- expect(validateSliceRequests(model)).toEqual([
333
+ expect(validateMomentRequests(model)).toEqual([
334
334
  {
335
335
  type: 'query_wrong_operation_type',
336
- message: "Query slice 'GetThing' request should be a query, but found mutation",
337
- flowName: 'TestFlow',
338
- sliceName: 'GetThing',
336
+ message: "Query moment 'GetThing' request should be a query, but found mutation",
337
+ sceneName: 'TestFlow',
338
+ momentName: 'GetThing',
339
339
  },
340
340
  ]);
341
341
  });
342
342
 
343
343
  it('returns query_state_not_found when target state not in messages', () => {
344
344
  const model = emptyModel({
345
- narratives: [
345
+ scenes: [
346
346
  {
347
347
  name: 'TestFlow',
348
- slices: [
348
+ moments: [
349
349
  {
350
350
  type: 'query',
351
351
  name: 'GetThing',
@@ -366,22 +366,22 @@ describe('validateSliceRequests', () => {
366
366
  ],
367
367
  messages: [],
368
368
  });
369
- expect(validateSliceRequests(model)).toEqual([
369
+ expect(validateMomentRequests(model)).toEqual([
370
370
  {
371
371
  type: 'query_state_not_found',
372
372
  message: "State 'ThingState' referenced by query 'GetThing' not found in model.messages",
373
- flowName: 'TestFlow',
374
- sliceName: 'GetThing',
373
+ sceneName: 'TestFlow',
374
+ momentName: 'GetThing',
375
375
  },
376
376
  ]);
377
377
  });
378
378
 
379
379
  it('returns query_field_not_found when selecting field not on state', () => {
380
380
  const model = emptyModel({
381
- narratives: [
381
+ scenes: [
382
382
  {
383
383
  name: 'TestFlow',
384
- slices: [
384
+ moments: [
385
385
  {
386
386
  type: 'query',
387
387
  name: 'GetThing',
@@ -411,22 +411,22 @@ describe('validateSliceRequests', () => {
411
411
  },
412
412
  ],
413
413
  });
414
- expect(validateSliceRequests(model)).toEqual([
414
+ expect(validateMomentRequests(model)).toEqual([
415
415
  {
416
416
  type: 'query_field_not_found',
417
417
  message: "Field 'missing' in query 'GetThing' not found on state 'ThingState'",
418
- flowName: 'TestFlow',
419
- sliceName: 'GetThing',
418
+ sceneName: 'TestFlow',
419
+ momentName: 'GetThing',
420
420
  },
421
421
  ]);
422
422
  });
423
423
 
424
- it('skips query slice without data gracefully', () => {
424
+ it('skips query moment without data gracefully', () => {
425
425
  const model = emptyModel({
426
- narratives: [
426
+ scenes: [
427
427
  {
428
428
  name: 'TestFlow',
429
- slices: [
429
+ moments: [
430
430
  {
431
431
  type: 'query',
432
432
  name: 'GetThing',
@@ -438,15 +438,15 @@ describe('validateSliceRequests', () => {
438
438
  },
439
439
  ],
440
440
  });
441
- expect(validateSliceRequests(model)).toEqual([]);
441
+ expect(validateMomentRequests(model)).toEqual([]);
442
442
  });
443
443
 
444
444
  it('skips __typename in selection', () => {
445
445
  const model = emptyModel({
446
- narratives: [
446
+ scenes: [
447
447
  {
448
448
  name: 'TestFlow',
449
- slices: [
449
+ moments: [
450
450
  {
451
451
  type: 'query',
452
452
  name: 'GetThing',
@@ -473,15 +473,15 @@ describe('validateSliceRequests', () => {
473
473
  },
474
474
  ],
475
475
  });
476
- expect(validateSliceRequests(model)).toEqual([]);
476
+ expect(validateMomentRequests(model)).toEqual([]);
477
477
  });
478
478
 
479
479
  it('returns no errors for valid query', () => {
480
480
  const model = emptyModel({
481
- narratives: [
481
+ scenes: [
482
482
  {
483
483
  name: 'TestFlow',
484
- slices: [
484
+ moments: [
485
485
  {
486
486
  type: 'query',
487
487
  name: 'GetThing',
@@ -511,17 +511,17 @@ describe('validateSliceRequests', () => {
511
511
  },
512
512
  ],
513
513
  });
514
- expect(validateSliceRequests(model)).toEqual([]);
514
+ expect(validateMomentRequests(model)).toEqual([]);
515
515
  });
516
516
  });
517
517
 
518
518
  describe('burst 4: query nested field validation', () => {
519
519
  it('returns query_nested_field_not_found for nested field not in inline object', () => {
520
520
  const model = emptyModel({
521
- narratives: [
521
+ scenes: [
522
522
  {
523
523
  name: 'TestFlow',
524
- slices: [
524
+ moments: [
525
525
  {
526
526
  type: 'query',
527
527
  name: 'GetThing',
@@ -551,22 +551,22 @@ describe('validateSliceRequests', () => {
551
551
  },
552
552
  ],
553
553
  });
554
- expect(validateSliceRequests(model)).toEqual([
554
+ expect(validateMomentRequests(model)).toEqual([
555
555
  {
556
556
  type: 'query_nested_field_not_found',
557
557
  message: "Nested field 'missing' in query 'GetThing' not found on type of 'address'",
558
- flowName: 'TestFlow',
559
- sliceName: 'GetThing',
558
+ sceneName: 'TestFlow',
559
+ momentName: 'GetThing',
560
560
  },
561
561
  ]);
562
562
  });
563
563
 
564
564
  it('resolves nested field on referenced message type', () => {
565
565
  const model = emptyModel({
566
- narratives: [
566
+ scenes: [
567
567
  {
568
568
  name: 'TestFlow',
569
- slices: [
569
+ moments: [
570
570
  {
571
571
  type: 'query',
572
572
  name: 'GetThing',
@@ -601,15 +601,15 @@ describe('validateSliceRequests', () => {
601
601
  },
602
602
  ],
603
603
  });
604
- expect(validateSliceRequests(model)).toEqual([]);
604
+ expect(validateMomentRequests(model)).toEqual([]);
605
605
  });
606
606
 
607
607
  it('skips nested field on unresolvable type without error', () => {
608
608
  const model = emptyModel({
609
- narratives: [
609
+ scenes: [
610
610
  {
611
611
  name: 'TestFlow',
612
- slices: [
612
+ moments: [
613
613
  {
614
614
  type: 'query',
615
615
  name: 'GetThing',
@@ -639,15 +639,15 @@ describe('validateSliceRequests', () => {
639
639
  },
640
640
  ],
641
641
  });
642
- expect(validateSliceRequests(model)).toEqual([]);
642
+ expect(validateMomentRequests(model)).toEqual([]);
643
643
  });
644
644
 
645
645
  it('resolves nested fields on bracket array syntax type', () => {
646
646
  const model = emptyModel({
647
- narratives: [
647
+ scenes: [
648
648
  {
649
649
  name: 'TestFlow',
650
- slices: [
650
+ moments: [
651
651
  {
652
652
  type: 'query',
653
653
  name: 'GetThing',
@@ -677,15 +677,15 @@ describe('validateSliceRequests', () => {
677
677
  },
678
678
  ],
679
679
  });
680
- expect(validateSliceRequests(model)).toEqual([]);
680
+ expect(validateMomentRequests(model)).toEqual([]);
681
681
  });
682
682
 
683
683
  it('returns no errors for valid query with nested selections', () => {
684
684
  const model = emptyModel({
685
- narratives: [
685
+ scenes: [
686
686
  {
687
687
  name: 'TestFlow',
688
- slices: [
688
+ moments: [
689
689
  {
690
690
  type: 'query',
691
691
  name: 'GetThing',
@@ -715,17 +715,17 @@ describe('validateSliceRequests', () => {
715
715
  },
716
716
  ],
717
717
  });
718
- expect(validateSliceRequests(model)).toEqual([]);
718
+ expect(validateMomentRequests(model)).toEqual([]);
719
719
  });
720
720
  });
721
721
 
722
722
  describe('burst 5: integration', () => {
723
723
  it('returns no false positives on a questionnaires-style model', () => {
724
724
  const model = emptyModel({
725
- narratives: [
725
+ scenes: [
726
726
  {
727
727
  name: 'Questionnaire Management',
728
- slices: [
728
+ moments: [
729
729
  {
730
730
  type: 'command',
731
731
  name: 'SubmitAnswer',
@@ -799,15 +799,15 @@ describe('validateSliceRequests', () => {
799
799
  },
800
800
  ],
801
801
  });
802
- expect(validateSliceRequests(model)).toEqual([]);
802
+ expect(validateMomentRequests(model)).toEqual([]);
803
803
  });
804
804
 
805
- it('catches multiple errors across narratives', () => {
805
+ it('catches multiple errors across scenes', () => {
806
806
  const model = emptyModel({
807
- narratives: [
807
+ scenes: [
808
808
  {
809
809
  name: 'Flow1',
810
- slices: [
810
+ moments: [
811
811
  {
812
812
  type: 'command',
813
813
  name: 'BadCmd',
@@ -819,7 +819,7 @@ describe('validateSliceRequests', () => {
819
819
  },
820
820
  {
821
821
  name: 'Flow2',
822
- slices: [
822
+ moments: [
823
823
  {
824
824
  type: 'query',
825
825
  name: 'BadQuery',
@@ -831,18 +831,18 @@ describe('validateSliceRequests', () => {
831
831
  },
832
832
  ],
833
833
  });
834
- expect(validateSliceRequests(model)).toEqual([
834
+ expect(validateMomentRequests(model)).toEqual([
835
835
  {
836
836
  type: 'mutation_wrong_operation_type',
837
- message: "Command slice 'BadCmd' request should be a mutation, but found query",
838
- flowName: 'Flow1',
839
- sliceName: 'BadCmd',
837
+ message: "Command moment 'BadCmd' request should be a mutation, but found query",
838
+ sceneName: 'Flow1',
839
+ momentName: 'BadCmd',
840
840
  },
841
841
  {
842
842
  type: 'query_wrong_operation_type',
843
- message: "Query slice 'BadQuery' request should be a query, but found mutation",
844
- flowName: 'Flow2',
845
- sliceName: 'BadQuery',
843
+ message: "Query moment 'BadQuery' request should be a query, but found mutation",
844
+ sceneName: 'Flow2',
845
+ momentName: 'BadQuery',
846
846
  },
847
847
  ]);
848
848
  });