@auto-engineer/narrative 0.15.0 → 0.17.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 (124) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +28 -0
  3. package/dist/src/getNarratives.js +1 -1
  4. package/dist/src/getNarratives.js.map +1 -1
  5. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  6. package/dist/src/id/addAutoIds.js +15 -0
  7. package/dist/src/id/addAutoIds.js.map +1 -1
  8. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  9. package/dist/src/id/hasAllIds.js +6 -1
  10. package/dist/src/id/hasAllIds.js.map +1 -1
  11. package/dist/src/index.d.ts +5 -2
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +1 -1
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/loader/runtime-cjs.d.ts.map +1 -1
  16. package/dist/src/loader/runtime-cjs.js +3 -2
  17. package/dist/src/loader/runtime-cjs.js.map +1 -1
  18. package/dist/src/schema.d.ts +301 -143
  19. package/dist/src/schema.d.ts.map +1 -1
  20. package/dist/src/schema.js +26 -0
  21. package/dist/src/schema.js.map +1 -1
  22. package/dist/src/transformers/model-to-narrative/cross-module-imports.d.ts +6 -0
  23. package/dist/src/transformers/model-to-narrative/cross-module-imports.d.ts.map +1 -0
  24. package/dist/src/transformers/model-to-narrative/cross-module-imports.js +63 -0
  25. package/dist/src/transformers/model-to-narrative/cross-module-imports.js.map +1 -0
  26. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +1 -4
  27. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  28. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  29. package/dist/src/transformers/model-to-narrative/generators/module-code.d.ts +9 -0
  30. package/dist/src/transformers/model-to-narrative/generators/module-code.d.ts.map +1 -0
  31. package/dist/src/transformers/model-to-narrative/generators/module-code.js +102 -0
  32. package/dist/src/transformers/model-to-narrative/generators/module-code.js.map +1 -0
  33. package/dist/src/transformers/model-to-narrative/index.d.ts +6 -4
  34. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  35. package/dist/src/transformers/model-to-narrative/index.js +10 -6
  36. package/dist/src/transformers/model-to-narrative/index.js.map +1 -1
  37. package/dist/src/transformers/model-to-narrative/ordering.d.ts +10 -0
  38. package/dist/src/transformers/model-to-narrative/ordering.d.ts.map +1 -0
  39. package/dist/src/transformers/model-to-narrative/ordering.js +37 -0
  40. package/dist/src/transformers/model-to-narrative/ordering.js.map +1 -0
  41. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts +3 -0
  42. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts.map +1 -0
  43. package/dist/src/transformers/model-to-narrative/spec-traversal.js +54 -0
  44. package/dist/src/transformers/model-to-narrative/spec-traversal.js.map +1 -0
  45. package/dist/src/transformers/model-to-narrative/types.d.ts +12 -0
  46. package/dist/src/transformers/model-to-narrative/types.d.ts.map +1 -0
  47. package/dist/src/transformers/model-to-narrative/types.js +2 -0
  48. package/dist/src/transformers/model-to-narrative/types.js.map +1 -0
  49. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts +8 -0
  50. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts.map +1 -0
  51. package/dist/src/transformers/model-to-narrative/validate-modules.js +121 -0
  52. package/dist/src/transformers/model-to-narrative/validate-modules.js.map +1 -0
  53. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  54. package/dist/src/transformers/narrative-to-model/assemble.js +5 -1
  55. package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -1
  56. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts +3 -0
  57. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts.map +1 -0
  58. package/dist/src/transformers/narrative-to-model/derive-modules.js +29 -0
  59. package/dist/src/transformers/narrative-to-model/derive-modules.js.map +1 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +5 -4
  62. package/src/getNarratives.specs.ts +214 -1
  63. package/src/getNarratives.ts +1 -1
  64. package/src/id/addAutoIds.specs.ts +180 -0
  65. package/src/id/addAutoIds.ts +16 -1
  66. package/src/id/hasAllIds.specs.ts +87 -0
  67. package/src/id/hasAllIds.ts +10 -2
  68. package/src/index.ts +7 -0
  69. package/src/loader/runtime-cjs.ts +3 -2
  70. package/src/model-to-narrative.specs.ts +467 -17
  71. package/src/schema.ts +28 -0
  72. package/src/transformers/model-to-narrative/cross-module-imports.specs.ts +450 -0
  73. package/src/transformers/model-to-narrative/cross-module-imports.ts +83 -0
  74. package/src/transformers/model-to-narrative/generators/flow.ts +11 -10
  75. package/src/transformers/model-to-narrative/generators/module-code.ts +186 -0
  76. package/src/transformers/model-to-narrative/index.ts +19 -7
  77. package/src/transformers/model-to-narrative/modules.specs.ts +625 -0
  78. package/src/transformers/model-to-narrative/ordering.specs.ts +104 -0
  79. package/src/transformers/model-to-narrative/ordering.ts +46 -0
  80. package/src/transformers/model-to-narrative/spec-traversal.specs.ts +418 -0
  81. package/src/transformers/model-to-narrative/spec-traversal.ts +63 -0
  82. package/src/transformers/model-to-narrative/types.ts +13 -0
  83. package/src/transformers/model-to-narrative/validate-modules.ts +159 -0
  84. package/src/transformers/narrative-to-model/assemble.ts +7 -2
  85. package/src/transformers/narrative-to-model/derive-modules.specs.ts +121 -0
  86. package/src/transformers/narrative-to-model/derive-modules.ts +36 -0
  87. package/tsconfig.json +1 -1
  88. package/tsconfig.test.json +2 -1
  89. package/dist/src/fluent-builder.specs.d.ts +0 -2
  90. package/dist/src/fluent-builder.specs.d.ts.map +0 -1
  91. package/dist/src/fluent-builder.specs.js +0 -28
  92. package/dist/src/fluent-builder.specs.js.map +0 -1
  93. package/dist/src/getNarratives.cache.specs.d.ts +0 -2
  94. package/dist/src/getNarratives.cache.specs.d.ts.map +0 -1
  95. package/dist/src/getNarratives.cache.specs.js +0 -234
  96. package/dist/src/getNarratives.cache.specs.js.map +0 -1
  97. package/dist/src/getNarratives.specs.d.ts +0 -2
  98. package/dist/src/getNarratives.specs.d.ts.map +0 -1
  99. package/dist/src/getNarratives.specs.js +0 -1307
  100. package/dist/src/getNarratives.specs.js.map +0 -1
  101. package/dist/src/id/addAutoIds.specs.d.ts +0 -2
  102. package/dist/src/id/addAutoIds.specs.d.ts.map +0 -1
  103. package/dist/src/id/addAutoIds.specs.js +0 -602
  104. package/dist/src/id/addAutoIds.specs.js.map +0 -1
  105. package/dist/src/id/hasAllIds.specs.d.ts +0 -2
  106. package/dist/src/id/hasAllIds.specs.d.ts.map +0 -1
  107. package/dist/src/id/hasAllIds.specs.js +0 -424
  108. package/dist/src/id/hasAllIds.specs.js.map +0 -1
  109. package/dist/src/model-to-narrative.specs.d.ts +0 -2
  110. package/dist/src/model-to-narrative.specs.d.ts.map +0 -1
  111. package/dist/src/model-to-narrative.specs.js +0 -2437
  112. package/dist/src/model-to-narrative.specs.js.map +0 -1
  113. package/dist/src/narrative-context.specs.d.ts +0 -2
  114. package/dist/src/narrative-context.specs.d.ts.map +0 -1
  115. package/dist/src/narrative-context.specs.js +0 -260
  116. package/dist/src/narrative-context.specs.js.map +0 -1
  117. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts +0 -2
  118. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts.map +0 -1
  119. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js +0 -142
  120. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js.map +0 -1
  121. package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts +0 -2
  122. package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts.map +0 -1
  123. package/dist/src/transformers/narrative-to-model/type-inference.specs.js +0 -177
  124. package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +0 -1
