@auto-engineer/server-generator-apollo-emmett 1.97.0 → 1.97.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.
package/package.json CHANGED
@@ -10,8 +10,8 @@
10
10
  }
11
11
  },
12
12
  "dependencies": {
13
- "@event-driven-io/emmett": "^0.42.0",
14
- "@event-driven-io/emmett-sqlite": "^0.42.0",
13
+ "@event-driven-io/emmett": "0.43.0-beta.5",
14
+ "@event-driven-io/emmett-sqlite": "0.43.0-beta.5",
15
15
  "apollo-server": "^3.13.0",
16
16
  "apollo-server-express": "^3.13.0",
17
17
  "better-sqlite3": "^12.4.1",
@@ -29,11 +29,11 @@
29
29
  "type-fest": "^4.41.0",
30
30
  "type-graphql": "^2.0.0-rc.2",
31
31
  "graphql-type-json": "^0.3.2",
32
- "uuid": "^11.0.0",
32
+ "uuid": "^13.0.0",
33
33
  "web-streams-polyfill": "^4.1.0",
34
34
  "zod": "^3.22.4",
35
- "@auto-engineer/narrative": "1.97.0",
36
- "@auto-engineer/message-bus": "1.97.0"
35
+ "@auto-engineer/narrative": "1.97.2",
36
+ "@auto-engineer/message-bus": "1.97.2"
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.97.0"
47
+ "@auto-engineer/cli": "1.97.2"
48
48
  },
