@auto-engineer/server-generator-apollo-emmett 0.11.8 → 0.11.10

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 (83) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/codegen/extract/index.d.ts +1 -0
  3. package/dist/src/codegen/extract/index.d.ts.map +1 -1
  4. package/dist/src/codegen/extract/index.js +1 -0
  5. package/dist/src/codegen/extract/index.js.map +1 -1
  6. package/dist/src/codegen/extract/type-helpers.d.ts +13 -0
  7. package/dist/src/codegen/extract/type-helpers.d.ts.map +1 -0
  8. package/dist/src/codegen/extract/type-helpers.js +98 -0
  9. package/dist/src/codegen/extract/type-helpers.js.map +1 -0
  10. package/dist/src/codegen/scaffoldFromSchema.d.ts.map +1 -1
  11. package/dist/src/codegen/scaffoldFromSchema.js +202 -19
  12. package/dist/src/codegen/scaffoldFromSchema.js.map +1 -1
  13. package/dist/src/codegen/templates/command/commands.ts.ejs +14 -9
  14. package/dist/src/codegen/templates/command/decide.specs.specs.ts +47 -47
  15. package/dist/src/codegen/templates/command/decide.specs.ts +4 -0
  16. package/dist/src/codegen/templates/command/decide.ts.ejs +1 -0
  17. package/dist/src/codegen/templates/command/events.ts.ejs +16 -13
  18. package/dist/src/codegen/templates/command/mutation.resolver.specs.ts +1 -0
  19. package/dist/src/codegen/templates/command/mutation.resolver.ts.ejs +2 -23
  20. package/dist/src/codegen/templates/command/register.specs.ts +1 -1
  21. package/dist/src/codegen/templates/command/register.ts.ejs +1 -4
  22. package/dist/src/codegen/templates/command/state.specs.ts +51 -47
  23. package/dist/src/codegen/templates/command/state.ts.ejs +8 -4
  24. package/dist/src/codegen/templates/query/projection.specs.ts +19 -2
  25. package/dist/src/codegen/templates/query/projection.ts.ejs +64 -12
  26. package/dist/src/codegen/templates/query/query.resolver.specs.ts +6 -3
  27. package/dist/src/codegen/templates/query/query.resolver.ts.ejs +11 -49
  28. package/dist/src/codegen/templates/react/react.ts.ejs +0 -1
  29. package/dist/src/codegen/templates/react/register.ts.ejs +0 -1
  30. package/dist/src/commands/generate-server.d.ts +0 -1
  31. package/dist/src/commands/generate-server.d.ts.map +1 -1
  32. package/dist/src/commands/generate-server.js +42 -23
  33. package/dist/src/commands/generate-server.js.map +1 -1
  34. package/dist/src/domain/shared/graphql-types.d.ts +10 -0
  35. package/dist/src/domain/shared/graphql-types.d.ts.map +1 -0
  36. package/dist/src/domain/shared/graphql-types.js +40 -0
  37. package/dist/src/domain/shared/graphql-types.js.map +1 -0
  38. package/dist/src/domain/shared/graphql-types.ts +20 -0
  39. package/dist/src/domain/shared/index.d.ts +1 -0
  40. package/dist/src/domain/shared/index.d.ts.map +1 -1
  41. package/dist/src/domain/shared/index.js +1 -0
  42. package/dist/src/domain/shared/index.js.map +1 -1
  43. package/dist/src/domain/shared/index.ts +1 -0
  44. package/dist/src/domain/shared/sendCommand.d.ts +1 -1
  45. package/dist/src/domain/shared/sendCommand.d.ts.map +1 -1
  46. package/dist/src/domain/shared/sendCommand.ts +1 -1
  47. package/dist/src/domain/shared/types.d.ts +5 -7
  48. package/dist/src/domain/shared/types.d.ts.map +1 -1
  49. package/dist/src/domain/shared/types.js +11 -38
  50. package/dist/src/domain/shared/types.js.map +1 -1
  51. package/dist/src/domain/shared/types.ts +10 -16
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/package.json +4 -4
  54. package/src/codegen/extract/index.ts +1 -0
  55. package/src/codegen/extract/type-helpers.ts +102 -0
  56. package/src/codegen/scaffoldFromSchema.ts +273 -15
  57. package/src/codegen/templates/command/commands.ts.ejs +14 -9
  58. package/src/codegen/templates/command/decide.specs.specs.ts +47 -47
  59. package/src/codegen/templates/command/decide.specs.ts +4 -0
  60. package/src/codegen/templates/command/decide.ts.ejs +1 -0
  61. package/src/codegen/templates/command/events.ts.ejs +16 -13
  62. package/src/codegen/templates/command/mutation.resolver.specs.ts +1 -0
  63. package/src/codegen/templates/command/mutation.resolver.ts.ejs +2 -23
  64. package/src/codegen/templates/command/register.specs.ts +1 -1
  65. package/src/codegen/templates/command/register.ts.ejs +1 -4
  66. package/src/codegen/templates/command/state.specs.ts +51 -47
  67. package/src/codegen/templates/command/state.ts.ejs +8 -4
  68. package/src/codegen/templates/query/projection.specs.ts +19 -2
  69. package/src/codegen/templates/query/projection.ts.ejs +64 -12
  70. package/src/codegen/templates/query/query.resolver.specs.ts +6 -3
  71. package/src/codegen/templates/query/query.resolver.ts.ejs +11 -49
  72. package/src/codegen/templates/react/react.ts.ejs +0 -1
  73. package/src/codegen/templates/react/register.ts.ejs +0 -1
  74. package/src/commands/generate-server.ts +50 -25
  75. package/src/domain/shared/graphql-types.ts +20 -0
  76. package/src/domain/shared/index.ts +1 -0
  77. package/src/domain/shared/sendCommand.ts +1 -1
  78. package/src/domain/shared/types.ts +10 -16
  79. package/.turbo/turbo-build.log +0 -5
  80. package/.turbo/turbo-format.log +0 -4
  81. package/.turbo/turbo-lint.log +0 -4
  82. package/.turbo/turbo-test.log +0 -14
  83. package/.turbo/turbo-type-check.log +0 -4