@@ -1,177 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { narrativesToModel } from './index.js';
3
- describe('Type inference in narrative-to-model transformer', () => {
4
- it('should correctly extract command types from when clauses', () => {
5
- const flows = [
6
- {
7
- name: 'Test Flow',
8
- id: 'FLOW-001',
9
- slices: [
10
- {
11
- id: 'SLICE-001',
12
- type: 'command',
13
- name: 'Submit Answer Command',
14
- client: { specs: [] },
15
- server: {
16
- description: 'Submit answer server',
17
- specs: [
18
- {
19
- type: 'gherkin',
20
- feature: 'Submit Answer Specs',
21
- rules: [
22
- {
23
- id: 'RULE-001',
24
- name: 'Should accept answer submission',
25
- examples: [
26
- {
27
- name: 'Valid answer submission',
28
- steps: [
29
- {
30
- keyword: 'When',
31
- text: 'AnswerQuestion',
32
- docString: {
33
- questionnaireId: 'q-001',
34
- participantId: 'participant-abc',
35
- questionId: 'q1',
36
- answer: 'Yes',
37
- },
38
- },
39
- {
40
- keyword: 'Then',
41
- text: 'QuestionAnswered',
42
- docString: {
43
- questionnaireId: 'q-001',
44
- participantId: 'participant-abc',
45
- questionId: 'q1',
46
- answer: 'Yes',
47
- savedAt: new Date(),
48
- },
49
- },
50
- ],
51
- },
52
- ],
53
- },
54
- ],
55
- },
56
- ],
57
- },
58
- },
59
- {
60
- id: 'SLICE-002',
61
- type: 'command',
62
- name: 'Submit Questionnaire Command',
63
- client: { specs: [] },
64
- server: {
65
- description: 'Submit questionnaire server',
66
- specs: [
67
- {
68
- type: 'gherkin',
69
- feature: 'Submit Questionnaire Specs',
70
- rules: [
71
- {
72
- id: 'RULE-002',
73
- name: 'Should submit questionnaire',
74
- examples: [
75
- {
76
- name: 'Valid questionnaire submission',
77
- steps: [
78
- {
79
- keyword: 'When',
80
- text: 'SubmitQuestionnaire',
81
- docString: {
82
- questionnaireId: 'q-001',
83
- participantId: 'participant-abc',
84
- },
85
- },
86
- {
87
- keyword: 'Then',
88
- text: 'QuestionnaireSubmitted',
89
- docString: {
90
- questionnaireId: 'q-001',
91
- participantId: 'participant-abc',
92
- submittedAt: new Date(),
93
- },
94
- },
95
- ],
96
- },
97
- ],
98
- },
99
- ],
100
- },
101
- ],
102
- },
103
- },
104
- ],
105
- },
106
- ];
107
- const model = narrativesToModel(flows);
108
- // Should have the correct command messages extracted
109
- expect(model.messages.some((msg) => msg.name === 'AnswerQuestion')).toBe(true);
110
- expect(model.messages.some((msg) => msg.name === 'SubmitQuestionnaire')).toBe(true);
111
- expect(model.messages.some((msg) => msg.name === 'QuestionAnswered')).toBe(true);
112
- expect(model.messages.some((msg) => msg.name === 'QuestionnaireSubmitted')).toBe(true);
113
- // Should NOT have InferredType fallback
114
- expect(model.messages.some((msg) => msg.name === 'InferredType')).toBe(false);
115
- // Verify the command messages have the correct structure
116
- const answerQuestionMsg = model.messages.find((msg) => msg.name === 'AnswerQuestion');
117
- expect(answerQuestionMsg?.type).toBe('command');
118
- expect(answerQuestionMsg?.fields).toBeDefined();
119
- const submitQuestionnaireMsg = model.messages.find((msg) => msg.name === 'SubmitQuestionnaire');
120
- expect(submitQuestionnaireMsg?.type).toBe('command');
121
- expect(submitQuestionnaireMsg?.fields).toBeDefined();
122
- });
123
- it('should handle single object when/then clauses correctly', () => {
124
- const flows = [
125
- {
126
- name: 'Single Object Flow',
127
- id: 'FLOW-001',
128
- slices: [
129
- {
130
- id: 'SLICE-001',
131
- type: 'command',
132
- name: 'Single Object Command',
133
- client: { specs: [] },
134
- server: {
135
- description: 'Single object server',
136
- specs: [
137
- {
138
- type: 'gherkin',
139
- feature: 'Single Object Specs',
140
- rules: [
141
- {
142
- id: 'RULE-001',
143
- name: 'Should handle single object',
144
- examples: [
145
- {
146
- name: 'Single object example',
147
- steps: [
148
- {
149
- keyword: 'When',
150
- text: 'TestCommand',
151
- docString: { test: 'value' },
152
- },
153
- {
154
- keyword: 'Then',
155
- text: 'TestEvent',
156
- docString: { result: 'success' },
157
- },
158
- ],
159
- },
160
- ],
161
- },
162
- ],
163
- },
164
- ],
165
- },
166
- },
167
- ],
168
- },
169
- ];
170
- const model = narrativesToModel(flows);
171
- // Should extract the command and event types from single objects
172
- expect(model.messages.some((msg) => msg.name === 'TestCommand')).toBe(true);
173
- expect(model.messages.some((msg) => msg.name === 'TestEvent')).toBe(true);
174
- expect(model.messages.some((msg) => msg.name === 'InferredType')).toBe(false);
175
- });
176
- });
177
- //# sourceMappingURL=type-inference.specs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-inference.specs.js","sourceRoot":"","sources":["../../../../src/transformers/narrative-to-model/type-inference.specs.ts"],"names":[],"mappings":"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"}