49
- "version": "1.97.0",
49
+ "version": "1.97.2",
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",
@@ -112,6 +112,7 @@ describe('handleInitializeServerInternal', () => {
112
112
  await fs.writeFile(join(serverDir, 'src', 'server.ts'), sentinel);
113
113
  await fs.writeFile(join(serverDir, 'src', 'domain', 'shared', 'types.ts'), sentinel);
114
114
  await fs.writeFile(join(serverDir, 'src', 'domain', 'flows', 'health', 'query.resolver.ts'), sentinel);
115
+ await fs.writeFile(join(serverDir, 'vitest.config.ts'), sentinel);
115
116
 
116
117
  await handleInitializeServerInternal(command);
117
118
 
@@ -120,6 +121,7 @@ describe('handleInitializeServerInternal', () => {
120
121
  expect(await readFile(join(serverDir, 'src', 'domain', 'flows', 'health', 'query.resolver.ts'), 'utf8')).toBe(
121
122
  sentinel,
122
123
  );
124
+ expect(await readFile(join(serverDir, 'vitest.config.ts'), 'utf8')).toBe(sentinel);
123
125
  });
124
126
 
125
127
  it('emits ServerInitializationFailed when destination is unwritable', async () => {
@@ -139,18 +141,39 @@ describe('handleInitializeServerInternal', () => {
139
141
  });
140
142
  });
141
143
 
142
- it('does not overwrite existing config files on second run', async () => {
144
+ it('updates dependency versions in existing package.json', async () => {
143
145
  const command = makeCommand(tempDir);
144
- await handleInitializeServerInternal(command);
145
-
146
146
  const serverDir = join(tempDir, 'server');
147
- const sentinel = '{"custom": true}';
148
- await fs.writeFile(join(serverDir, 'package.json'), sentinel);
149
- await fs.writeFile(join(serverDir, 'vitest.config.ts'), sentinel);
147
+ await fs.ensureDir(serverDir);
148
+ await fs.writeJson(join(serverDir, 'package.json'), {
149
+ name: 'my-server',
150
+ dependencies: { '@event-driven-io/emmett': '0.1.0', 'custom-dep': '1.0.0' },
151
+ });
150
152
 
151
153
  await handleInitializeServerInternal(command);
152
154
 
153
- expect(await readFile(join(serverDir, 'package.json'), 'utf8')).toBe(sentinel);
154
- expect(await readFile(join(serverDir, 'vitest.config.ts'), 'utf8')).toBe(sentinel);
155
+ const pkg = await fs.readJson(join(serverDir, 'package.json'));
156
+ expect(pkg).toEqual({
157
+ name: 'my-server',
158
+ dependencies: {
159
+ 'custom-dep': '1.0.0',
160
+ '@event-driven-io/emmett': '0.43.0-beta.5',
161
+ '@event-driven-io/emmett-sqlite': '0.43.0-beta.5',
162
+ 'type-graphql': '^2.0.0-rc.2',
163
+ 'graphql-type-json': '^0.3.2',
164
+ graphql: '^16.11.0',
165
+ 'fast-glob': '^3.3.3',
166
+ 'reflect-metadata': '^0.2.2',
167
+ zod: '^3.22.4',
168
+ 'apollo-server': '^3.13.0',
169
+ uuid: '^13.0.0',
170
+ sqlite3: '^5.1.7',
171
+ },
172
+ devDependencies: {
173
+ typescript: '^5.8.3',
174
+ vitest: '^3.2.4',
175
+ tsx: '^4.19.2',
176
+ },
177
+ });
155
178
  });
156
179
  });
@@ -87,9 +87,8 @@ function resolvePackageRoot(): string {
87
87
  return resolve(__dirname, '../../..');
88
88
  }
89
89
 
90
- async function writePackageIfMissing(serverDir: string): Promise<void> {
90
+ async function writeOrUpdatePackageJson(serverDir: string): Promise<void> {
91
91
  const pkgPath = join(serverDir, 'package.json');
92
- if (await fs.pathExists(pkgPath)) return;
93
92
 
94
93
  const packageRoot = resolvePackageRoot();
95
94
  const localPkgPath = resolve(packageRoot, 'package.json');
@@ -118,6 +117,29 @@ async function writePackageIfMissing(serverDir: string): Promise<void> {
118
117
  return acc;
119
118
  }, {});
120
119
 
120
+ const resolvedDeps = resolveDeps([
121
+ '@event-driven-io/emmett',
122
+ '@event-driven-io/emmett-sqlite',
123
+ 'type-graphql',
124
+ 'graphql-type-json',
125
+ 'graphql',
126
+ 'fast-glob',
127
+ 'reflect-metadata',
128
+ 'zod',
129
+ 'apollo-server',
130
+ 'uuid',
131
+ 'sqlite3',
132
+ ]);
133
+ const resolvedDevDeps = resolveDeps(['typescript', 'vitest', 'tsx']);
134
+
135
+ if (await fs.pathExists(pkgPath)) {
136
+ const existing = await fs.readJson(pkgPath);
137
+ existing.dependencies = { ...existing.dependencies, ...resolvedDeps };
138
+ existing.devDependencies = { ...existing.devDependencies, ...resolvedDevDeps };
139
+ await fs.writeJson(pkgPath, existing, { spaces: 2 });
140
+ return;
141
+ }
142
+
121
143
  const packageJson = {
122
144
  name: 'generated-server',
123
145
  version: '0.0.0',
@@ -130,20 +152,8 @@ async function writePackageIfMissing(serverDir: string): Promise<void> {
130
152
  dev: 'tsx --no-deprecation src/server.ts',
131
153
  postinstall: 'npm rebuild sqlite3 2>/dev/null || true',
132
154
  },
133
- dependencies: resolveDeps([
134
- '@event-driven-io/emmett',
135
- '@event-driven-io/emmett-sqlite',
136
- 'type-graphql',
137
- 'graphql-type-json',
138
- 'graphql',
139
- 'fast-glob',
140
- 'reflect-metadata',
141
- 'zod',
142
- 'apollo-server',
143
- 'uuid',
144
- 'sqlite3',
145
- ]),
146
- devDependencies: resolveDeps(['typescript', 'vitest', 'tsx']),
155
+ dependencies: resolvedDeps,
156
+ devDependencies: resolvedDevDeps,
147
157
  };
148
158
 
149
159
  await fs.writeJson(pkgPath, packageJson, { spaces: 2 });
@@ -235,6 +245,7 @@ async function copyLoadResolversIfMissing(serverDir: string): Promise<void> {
235
245
  const SERVER_TS = `import 'reflect-metadata';
236
246
  import { getInMemoryDatabase, getInMemoryMessageBus } from '@event-driven-io/emmett';
237
247
  import { getSQLiteEventStore } from '@event-driven-io/emmett-sqlite';
248
+ import { sqlite3EventStoreDriver } from '@event-driven-io/emmett-sqlite/sqlite3';
238
249
  import { ApolloServer } from 'apollo-server';
239
250
  import { buildSchema } from 'type-graphql';
240
251
  import { loadResolvers } from './utils/loadResolvers.js';
@@ -244,6 +255,7 @@ async function start() {
244
255
  const database = getInMemoryDatabase();
245
256
 
246
257
  const eventStore = getSQLiteEventStore({
258
+ driver: sqlite3EventStoreDriver,
247
259
  fileName: './event-store.sqlite',
248
260
  schema: { autoMigration: 'CreateOrUpdate' },
249
261
  });
@@ -308,7 +320,7 @@ export async function handleInitializeServerInternal(
308
320
 
309
321
  debug('Initializing server at %s', serverDir);
310
322
 
311
- await writePackageIfMissing(serverDir);
323
+ await writeOrUpdatePackageJson(serverDir);
312
324
  await writeTsconfig(serverDir);
313
325
  await writeVitestConfigIfMissing(serverDir);
314
326
  await writeSchemaScriptIfMissing(serverDir, absDest);
package/src/server.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import 'reflect-metadata';
2
2
  import { getInMemoryDatabase, getInMemoryMessageBus, handleInMemoryProjections } from '@event-driven-io/emmett';
3
3
  import { getSQLiteEventStore } from '@event-driven-io/emmett-sqlite';
4
+ import { sqlite3EventStoreDriver } from '@event-driven-io/emmett-sqlite/sqlite3';
4
5
  import { ApolloServer } from 'apollo-server';
5
6
  import { buildSchema } from 'type-graphql';
6
7
  import { loadProjections, loadRegisterFiles, loadResolvers } from './utils';
@@ -13,6 +14,7 @@ async function start() {
13
14
  const database = getInMemoryDatabase();
14
15
 
15
16
  const eventStore = getSQLiteEventStore({
17
+ driver: sqlite3EventStoreDriver,
16
18
  fileName: './event-store.sqlite',
17
19
  schema: { autoMigration: 'CreateOrUpdate' },
18
20
  });
@@ -23,7 +25,7 @@ async function start() {
23
25
  }
24
26
  await Promise.all(registrations.map((r) => r.register(messageBus, eventStore)));
25
27
  const consumer = eventStore.consumer();
26
- consumer.processor({
28
+ consumer.reactor({
27
29
  processorId: 'projection-updater',
28
30
  startFrom: 'BEGINNING',
29
31
  eachMessage: async (event) => {
@@ -34,7 +36,7 @@ async function start() {
34
36
  });
35
37
  },
36
38
  });
37
- consumer.processor({
39
+ consumer.reactor({
38
40
  processorId: 'forward-to-message-bus',
39
41
  startFrom: 'BEGINNING',
40
42
  eachMessage: async (evt) => {