@@ -1,4 +1,3 @@
1
- import 'reflect-metadata';
2
1
  import fs from 'fs-extra';
3
2
  import * as path from 'path';
4
3
  import { readFile, writeFile } from 'fs/promises';
@@ -147,6 +146,33 @@ function logFlowDetails(spec: Model): void {
147
146
  }
148
147
  }
149
148
 
149
+ async function cleanStaleCompiledFiles(serverDir: string): Promise<void> {
150
+ const sharedTypesDir = join(serverDir, 'src', 'domain', 'shared');
151
+ debugScaffold('Cleaning stale compiled files from %s', sharedTypesDir);
152
+
153
+ if (!(await fs.pathExists(sharedTypesDir))) {
154
+ debugScaffold(' Shared types directory does not exist, skipping cleanup');
155
+ return;
156
+ }
157
+
158
+ const files = await fs.readdir(sharedTypesDir);
159
+ const staleFiles = files.filter((file) => file.endsWith('.js') || file.endsWith('.d.ts') || file.endsWith('.js.map'));
160
+
161
+ if (staleFiles.length === 0) {
162
+ debugScaffold(' No stale compiled files found');
163
+ return;
164
+ }
165
+
166
+ debugScaffold(' Found %d stale compiled files to remove', staleFiles.length);
167
+ for (const file of staleFiles) {
168
+ const filePath = join(sharedTypesDir, file);
169
+ await fs.remove(filePath);
170
+ debugScaffold(' Removed: %s', file);
171
+ }
172
+
173
+ debugScaffold(' Cleanup completed');
174
+ }
175
+
150
176
  async function generateAndWriteScaffold(spec: Model, serverDir: string): Promise<void> {
151
177
  const domainFlowsPath = join(serverDir, 'src', 'domain', 'flows');
152
178
  debugScaffold('Generating scaffold file plans');
@@ -165,6 +191,8 @@ async function generateAndWriteScaffold(spec: Model, serverDir: string): Promise
165
191
 
166
192
  await writeScaffoldFilePlans(filePlans);
167
193
  debugScaffold('Written all scaffold files');
194
+
195
+ await cleanStaleCompiledFiles(serverDir);
168
196
  }
