@auto-engineer/narrative 0.13.0 → 0.13.2

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 (89) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/dist/src/commands/export-schema-runner.js +1 -1
  4. package/dist/src/commands/export-schema-runner.js.map +1 -1
  5. package/dist/src/fluent-builder.js +3 -3
  6. package/dist/src/fluent-builder.js.map +1 -1
  7. package/dist/src/getNarratives.specs.js +149 -153
  8. package/dist/src/getNarratives.specs.js.map +1 -1
  9. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  10. package/dist/src/id/addAutoIds.js +50 -12
  11. package/dist/src/id/addAutoIds.js.map +1 -1
  12. package/dist/src/id/addAutoIds.specs.js +396 -45
  13. package/dist/src/id/addAutoIds.specs.js.map +1 -1
  14. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  15. package/dist/src/id/hasAllIds.js +28 -5
  16. package/dist/src/id/hasAllIds.js.map +1 -1
  17. package/dist/src/id/hasAllIds.specs.js +407 -214
  18. package/dist/src/id/hasAllIds.specs.js.map +1 -1
  19. package/dist/src/index.d.ts +6 -8
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +3 -3
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/loader/graph.d.ts.map +1 -1
  24. package/dist/src/loader/graph.js +13 -6
  25. package/dist/src/loader/graph.js.map +1 -1
  26. package/dist/src/loader/ts-utils.d.ts +1 -0
  27. package/dist/src/loader/ts-utils.d.ts.map +1 -1
  28. package/dist/src/loader/ts-utils.js +95 -16
  29. package/dist/src/loader/ts-utils.js.map +1 -1
  30. package/dist/src/model-to-narrative.specs.js +531 -449
  31. package/dist/src/model-to-narrative.specs.js.map +1 -1
  32. package/dist/src/narrative-context.d.ts +8 -8
  33. package/dist/src/narrative-context.d.ts.map +1 -1
  34. package/dist/src/narrative-context.js +111 -301
  35. package/dist/src/narrative-context.js.map +1 -1
  36. package/dist/src/narrative-context.specs.js +15 -55
  37. package/dist/src/narrative-context.specs.js.map +1 -1
  38. package/dist/src/narrative.d.ts +19 -22
  39. package/dist/src/narrative.d.ts.map +1 -1
  40. package/dist/src/narrative.js +42 -71
  41. package/dist/src/narrative.js.map +1 -1
  42. package/dist/src/samples/test-with-ids.narrative.js +13 -29
  43. package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
  44. package/dist/src/schema.d.ts +3205 -8287
  45. package/dist/src/schema.d.ts.map +1 -1
  46. package/dist/src/schema.js +29 -47
  47. package/dist/src/schema.js.map +1 -1
  48. package/dist/src/slice-builder.js +3 -3
  49. package/dist/src/slice-builder.js.map +1 -1
  50. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  51. package/dist/src/transformers/model-to-narrative/generators/flow.js +118 -74
  52. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  53. package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts +9 -1
  54. package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts.map +1 -1
  55. package/dist/src/transformers/model-to-narrative/generators/gwt.js +112 -112
  56. package/dist/src/transformers/model-to-narrative/generators/gwt.js.map +1 -1
  57. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
  58. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
  59. package/dist/src/transformers/model-to-narrative/generators/imports.js +13 -9
  60. package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
  61. package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
  62. package/dist/src/transformers/narrative-to-model/index.js +50 -23
  63. package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
  64. package/dist/src/transformers/narrative-to-model/type-inference.specs.js +100 -90
  65. package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +5 -5
  68. package/src/commands/export-schema-runner.ts +3 -1
  69. package/src/fluent-builder.ts +3 -3
  70. package/src/getNarratives.specs.ts +168 -176
  71. package/src/id/addAutoIds.specs.ts +424 -47
  72. package/src/id/addAutoIds.ts +57 -13
  73. package/src/id/hasAllIds.specs.ts +400 -223
  74. package/src/id/hasAllIds.ts +32 -6
  75. package/src/index.ts +9 -12
  76. package/src/loader/graph.ts +23 -6
  77. package/src/loader/ts-utils.ts +169 -26
  78. package/src/model-to-narrative.specs.ts +531 -449
  79. package/src/narrative-context.specs.ts +73 -116
  80. package/src/narrative-context.ts +127 -374
  81. package/src/narrative.ts +70 -120
  82. package/src/samples/test-with-ids.narrative.ts +23 -31
  83. package/src/schema.ts +36 -52
  84. package/src/slice-builder.ts +3 -3
  85. package/src/transformers/model-to-narrative/generators/flow.ts +191 -85
  86. package/src/transformers/model-to-narrative/generators/gwt.ts +195 -178
  87. package/src/transformers/model-to-narrative/generators/imports.ts +13 -9
  88. package/src/transformers/narrative-to-model/index.ts +87 -26
  89. package/src/transformers/narrative-to-model/type-inference.specs.ts +100 -90
