@auto-engineer/server-generator-apollo-emmett 1.148.0 → 1.150.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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +3 -3
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +40 -0
- package/README.md +174 -103
- package/package.json +4 -4
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/server-generator-apollo-emmett@1.
|
|
2
|
+
> @auto-engineer/server-generator-apollo-emmett@1.150.0 build /home/runner/work/auto-engineer/auto-engineer/packages/server-generator-apollo-emmett
|
|
3
3
|
> tsc && tsx ../../scripts/fix-esm-imports.ts && rm -rf dist/src/codegen/templates && mkdir -p dist/src/codegen && cp -r src/codegen/templates dist/src/codegen/templates && cp src/server.ts dist/src && cp -r src/utils dist/src && cp -r src/domain dist/src
|
|
4
4
|
|
|
5
5
|
Fixed ESM imports in dist/
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/server-generator-apollo-emmett@1.
|
|
2
|
+
> @auto-engineer/server-generator-apollo-emmett@1.149.0 test /home/runner/work/auto-engineer/auto-engineer/packages/server-generator-apollo-emmett
|
|
3
3
|
> vitest run --reporter=dot
|
|
4
4
|
|
|
5
5
|
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
|
|
10
10
|
[2m Test Files [22m [1m[32m40 passed[39m[22m[2m | [22m[33m1 skipped[39m[90m (41)[39m
|
|
11
11
|
[2m Tests [22m [1m[32m316 passed[39m[22m[2m | [22m[33m1 skipped[39m[90m (317)[39m
|
|
12
|
-
[2m Start at [22m 21:
|
|
13
|
-
[2m Duration [22m
|
|
12
|
+
[2m Start at [22m 12:21:40
|
|
13
|
+
[2m Duration [22m 32.02s[2m (transform 6.49s, setup 0ms, collect 66.69s, tests 12.38s, environment 9ms, prepare 6.14s)[22m
|
|
14
14
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/server-generator-apollo-emmett@1.
|
|
2
|
+
> @auto-engineer/server-generator-apollo-emmett@1.149.0 type-check /home/runner/work/auto-engineer/auto-engineer/packages/server-generator-apollo-emmett
|
|
3
3
|
> tsc --noEmit --project tsconfig.json
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# @auto-engineer/server-generator-apollo-emmett
|
|
2
2
|
|
|
3
|
+
## 1.150.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`a502d47`](https://github.com/BeOnAuto/auto-engineer/commit/a502d472df528a1c5d53905898220c2a3a49d8a5) Thanks [@osamanar](https://github.com/osamanar)! -
|
|
8
|
+
|
|
9
|
+
- [`c96a70e`](https://github.com/BeOnAuto/auto-engineer/commit/c96a70e49f9f64213450d0b9840bc9a8b2b1d77d) Thanks [@osamanar](https://github.com/osamanar)! -
|
|
10
|
+
|
|
11
|
+
- [`4343bca`](https://github.com/BeOnAuto/auto-engineer/commit/4343bcaa2576703ae578fd9b7f5ec5b9776702a9) Thanks [@osamanar](https://github.com/osamanar)! -
|
|
12
|
+
|
|
13
|
+
- [`28ffce9`](https://github.com/BeOnAuto/auto-engineer/commit/28ffce9c8b95f0c3ca61728bd1f667fa9416d461) Thanks [@osamanar](https://github.com/osamanar)! -
|
|
14
|
+
|
|
15
|
+
- [`3fd5dbf`](https://github.com/BeOnAuto/auto-engineer/commit/3fd5dbfbfb4f7a5fe71ae53105b31a1b0f30f911) Thanks [@osamanar](https://github.com/osamanar)! -
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`41f3df3`](https://github.com/BeOnAuto/auto-engineer/commit/41f3df3025445ba92208c2b007b8e29a40489309) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **global**: version packages
|
|
20
|
+
- **global**: major refresh to all the docs
|
|
21
|
+
- Updated dependencies [[`a502d47`](https://github.com/BeOnAuto/auto-engineer/commit/a502d472df528a1c5d53905898220c2a3a49d8a5), [`c96a70e`](https://github.com/BeOnAuto/auto-engineer/commit/c96a70e49f9f64213450d0b9840bc9a8b2b1d77d), [`4343bca`](https://github.com/BeOnAuto/auto-engineer/commit/4343bcaa2576703ae578fd9b7f5ec5b9776702a9), [`28ffce9`](https://github.com/BeOnAuto/auto-engineer/commit/28ffce9c8b95f0c3ca61728bd1f667fa9416d461), [`41f3df3`](https://github.com/BeOnAuto/auto-engineer/commit/41f3df3025445ba92208c2b007b8e29a40489309), [`3fd5dbf`](https://github.com/BeOnAuto/auto-engineer/commit/3fd5dbfbfb4f7a5fe71ae53105b31a1b0f30f911)]:
|
|
22
|
+
- @auto-engineer/message-bus@1.150.0
|
|
23
|
+
- @auto-engineer/narrative@1.150.0
|
|
24
|
+
|
|
25
|
+
## 1.149.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- [`e1eebbd`](https://github.com/BeOnAuto/auto-engineer/commit/e1eebbdf4f209780e790094d2e6887c4fa809f98) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **server-generator-apollo-emmett**: add Given state ref hints to state.ts.ejs
|
|
30
|
+
- **server-generator-apollo-emmett**: context-aware nonCommandField instructions
|
|
31
|
+
- **server-generator-apollo-emmett**: add state context instruction
|
|
32
|
+
- **server-generator-apollo-emmett**: extract shared template helpers
|
|
33
|
+
- **server-generator-apollo-emmett**: filter state refs from hasGivenEvents in decide.ts.ejs
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- [`d38c81e`](https://github.com/BeOnAuto/auto-engineer/commit/d38c81e7bb442a39626564cf4f6d8d55b60d0a38) Thanks [@SamHatoum](https://github.com/SamHatoum)! -
|
|
38
|
+
|
|
39
|
+
- Updated dependencies [[`d38c81e`](https://github.com/BeOnAuto/auto-engineer/commit/d38c81e7bb442a39626564cf4f6d8d55b60d0a38), [`e1eebbd`](https://github.com/BeOnAuto/auto-engineer/commit/e1eebbdf4f209780e790094d2e6887c4fa809f98)]:
|
|
40
|
+
- @auto-engineer/message-bus@1.149.0
|
|
41
|
+
- @auto-engineer/narrative@1.149.0
|
|
42
|
+
|
|
3
43
|
## 1.148.0
|
|
4
44
|
|
|
5
45
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# @auto-engineer/server-generator-apollo-emmett
|
|
2
2
|
|
|
3
|
-
Code
|
|
3
|
+
Code generator that scaffolds event-sourced GraphQL servers using Apollo Server, type-graphql, and the Emmett event sourcing framework. Takes a narrative model and produces a fully runnable server with commands, events, projections, queries, and reactors.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Purpose
|
|
8
8
|
|
|
9
|
-
Without
|
|
9
|
+
Without this package, you would need to manually write event sourcing boilerplate (decide/evolve functions), GraphQL resolvers, command/event type definitions, projections, and reactor wiring for every moment in your narrative model.
|
|
10
10
|
|
|
11
|
-
This package
|
|
11
|
+
This package reads a `Model` object (scenes, messages, integrations, narratives) and generates a complete `server/` directory containing an Apollo GraphQL server that follows Emmett's event sourcing patterns -- including EJS-templated code for each moment type (command, query, react).
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -18,37 +18,48 @@ This package transforms narrative specifications into a complete Apollo GraphQL
|
|
|
18
18
|
pnpm add @auto-engineer/server-generator-apollo-emmett
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
---
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
## Quick Start
|
|
24
24
|
|
|
25
|
-
### 1. Register the handlers
|
|
25
|
+
### 1. Register the command handlers
|
|
26
26
|
|
|
27
27
|
```typescript
|
|
28
28
|
import { COMMANDS } from '@auto-engineer/server-generator-apollo-emmett';
|
|
29
29
|
import { createMessageBus } from '@auto-engineer/message-bus';
|
|
30
30
|
|
|
31
31
|
const bus = createMessageBus();
|
|
32
|
-
COMMANDS.forEach(cmd => bus.registerCommand(cmd));
|
|
32
|
+
COMMANDS.forEach((cmd) => bus.registerCommand(cmd));
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
### 2.
|
|
35
|
+
### 2. Generate a server from a model
|
|
36
36
|
|
|
37
37
|
```typescript
|
|
38
|
-
|
|
38
|
+
await bus.send({
|
|
39
39
|
type: 'GenerateServer',
|
|
40
40
|
data: {
|
|
41
|
-
|
|
41
|
+
model: myModel, // a Model object from @auto-engineer/narrative
|
|
42
42
|
destination: '.',
|
|
43
43
|
},
|
|
44
|
-
requestId: 'req-
|
|
44
|
+
requestId: 'req-1',
|
|
45
45
|
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This creates a `server/` directory at the destination with a runnable Apollo GraphQL server.
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
### 3. Initialize a bare server (no model needed)
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
await bus.send({
|
|
54
|
+
type: 'InitializeServer',
|
|
55
|
+
data: {
|
|
56
|
+
destination: '.',
|
|
57
|
+
},
|
|
58
|
+
requestId: 'req-2',
|
|
59
|
+
});
|
|
49
60
|
```
|
|
50
61
|
|
|
51
|
-
|
|
62
|
+
Creates a minimal server with a health endpoint, ready for incremental generation.
|
|
52
63
|
|
|
53
64
|
---
|
|
54
65
|
|
|
@@ -57,40 +68,54 @@ The command generates a complete server directory with Apollo, Emmett, and type-
|
|
|
57
68
|
### Run via CLI
|
|
58
69
|
|
|
59
70
|
```bash
|
|
60
|
-
auto
|
|
71
|
+
auto build:backend --destination=.
|
|
72
|
+
auto initialize:server --destination=.
|
|
61
73
|
```
|
|
62
74
|
|
|
63
|
-
###
|
|
75
|
+
### Handle generation results
|
|
64
76
|
|
|
65
77
|
```typescript
|
|
66
|
-
|
|
67
|
-
import { createMessageBus } from '@auto-engineer/message-bus';
|
|
68
|
-
|
|
69
|
-
const bus = createMessageBus();
|
|
70
|
-
COMMANDS.forEach(handler => bus.register(handler));
|
|
71
|
-
|
|
72
|
-
await bus.send({
|
|
78
|
+
const events = await bus.send({
|
|
73
79
|
type: 'GenerateServer',
|
|
74
|
-
data: {
|
|
75
|
-
|
|
76
|
-
destination: '.',
|
|
77
|
-
},
|
|
80
|
+
data: { model, destination: '.' },
|
|
81
|
+
requestId: 'req-1',
|
|
78
82
|
});
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Handle Errors
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
for (const event of events) {
|
|
85
|
+
switch (event.type) {
|
|
86
|
+
case 'ServerGenerated':
|
|
87
|
+
console.log(`Server written to ${event.data.serverDir}`);
|
|
88
|
+
break;
|
|
89
|
+
case 'MomentGenerated':
|
|
90
|
+
console.log(`Generated: ${event.data.sceneName}/${event.data.momentName}`);
|
|
91
|
+
break;
|
|
92
|
+
case 'ServerGenerationFailed':
|
|
93
|
+
console.error(event.data.error);
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
86
96
|
}
|
|
87
97
|
```
|
|
88
98
|
|
|
89
|
-
###
|
|
99
|
+
### Incremental generation with change sets
|
|
100
|
+
|
|
101
|
+
When the model changes, pass a `changeSet` to only regenerate affected moments:
|
|
90
102
|
|
|
91
103
|
```typescript
|
|
92
|
-
bus.
|
|
93
|
-
|
|
104
|
+
await bus.send({
|
|
105
|
+
type: 'GenerateServer',
|
|
106
|
+
data: {
|
|
107
|
+
model,
|
|
108
|
+
destination: '.',
|
|
109
|
+
changeSet: {
|
|
110
|
+
added: ['scene-dir/moment-dir'],
|
|
111
|
+
removed: ['old-scene/old-moment'],
|
|
112
|
+
changed: ['scene-dir/updated-moment'],
|
|
113
|
+
sharedTypesChanged: false,
|
|
114
|
+
allAffected: ['scene-dir/moment-dir', 'scene-dir/updated-moment'],
|
|
115
|
+
deltas: {},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
requestId: 'req-3',
|
|
94
119
|
});
|
|
95
120
|
```
|
|
96
121
|
|
|
@@ -105,9 +130,13 @@ import { COMMANDS } from '@auto-engineer/server-generator-apollo-emmett';
|
|
|
105
130
|
|
|
106
131
|
import type {
|
|
107
132
|
GenerateServerCommand,
|
|
133
|
+
GenerateServerEvents,
|
|
108
134
|
ServerGeneratedEvent,
|
|
109
135
|
ServerGenerationFailedEvent,
|
|
110
|
-
|
|
136
|
+
MomentGeneratedEvent,
|
|
137
|
+
InitializeServerCommand,
|
|
138
|
+
ServerInitializedEvent,
|
|
139
|
+
ServerInitializationFailedEvent,
|
|
111
140
|
} from '@auto-engineer/server-generator-apollo-emmett';
|
|
112
141
|
```
|
|
113
142
|
|
|
@@ -115,7 +144,8 @@ import type {
|
|
|
115
144
|
|
|
116
145
|
| Command | CLI Alias | Description |
|
|
117
146
|
|---------|-----------|-------------|
|
|
118
|
-
| `GenerateServer` | `
|
|
147
|
+
| `GenerateServer` | `build:backend` | Generate event-sourced GraphQL server from a model |
|
|
148
|
+
| `InitializeServer` | `initialize:server` | Create a bare runnable server with health endpoint |
|
|
119
149
|
|
|
120
150
|
### GenerateServerCommand
|
|
121
151
|
|
|
@@ -123,39 +153,35 @@ import type {
|
|
|
123
153
|
type GenerateServerCommand = Command<
|
|
124
154
|
'GenerateServer',
|
|
125
155
|
{
|
|
126
|
-
|
|
156
|
+
model: Model;
|
|
127
157
|
destination: string;
|
|
158
|
+
changeSet?: ChangeSet;
|
|
159
|
+
isFirstRun?: boolean;
|
|
160
|
+
newState?: GenerationState;
|
|
128
161
|
}
|
|
129
162
|
>;
|
|
130
163
|
```
|
|
131
164
|
|
|
132
|
-
###
|
|
165
|
+
### InitializeServerCommand
|
|
133
166
|
|
|
134
167
|
```typescript
|
|
135
|
-
type
|
|
136
|
-
'
|
|
168
|
+
type InitializeServerCommand = Command<
|
|
169
|
+
'InitializeServer',
|
|
137
170
|
{
|
|
138
|
-
modelPath: string;
|
|
139
171
|
destination: string;
|
|
140
|
-
serverDir: string;
|
|
141
172
|
}
|
|
142
173
|
>;
|
|
143
174
|
```
|
|
144
175
|
|
|
145
|
-
###
|
|
176
|
+
### Events
|
|
146
177
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
schemaPath: string;
|
|
155
|
-
slicePath: string;
|
|
156
|
-
}
|
|
157
|
-
>;
|
|
158
|
-
```
|
|
178
|
+
| Event | Emitted when |
|
|
179
|
+
|-------|-------------|
|
|
180
|
+
| `ServerGenerated` | Full or incremental generation completes successfully |
|
|
181
|
+
| `ServerGenerationFailed` | Generation fails (includes error details, scene/moment context) |
|
|
182
|
+
| `MomentGenerated` | An individual moment is scaffolded |
|
|
183
|
+
| `ServerInitialized` | Bare server skeleton is created |
|
|
184
|
+
| `ServerInitializationFailed` | Server initialization fails |
|
|
159
185
|
|
|
160
186
|
---
|
|
161
187
|
|
|
@@ -163,72 +189,117 @@ type SliceGeneratedEvent = Event<
|
|
|
163
189
|
|
|
164
190
|
```
|
|
165
191
|
src/
|
|
166
|
-
├── index.ts
|
|
167
|
-
├── server.ts
|
|
192
|
+
├── index.ts # COMMANDS array, re-exports types
|
|
193
|
+
├── server.ts # Runtime server entry (copied into generated output)
|
|
168
194
|
├── commands/
|
|
169
|
-
│
|
|
195
|
+
│ ├── generate-server.ts # GenerateServer command handler
|
|
196
|
+
│ └── initialize-server.ts # InitializeServer command handler
|
|
170
197
|
├── codegen/
|
|
171
|
-
│ ├── scaffoldFromSchema.ts
|
|
172
|
-
│ ├──
|
|
173
|
-
│
|
|
174
|
-
│
|
|
175
|
-
│
|
|
176
|
-
│
|
|
177
|
-
├──
|
|
178
|
-
|
|
198
|
+
│ ├── scaffoldFromSchema.ts # Orchestrates file plan generation and writing
|
|
199
|
+
│ ├── templateHelpers.ts # Helpers for EJS templates
|
|
200
|
+
│ ├── types.ts # Message, Field, GwtCondition types
|
|
201
|
+
│ ├── extract/ # Extractors for commands, events, states, projections, queries
|
|
202
|
+
│ │ ├── commands.ts
|
|
203
|
+
│ │ ├── events.ts
|
|
204
|
+
│ │ ├── gwt.ts
|
|
205
|
+
│ │ ├── imports.ts
|
|
206
|
+
│ │ ├── messages.ts
|
|
207
|
+
│ │ ├── projection.ts
|
|
208
|
+
│ │ ├── query.ts
|
|
209
|
+
│ │ ├── states.ts
|
|
210
|
+
│ │ ├── step-converter.ts
|
|
211
|
+
│ │ ├── step-types.ts
|
|
212
|
+
│ │ └── type-helpers.ts
|
|
213
|
+
│ └── templates/ # EJS templates per moment type
|
|
214
|
+
│ ├── command/ # decide, evolve, handle, commands, events, state, mutation.resolver, register
|
|
215
|
+
│ ├── query/ # projection, query.resolver, events, state
|
|
216
|
+
│ └── react/ # react handler, register, events
|
|
217
|
+
├── domain/shared/ # Runtime code copied into generated server
|
|
218
|
+
│ ├── types.ts # GraphQLContext, ReactorContext
|
|
219
|
+
│ ├── graphql-types.ts # MutationResponse, MutationError
|
|
220
|
+
│ ├── ReadModel.ts # In-memory read model wrapper
|
|
221
|
+
│ ├── sendCommand.ts # Command dispatch helper
|
|
222
|
+
│ └── reactorSpecification.ts # Test helper for reactor assertions
|
|
223
|
+
└── utils/ # Runtime utilities copied into generated server
|
|
224
|
+
├── loadResolvers.ts # Glob-loads resolver classes
|
|
225
|
+
├── loadProjections.ts # Glob-loads projection definitions
|
|
226
|
+
└── loadRegisterFiles.ts # Glob-loads moment registration files
|
|
179
227
|
```
|
|
180
228
|
|
|
181
|
-
|
|
229
|
+
### Generation flow
|
|
182
230
|
|
|
183
231
|
```mermaid
|
|
184
232
|
flowchart TB
|
|
185
|
-
A[GenerateServer] --> B
|
|
186
|
-
B --> C[
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
233
|
+
A[GenerateServer command] --> B{First run or change set?}
|
|
234
|
+
B -- First run --> C[Clean server directory]
|
|
235
|
+
B -- Incremental --> D[Remove deleted moments]
|
|
236
|
+
C --> E[Copy runtime files]
|
|
237
|
+
D --> E
|
|
238
|
+
E --> F[Extract messages from model specs]
|
|
239
|
+
F --> G[Build GWT mappings per moment]
|
|
240
|
+
G --> H[Render EJS templates into file plans]
|
|
241
|
+
H --> I[Write files to disk]
|
|
242
|
+
I --> J[Write config files: package.json, tsconfig, vitest, biome]
|
|
243
|
+
J --> K[Emit MomentGenerated / ServerGenerated events]
|
|
191
244
|
```
|
|
192
245
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
### Generated Server Structure
|
|
246
|
+
### Generated server structure
|
|
196
247
|
|
|
197
248
|
```
|
|
198
249
|
server/
|
|
199
250
|
├── src/
|
|
200
|
-
│ ├── server.ts
|
|
251
|
+
│ ├── server.ts # Apollo Server entry point with Emmett event store
|
|
201
252
|
│ ├── utils/
|
|
253
|
+
│ │ ├── loadResolvers.ts
|
|
254
|
+
│ │ ├── loadProjections.ts
|
|
255
|
+
│ │ └── loadRegisterFiles.ts
|
|
202
256
|
│ └── domain/
|
|
203
257
|
│ ├── shared/
|
|
204
|
-
│
|
|
205
|
-
│
|
|
206
|
-
│
|
|
207
|
-
│
|
|
258
|
+
│ │ ├── types.ts # GraphQLContext, ReactorContext
|
|
259
|
+
│ │ ├── graphql-types.ts # MutationResponse
|
|
260
|
+
│ │ ├── ReadModel.ts
|
|
261
|
+
│ │ └── sendCommand.ts
|
|
262
|
+
│ └── narratives/
|
|
263
|
+
│ ├── health/
|
|
264
|
+
│ │ └── query.resolver.ts
|
|
265
|
+
│ └── {narrative}_{scene}/
|
|
266
|
+
│ └── {moment}/
|
|
267
|
+
│ ├── commands.ts # (command type)
|
|
208
268
|
│ ├── events.ts
|
|
209
269
|
│ ├── state.ts
|
|
210
270
|
│ ├── decide.ts
|
|
211
271
|
│ ├── evolve.ts
|
|
212
|
-
│
|
|
272
|
+
│ ├── handle.ts
|
|
273
|
+
│ ├── mutation.resolver.ts
|
|
274
|
+
│ ├── decide.specs.ts
|
|
275
|
+
│ ├── register.ts
|
|
276
|
+
│ ├── projection.ts # (query type)
|
|
277
|
+
│ ├── projection.specs.ts
|
|
278
|
+
│ ├── query.resolver.ts
|
|
279
|
+
│ ├── react.ts # (react type)
|
|
280
|
+
│ └── react.specs.ts
|
|
213
281
|
├── package.json
|
|
214
|
-
|
|
282
|
+
├── tsconfig.json
|
|
283
|
+
├── vitest.config.ts
|
|
284
|
+
└── biome.json
|
|
215
285
|
```
|
|
216
286
|
|
|
217
|
-
###
|
|
218
|
-
|
|
219
|
-
| Type |
|
|
220
|
-
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
225
|
-
###
|
|
226
|
-
|
|
227
|
-
| Package |
|
|
228
|
-
|
|
229
|
-
| `@auto-engineer/narrative` | Model type definitions |
|
|
230
|
-
| `@auto-engineer/message-bus` | Command
|
|
231
|
-
| `@event-driven-io/emmett` | Event sourcing
|
|
232
|
-
|
|
|
233
|
-
| `
|
|
234
|
-
| `
|
|
287
|
+
### Moment types
|
|
288
|
+
|
|
289
|
+
| Type | Generated files | Pattern |
|
|
290
|
+
|------|----------------|---------|
|
|
291
|
+
| `command` | commands, events, state, decide, evolve, handle, mutation.resolver, decide.specs, register | Mutation resolver dispatches command; decide produces events; evolve updates state |
|
|
292
|
+
| `query` | events, projection, state, projection.specs, query.resolver | Query resolver reads from in-memory projection built from events |
|
|
293
|
+
| `react` | events, react handler, react.specs, register | Reactor listens to events and sends commands in response |
|
|
294
|
+
|
|
295
|
+
### Key dependencies
|
|
296
|
+
|
|
297
|
+
| Package | Role |
|
|
298
|
+
|---------|------|
|
|
299
|
+
| `@auto-engineer/narrative` | Model type definitions (Scene, Moment, Model) |
|
|
300
|
+
| `@auto-engineer/message-bus` | Command handler registration and dispatch |
|
|
301
|
+
| `@event-driven-io/emmett` | Event sourcing runtime (event store, projections, message bus) |
|
|
302
|
+
| `@event-driven-io/emmett-sqlite` | SQLite-backed event store |
|
|
303
|
+
| `apollo-server` | GraphQL server |
|
|
304
|
+
| `type-graphql` | Decorator-based GraphQL schema definitions |
|
|
305
|
+
| `ejs` | Template rendering for code generation |
|
package/package.json
CHANGED
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"uuid": "^13.0.0",
|
|
33
33
|
"web-streams-polyfill": "^4.1.0",
|
|
34
34
|
"zod": "^3.22.4",
|
|
35
|
-
"@auto-engineer/
|
|
36
|
-
"@auto-engineer/
|
|
35
|
+
"@auto-engineer/message-bus": "1.150.0",
|
|
36
|
+
"@auto-engineer/narrative": "1.150.0"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"typescript": "^5.8.3",
|
|
45
45
|
"vitest": "^3.2.4",
|
|
46
46
|
"tsx": "^4.19.2",
|
|
47
|
-
"@auto-engineer/cli": "1.
|
|
47
|
+
"@auto-engineer/cli": "1.150.0"
|
|
48
48
|
},
|
|
49
|
-
"version": "1.
|
|
49
|
+
"version": "1.150.0",
|
|
50
50
|
"scripts": {
|
|
51
51
|
"generate:server": "tsx src/cli/index.ts",
|
|
52
52
|
"build": "tsc && tsx ../../scripts/fix-esm-imports.ts && rm -rf dist/src/codegen/templates && mkdir -p dist/src/codegen && cp -r src/codegen/templates dist/src/codegen/templates && cp src/server.ts dist/src && cp -r src/utils dist/src && cp -r src/domain dist/src",
|