169
197
 
170
198
  async function copyAllFiles(serverDir: string): Promise<void> {
@@ -260,6 +288,8 @@ export async function handleGenerateServerCommandInternal(
260
288
  await ensureDirExists(serverDir);
261
289
  debugFiles('Created server directory: %s', serverDir);
262
290
 
291
+ await copyAllFiles(serverDir);
292
+
263
293
  await generateAndWriteScaffold(spec, serverDir);
264
294
 
265
295
  if (Array.isArray(spec.flows) && spec.flows.length > 0) {
@@ -287,9 +317,6 @@ export async function handleGenerateServerCommandInternal(
287
317
  }
288
318
  }
289
319
 
290
- // Copy files
291
- await copyAllFiles(serverDir);
292
-
293
320
  // Write configuration files
294
321
  await writeConfigurationFiles(serverDir, absDest);
295
322
 
@@ -348,7 +375,16 @@ async function copySharedAndRootFiles(from: string, to: string): Promise<void> {
348
375
  const sharedFrom = path.join(from, 'shared');
349
376
  const sharedTo = path.join(to, 'shared');
350
377
  if (await fs.pathExists(sharedFrom)) {
351
- await fs.copy(sharedFrom, sharedTo);
378
+ await fs.ensureDir(sharedTo);
379
+ const sharedFiles = await fs.readdir(sharedFrom);
380
+ for (const file of sharedFiles) {
381
+ if (file.endsWith('.ts')) {
382
+ const srcFile = path.join(sharedFrom, file);
383
+ const destFile = path.join(sharedTo, file);
384
+ await fs.copy(srcFile, destFile);
385
+ debugFiles(' Copied shared file: %s', file);
386
+ }
387
+ }
352
388
  }
353
389
  await fs.ensureDir(to);
354
390
  const rootFiles = await fs.readdir(from);
@@ -529,27 +565,16 @@ async function installDependenciesAndGenerateSchema(serverDir: string, workingDi
529
565
  debugDeps('Starting dependency installation in %s', serverDir);
530
566
  debugDeps('Hint: You can debug by manually running: cd server && pnpm install && npx tsx scripts/generate-schema.ts');
531
567
 
532
- try {
533
- debugDeps('Running pnpm install');
534
- await execa('pnpm', ['install', '--ignore-workspace'], { cwd: serverDir });
535
- debugDeps('Dependencies installed successfully');
536
- } catch (error) {
537
- debugDeps('Failed to pnpm install: %s', error instanceof Error ? error.message : 'Unknown error');
538
- }
568
+ debugDeps('Running pnpm install');
569
+ await execa('pnpm', ['install', '--ignore-workspace'], { cwd: serverDir });
570
+ debugDeps('Dependencies installed successfully');
539
571
 
540
- try {
541
- debugDeps('Generating GraphQL schema...');
542
- debugDeps('Running: tsx scripts/generate-schema.ts', serverDir + '/scripts/generate-schema.ts');
543
- await execa('tsx', ['scripts/generate-schema.ts'], { cwd: serverDir });
544
- const schemaPath = join(workingDir, '.context', 'schema.graphql');
545
- debugDeps('GraphQL schema generated at: %s', schemaPath);
546
- } catch (error) {
547
- debugDeps(
548
- 'Failed to run tsx scripts/generate-schema.ts: %s',
549
- error instanceof Error ? error.message : 'Unknown error',
550
- );
551
- }
572
+ debugDeps('Generating GraphQL schema...');
573
+ debugDeps('Running: npx tsx scripts/generate-schema.ts');
574
+ const result = await execa('npx', ['tsx', 'scripts/generate-schema.ts'], { cwd: serverDir });
575
+ debugDeps('Schema generation output: %s', result.stdout);
576
+ const schemaPath = join(workingDir, '.context', 'schema.graphql');
577
+ debugDeps('GraphQL schema generated at: %s', schemaPath);
552
578
  }
553
579
 
554
- // Default export is the command handler
555
580
  export default commandHandler;
@@ -0,0 +1,20 @@
1
+ import 'reflect-metadata';
2
+ import { Field, ObjectType } from 'type-graphql';
3
+
4
+ @ObjectType()
5
+ export class MutationError {
6
+ @Field(() => String)
7
+ type!: string;
8
+
9
+ @Field(() => String, { nullable: true })
10
+ message?: string;
11
+ }
12
+
13
+ @ObjectType()
14
+ export class MutationResponse {
15
+ @Field(() => Boolean)
16
+ success!: boolean;
17
+
18
+ @Field(() => MutationError, { nullable: true })
19
+ error?: MutationError;
20
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './types';
2
+ export * from './graphql-types';
2
3
  export * from './ReadModel';
3
4
  export * from './reactorSpecification';
4
5
  export * from './sendCommand';
@@ -1,5 +1,5 @@
1
1
  import type { Command, CommandSender } from '@event-driven-io/emmett';
2
- import type { MutationResponse } from './types';
2
+ import type { MutationResponse } from './graphql-types';
3
3
 
4
4
  export async function sendCommand<T extends Command>(
5
5
  commandSender: CommandSender,
@@ -1,5 +1,7 @@
1
+ import { registerEnumType } from 'type-graphql';
2
+
3
+ import 'reflect-metadata';
1
4
  import { CommandSender, EventStore, type InMemoryDatabase } from '@event-driven-io/emmett';
2
- import { Field, ObjectType } from 'type-graphql';
3
5
 
4
6
  export interface ReactorContext {
5
7
  eventStore: EventStore;
@@ -14,20 +16,12 @@ export interface GraphQLContext {
14
16
  database: InMemoryDatabase;
15
17
  }
16
18
 
17
- @ObjectType()
18
- export class MutationError {
19
- @Field(() => String)
20
- type!: string;
21
-
22
- @Field(() => String, { nullable: true })
23
- message?: string;
19
+ export enum QuestionnaireProgressStatus {
20
+ IN_PROGRESS = 'in_progress',
21
+ READY_TO_SUBMIT = 'ready_to_submit',
22
+ SUBMITTED = 'submitted',
24
23
  }
25
24
 
26
- @ObjectType()
27
- export class MutationResponse {
28
- @Field(() => Boolean)
29
- success!: boolean;
30
-
31
- @Field(() => MutationError, { nullable: true })
32
- error?: MutationError;
33
- }
25
+ registerEnumType(QuestionnaireProgressStatus, {
26
+ name: 'QuestionnaireProgressStatus',
27
+ });
@@ -1,5 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-apollo-emmett@0.11.7 build /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
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
-
5
- Fixed ESM imports in dist/
@@ -1,4 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-apollo-emmett@0.11.7 format /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
3
- > prettier --write "**/*.{js,ts,json,md,yml,yaml}" --ignore-path ../../.prettierignore --log-level warn
4
-
@@ -1,4 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-apollo-emmett@0.11.7 lint /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
3
- > eslint 'src/**/*.ts' --ignore-pattern '**/*.specs.ts' --ignore-pattern '**/.tmp/**' --max-warnings 0 --config ../../eslint.config.ts
4
-
@@ -1,14 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-apollo-emmett@0.11.7 test /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
3
- > vitest run --reporter=dot
4
-
5
-
6
- RUN v3.2.4 /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
7
-
8
- ·······························-·
9
-
10
- Test Files 16 passed | 1 skipped (17)
11
- Tests 32 passed | 1 skipped (33)
12
- Start at 12:44:02
13
- Duration 1.43s (transform 515ms, setup 0ms, collect 3.88s, tests 4.93s, environment 1ms, prepare 2.08s)
14
-
@@ -1,4 +0,0 @@
1
-
2
- > @auto-engineer/server-generator-apollo-emmett@0.11.7 type-check /Users/sam/WebstormProjects/top/auto-engineer-3/packages/server-generator-apollo-emmett
3
- > tsc --noEmit --project tsconfig.json
4
-