@@ -1,26 +1,22 @@
1
1
  import { describe, it, expect, beforeEach } from 'vitest';
2
2
  import { flow, example, rule, specs } from './narrative.js';
3
3
  import { command } from './fluent-builder.js';
4
- describe('Context Parameter Support', () => {
4
+ describe('Narrative DSL', () => {
5
5
  beforeEach(async () => {
6
6
  // Clean test state before each test
7
7
  });
8
- it('should support context parameter in given() method', () => {
8
+ it('should support given() method in builder', () => {
9
9
  expect(() => {
10
- flow('test flow with context', () => {
10
+ flow('test flow with given', () => {
11
11
  command('test command').server(() => {
12
12
  specs(() => {
13
- rule('test rule with context', () => {
14
- example('given with context')
13
+ rule('test rule with given', () => {
14
+ example('given test')
15
15
  .given({
16
16
  questionnaireId: 'q-001',
17
17
  participantId: 'participant-abc',
18
18
  link: 'https://app.example.com/q/q-001?participant=participant-abc',
19
19
  sentAt: new Date('2030-01-01T09:00:00Z'),
20
- }, {
21
- sentAt: 'comes from the system clock',
22
- questionnaireId: 'must be a valid questionnaire ID',
23
- link: 'generated based on questionnaire and participant',
24
20
  })
25
21
  .when({
26
22
  questionnaireId: 'q-001',
@@ -43,13 +39,13 @@ describe('Context Parameter Support', () => {
43
39
  });
44
40
  }).not.toThrow();
45
41
  });
46
- it('should support context parameter in when() method', () => {
42
+ it('should support when() method in builder', () => {
47
43
  expect(() => {
48
- flow('test flow with when context', () => {
44
+ flow('test flow with when', () => {
49
45
  command('test command').server(() => {
50
46
  specs(() => {
51
47
  rule('test rule', () => {
52
- example('when with context')
48
+ example('when test')
53
49
  .given({
54
50
  questionnaireId: 'q-001',
55
51
  participantId: 'participant-abc',
@@ -62,9 +58,6 @@ describe('Context Parameter Support', () => {
62
58
  questionId: 'q1',
63
59
  answer: 'Yes',
64
60
  savedAt: new Date('2030-01-01T09:05:00Z'),
65
- }, {
66
- answer: 'must be validated according to the question type',
67
- savedAt: 'timestamp when the answer was saved',
68
61
  })
69
62
  .then({
70
63
  questionnaireId: 'q-001',
@@ -80,13 +73,13 @@ describe('Context Parameter Support', () => {
80
73
  });
81
74
  }).not.toThrow();
82
75
  });
83
- it('should support context parameter in then() method', () => {
76
+ it('should support then() method in builder', () => {
84
77
  expect(() => {
85
- flow('test flow with then context', () => {
78
+ flow('test flow with then', () => {
86
79
  command('test command').server(() => {
87
80
  specs(() => {
88
81
  rule('test rule', () => {
89
- example('then with context')
82
+ example('then test')
90
83
  .given({
91
84
  questionnaireId: 'q-001',
92
85
  participantId: 'participant-abc',
@@ -107,10 +100,6 @@ describe('Context Parameter Support', () => {
107
100
  currentQuestionId: 'q2',
108
101
  remainingQuestions: ['q2'],
109
102
  answers: [{ questionId: 'q1', value: 'Yes' }],
110
- }, {
111
- answers: 'computed from the answered questions',
112
- status: 'calculated based on completed questions',
113
- currentQuestionId: 'next question to be answered',
114
103
  });
115
104
  });
116
105
  });
@@ -118,23 +107,18 @@ describe('Context Parameter Support', () => {
118
107
  });
119
108
  }).not.toThrow();
120
109
  });
121
- it('should preserve context data in schema output', async () => {
122
- // This test would require a proper file system setup to work with getNarratives
123
- // For now, we'll just test that the methods accept context parameters
110
+ it('should support full narrative DSL flow', () => {
124
111
  expect(() => {
125
- flow('test context preservation', () => {
112
+ flow('test full DSL flow', () => {
126
113
  command('test preservation').server(() => {
127
114
  specs(() => {
128
- rule('context preservation rule', () => {
129
- example('context should be preserved')
115
+ rule('full flow rule', () => {
116
+ example('full flow test')
130
117
  .given({
131
118
  questionnaireId: 'q-001',
132
119
  participantId: 'participant-abc',
133
120
  link: 'https://app.example.com/q/q-001?participant=participant-abc',
134
121
  sentAt: new Date('2030-01-01T09:00:00Z'),
135
- }, {
136
- sentAt: 'comes from the system clock',
137
- questionnaireId: 'validated questionnaire identifier',
138
122
  })
139
123
  .when({
140
124
  questionnaireId: 'q-001',
@@ -157,29 +141,5 @@ describe('Context Parameter Support', () => {
157
141
  });
158
142
  }).not.toThrow();
159
143
  });
160
- // These tests should fail with TypeScript compilation errors
161
- // Commenting out for now - they will be used to verify strict typing works
162
- /*
163
- it('should reject invalid context fields (compilation test)', () => {
164
- // This should cause a TypeScript error - invalidField is not in QuestionnaireLinkSent
165
- flow('invalid context test', () => {
166
- command('test').server(() => {
167
- specs(() => {
168
- rule('test rule', () => {
169
- example('invalid context')
170
- .given<QuestionnaireLinkSent>({
171
- questionnaireId: 'q-001',
172
- participantId: 'participant-abc',
173
- link: 'https://app.example.com',
174
- sentAt: new Date(),
175
- }, {
176
- invalidField: 'this should cause a type error' // TypeScript error expected
177
- });
178
- });
179
- });
180
- });
181
- });
182
- });
183
- */
184
144
  });
185
145
  //# sourceMappingURL=narrative-context.specs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"narrative-context.specs.js","sourceRoot":"","sources":["../../src/narrative-context.specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narrative-context.specs.js","sourceRoot":"","sources":["../../src/narrative-context.specs.ts"],"names":[],"mappings":"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"}
@@ -13,36 +13,33 @@ export declare function it(title: string): void;
13
13
  export declare function it(id: string, title: string): void;
14
14
  export declare function should(title: string): void;
15
15
  export declare function should(id: string, title: string): void;
16
- export declare function specs(description: string, fn: () => void): void;
16
+ export declare function specs(feature: string, fn: () => void): void;
17
17
  export declare function specs(fn: () => void): void;
18
- export declare function rule(description: string, fn: () => void): void;
19
- export declare function rule(description: string, id: string, fn: () => void): void;
20
- export declare const example: (description: string) => TypedExampleBuilder;
18
+ export declare function rule(name: string, fn: () => void): void;
19
+ export declare function rule(name: string, id: string, fn: () => void): void;
21
20
  type ExtractData<T> = T extends {
22
21
  data: infer D;
23
22
  } ? D : T;
24
- type ContextFor<T> = Partial<Record<keyof ExtractData<T>, string>>;
25
- interface TypedExampleBuilder {
26
- given<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedGivenBuilder<T>;
27
- when<W>(data: ExtractData<W> | ExtractData<W>[], context?: ContextFor<W>): TypedWhenBuilder<W>;
23
+ export interface ThenBuilder {
24
+ and<T>(data: ExtractData<T>): ThenBuilder;
28
25
  }
29
- interface TypedGivenBuilder<G> {
30
- and<U>(data: ExtractData<U> | ExtractData<U>[], context?: ContextFor<U>): TypedGivenBuilder<G | U>;
31
- when<W>(data: ExtractData<W> | ExtractData<W>[], context?: ContextFor<W>): TypedGivenWhenBuilder<G, W>;
32
- then<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedGivenThenBuilder<G, never, T>;
26
+ export interface WhenBuilder {
27
+ then<T>(data: ExtractData<T>): ThenBuilder;
28
+ and<T>(data: ExtractData<T>): WhenBuilder;
33
29
  }
34
- interface TypedWhenBuilder<W> {
35
- then<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedThenBuilder<W, T>;
30
+ export interface GivenBuilder {
31
+ and<T>(data: ExtractData<T>): GivenBuilder;
32
+ when<W>(data: ExtractData<W>): WhenBuilder;
33
+ then<T>(data: ExtractData<T>): ThenBuilder;
36
34
  }
37
- interface TypedGivenWhenBuilder<G, W> {
38
- then<T>(data: ExtractData<T> | ExtractData<T>[], context?: ContextFor<T>): TypedGivenThenBuilder<G, W, T>;
39
- }
40
- interface TypedThenBuilder<W, T> {
41
- and<A>(data: ExtractData<A> | ExtractData<A>[], context?: ContextFor<A>): TypedThenBuilder<W, T | A>;
42
- }
43
- interface TypedGivenThenBuilder<G, W, T> {
44
- and<A>(data: ExtractData<A> | ExtractData<A>[], context?: ContextFor<A>): TypedGivenThenBuilder<G, W, T | A>;
35
+ export interface ExampleBuilder {
36
+ given<T>(data: ExtractData<T>): GivenBuilder;
37
+ when<W>(data: ExtractData<W>): WhenBuilder;
45
38
  }
39
+ export declare function example(name: string): ExampleBuilder;
40
+ export declare function example(name: string, id: string): ExampleBuilder;
41
+ type ErrorType = 'IllegalStateError' | 'ValidationError' | 'NotFoundError';
42
+ export declare function thenError(errorType: ErrorType, message?: string): void;
46
43
  export declare const SliceType: {
47
44
  readonly COMMAND: "command";
48
45
  readonly QUERY: "query";
@@ -1 +1 @@
1
- {"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narrative.d.ts","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { registry } from './narrative-registry.js';
2
- import { startNarrative, clearCurrentNarrative, getCurrentSlice, startClientBlock, endClientBlock, startServerBlock, endServerBlock, pushSpec, pushDescribe, popDescribe, recordIt, setSliceData, recordRule, recordExample, recordGivenData, recordAndGivenData, recordWhenData, recordThenData, recordAndThenData, } from './narrative-context.js';
2
+ import { startNarrative, clearCurrentNarrative, getCurrentSlice, startClientBlock, endClientBlock, startServerBlock, endServerBlock, pushSpec, pushDescribe, popDescribe, recordIt, setSliceData, recordRule, recordExample, recordStep, recordErrorStep, } from './narrative-context.js';
3
3
  import createDebug from 'debug';
4
4
  const debug = createDebug('auto:narrative:narrative');
5
5
  if ('color' in debug && typeof debug === 'object') {
6
6
  debug.color = '6';
7
- } // cyan
7
+ }
8
8
  export function narrative(name, idOrFn, fn) {
9
9
  const id = typeof idOrFn === 'string' ? idOrFn : undefined;
10
10
  const callback = typeof idOrFn === 'function' ? idOrFn : fn;
@@ -61,102 +61,73 @@ export function should(idOrTitle, title) {
61
61
  const hasId = title !== undefined;
62
62
  recordIt(hasId ? idOrTitle : undefined, hasId ? title : idOrTitle);
63
63
  }
64
- export function specs(descriptionOrFn, fn) {
65
- const description = typeof descriptionOrFn === 'string' ? descriptionOrFn : '';
66
- const callback = typeof descriptionOrFn === 'function' ? descriptionOrFn : fn;
67
- pushSpec(description);
64
+ export function specs(featureOrFn, fn) {
65
+ const feature = typeof featureOrFn === 'string' ? featureOrFn : '';
66
+ const callback = typeof featureOrFn === 'function' ? featureOrFn : fn;
67
+ pushSpec(feature);
68
68
  callback();
69
69
  }
70
- export function rule(description, idOrFn, fn) {
70
+ export function rule(name, idOrFn, fn) {
71
71
  const id = typeof idOrFn === 'string' ? idOrFn : undefined;
72
72
  const callback = typeof idOrFn === 'function' ? idOrFn : fn;
73
- if (!callback) {
74
- throw new Error(`rule() requires a callback function. Got: ${typeof idOrFn}, ${typeof fn}`);
75
- }
76
- recordRule(description, id);
73
+ recordRule(name, id);
77
74
  callback();
78
75
  }
79
- export const example = (description) => {
80
- recordExample(description);
81
- return createExampleBuilder();
82
- };
83
- function normalizeContext(context) {
84
- if (!context)
85
- return undefined;
86
- const filtered = {};
87
- for (const [key, value] of Object.entries(context)) {
88
- if (value !== undefined) {
89
- filtered[key] = value;
90
- }
91
- }
92
- return Object.keys(filtered).length > 0 ? filtered : undefined;
93
- }
94
76
  function createThenBuilder() {
95
77
  return {
96
- and(data, context) {
97
- const andItems = Array.isArray(data) ? data : [data];
98
- recordAndThenData(andItems, normalizeContext(context));
78
+ and(data) {
79
+ recordStep('And', 'InferredType', data);
99
80
  return createThenBuilder();
100
81
  },
101
82
  };
102
83
  }
84
+ function createWhenBuilder() {
85
+ return {
86
+ then(data) {
87
+ recordStep('Then', 'InferredType', data);
88
+ return createThenBuilder();
89
+ },
90
+ and(data) {
91
+ recordStep('And', 'InferredType', data);
92
+ return createWhenBuilder();
93
+ },
94
+ };
95
+ }
103
96
  function createGivenBuilder() {
104
97
  return {
105
- and(data, context) {
106
- const andItems = Array.isArray(data) ? data : [data];
107
- recordAndGivenData(andItems, normalizeContext(context));
98
+ and(data) {
99
+ recordStep('And', 'InferredType', data);
108
100
  return createGivenBuilder();
109
101
  },
110
- when(data, context) {
111
- const whenData = Array.isArray(data) ? data : [data];
112
- recordWhenData(whenData.length === 1 ? whenData[0] : whenData, normalizeContext(context));
113
- return {
114
- then(data, context) {
115
- const thenItems = Array.isArray(data) ? data : [data];
116
- recordThenData(thenItems, normalizeContext(context));
117
- return {
118
- and(data, context) {
119
- const andItems = Array.isArray(data) ? data : [data];
120
- recordAndThenData(andItems, normalizeContext(context));
121
- return createThenBuilder();
122
- },
123
- };
124
- },
125
- };
102
+ when(data) {
103
+ recordStep('When', 'InferredType', data);
104
+ return createWhenBuilder();
126
105
  },
127
- then(data, context) {
128
- const thenItems = Array.isArray(data) ? data : [data];
129
- recordThenData(thenItems, normalizeContext(context));
130
- return {
131
- and(data, context) {
132
- const andItems = Array.isArray(data) ? data : [data];
133
- recordAndThenData(andItems, normalizeContext(context));
134
- return createThenBuilder();
135
- },
136
- };
106
+ then(data) {
107
+ recordStep('Then', 'InferredType', data);
108
+ return createThenBuilder();
137
109
  },
138
110
  };
139
111
  }
140
112
  function createExampleBuilder() {
141
113
  return {
142
- given(data, context) {
143
- const items = Array.isArray(data) ? data : [data];
144
- recordGivenData(items, normalizeContext(context));
114
+ given(data) {
115
+ recordStep('Given', 'InferredType', data);
145
116
  return createGivenBuilder();
146
117
  },
147
- when(data, context) {
148
- const whenData = Array.isArray(data) ? data : [data];
149
- recordWhenData(whenData.length === 1 ? whenData[0] : whenData, normalizeContext(context));
150
- return {
151
- then(data, context) {
152
- const thenItems = Array.isArray(data) ? data : [data];
153
- recordThenData(thenItems, normalizeContext(context));
154
- return createThenBuilder();
155
- },
156
- };
118
+ when(data) {
119
+ recordStep('When', 'InferredType', data);
120
+ return createWhenBuilder();
157
121
  },
158
122
  };
159
123
  }
124
+ export function example(name, id) {
125
+ recordExample(name, id);
126
+ return createExampleBuilder();
127
+ }
128
+ export function thenError(errorType, message) {
129
+ recordErrorStep(errorType, message);
130
+ }
160
131
  export const SliceType = {
161
132
  COMMAND: 'command',
162
133
  QUERY: 'query',
@@ -1 +1 @@
1
- {"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narrative.js","sourceRoot":"","sources":["../../src/narrative.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { flow, specs, rule, example } from '../narrative.js';
1
+ import { flow, specs, rule, example, thenError } from '../narrative.js';
2
2
  import { command, query, react } from '../fluent-builder.js';
3
3
  flow('Test Flow with IDs', 'FLOW-001', () => {
4
4
  command('Create test item', 'SLICE-001')
@@ -18,17 +18,11 @@ flow('Test Flow with IDs', 'FLOW-001', () => {
18
18
  });
19
19
  });
20
20
  rule('Invalid test items should be rejected', 'RULE-002', () => {
21
- example('User tries to create item with empty name')
22
- .when({
21
+ example('User tries to create item with empty name').when({
23
22
  itemId: 'test_456',
24
23
  name: '',
25
- })
26
- .then([
27
- {
28
- errorType: 'ValidationError',
29
- message: 'Item name cannot be empty',
30
- },
31
- ]);
24
+ });
25
+ thenError('ValidationError', 'Item name cannot be empty');
32
26
  });
33
27
  });
34
28
  });
@@ -54,25 +48,15 @@ flow('Test Flow with IDs', 'FLOW-001', () => {
54
48
  specs('Test event reaction specs', () => {
55
49
  rule('System should react to test item creation', 'RULE-004', () => {
56
50
  example('Notification sent when test item is created')
57
- .when([
58
- {
59
- eventRef: 'TestItemCreated',
60
- exampleData: {
61
- id: 'test_789',
62
- name: 'Another Test Item',
63
- createdAt: new Date('2024-01-16T10:00:00Z'),
64
- },
65
- },
66
- ])
67
- .then([
68
- {
69
- commandRef: 'SendNotification',
70
- exampleData: {
71
- message: 'New test item created: Another Test Item',
72
- recipientId: 'admin',
73
- },
74
- },
75
- ]);
51
+ .when({
52
+ id: 'test_789',
53
+ name: 'Another Test Item',
54
+ createdAt: new Date('2024-01-16T10:00:00Z'),
55
+ })
56
+ .then({
57
+ message: 'New test item created: Another Test Item',
58
+ recipientId: 'admin',
59
+ });
76
60
  });
77
61
  });
78
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"test-with-ids.narrative.js","sourceRoot":"","sources":["../../../src/samples/test-with-ids.narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AA4B1D,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE;IAC1C,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACrC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,iDAAiD,EAAE,UAAU,EAAE,GAAG,EAAE;gBACvE,OAAO,CAAC,8CAA8C,CAAC;qBACpD,IAAI,CAAiB;oBACpB,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,WAAW;iBAClB,CAAC;qBACD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,uCAAuC,EAAE,UAAU,EAAE,GAAG,EAAE;gBAC7D,OAAO,CAAC,2CAA2C,CAAC;qBACjD,IAAI,CAAiB;oBACpB,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC;qBACD,IAAI,CAAC;oBACJ;wBACE,SAAS,EAAE,iBAA0B;wBACrC,OAAO,EAAE,2BAA2B;qBACrC;iBACF,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACjC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,4CAA4C,EAAE,UAAU,EAAE,GAAG,EAAE;gBAClE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC;qBACD,IAAI,CAAgB;oBACnB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACpD,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,2CAA2C,EAAE,UAAU,EAAE,GAAG,EAAE;gBACjE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAC;oBACJ;wBACE,QAAQ,EAAE,iBAAiB;wBAC3B,WAAW,EAAE;4BACX,EAAE,EAAE,UAAU;4BACd,IAAI,EAAE,mBAAmB;4BACzB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;yBAC5C;qBACF;iBACF,CAAC;qBACD,IAAI,CAAC;oBACJ;wBACE,UAAU,EAAE,kBAAkB;wBAC9B,WAAW,EAAE;4BACX,OAAO,EAAE,0CAA0C;4BACnD,WAAW,EAAE,OAAO;yBACrB;qBACF;iBACF,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"test-with-ids.narrative.js","sourceRoot":"","sources":["../../../src/samples/test-with-ids.narrative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAoC1D,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,GAAG,EAAE;IAC1C,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC;SACrC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACrC,IAAI,CAAC,iDAAiD,EAAE,UAAU,EAAE,GAAG,EAAE;gBACvE,OAAO,CAAC,8CAA8C,CAAC;qBACpD,IAAI,CAAiB;oBACpB,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,WAAW;iBAClB,CAAC;qBACD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,uCAAuC,EAAE,UAAU,EAAE,GAAG,EAAE;gBAC7D,OAAO,CAAC,2CAA2C,CAAC,CAAC,IAAI,CAAiB;oBACxE,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,EAAE;iBACT,CAAC,CAAC;gBACH,SAAS,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC;SACjC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;SAChB,MAAM,CAAC,GAAG,EAAE;QACX,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,4CAA4C,EAAE,UAAU,EAAE,GAAG,EAAE;gBAClE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC;qBACD,IAAI,CAAgB;oBACnB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;QACpD,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,2CAA2C,EAAE,UAAU,EAAE,GAAG,EAAE;gBACjE,OAAO,CAAC,6CAA6C,CAAC;qBACnD,IAAI,CAAkB;oBACrB,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,mBAAmB;oBACzB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;iBAC5C,CAAC;qBACD,IAAI,CAAmB;oBACtB,OAAO,EAAE,0CAA0C;oBACnD,WAAW,EAAE,OAAO;iBACrB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}