@auto-engineer/server-generator-apollo-emmett 0.1.1
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/.tmp/server-test-output/server/package.json +26 -0
- package/.tmp/server-test-output/server/scripts/generate-schema.ts +31 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/commands.ts +8 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/decide.specs.ts +36 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/decide.ts +33 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/events.ts +10 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/evolve.ts +28 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/handle.ts +24 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/mutation.resolver.ts +25 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/register.ts +7 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/create-item/state.ts +47 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/get-available-items/projection.specs.ts +46 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/get-available-items/projection.ts +38 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/get-available-items/query.resolver.ts +39 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/get-available-items/state.ts +5 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/commands.ts +8 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/decide.specs.ts +36 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/decide.ts +33 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/events.ts +3 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/evolve.ts +28 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/handle.ts +24 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/mutation.resolver.ts +25 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/register.ts +7 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-new-item/state.ts +47 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-on-new-item/react.specs.ts +49 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-on-new-item/react.ts +43 -0
- package/.tmp/server-test-output/server/src/domain/flows/add-item/notify-on-new-item/register.ts +24 -0
- package/.tmp/server-test-output/server/src/domain/shared/ReadModel.ts +26 -0
- package/.tmp/server-test-output/server/src/domain/shared/index.ts +4 -0
- package/.tmp/server-test-output/server/src/domain/shared/reactorSpecification.ts +257 -0
- package/.tmp/server-test-output/server/src/domain/shared/sendCommand.ts +21 -0
- package/.tmp/server-test-output/server/src/domain/shared/types.ts +31 -0
- package/.tmp/server-test-output/server/src/server.ts +43 -0
- package/.tmp/server-test-output/server/src/utils/index.ts +3 -0
- package/.tmp/server-test-output/server/src/utils/loadProjections.ts +30 -0
- package/.tmp/server-test-output/server/src/utils/loadRegisterFiles.ts +41 -0
- package/.tmp/server-test-output/server/src/utils/loadResolvers.ts +36 -0
- package/.tmp/server-test-output/server/tsconfig.json +19 -0
- package/.tmp/server-test-output/server/vitest.config.ts +7 -0
- package/.turbo/turbo-build.log +5 -0
- package/.turbo/turbo-format.log +57 -0
- package/.turbo/turbo-lint.log +5 -0
- package/.turbo/turbo-test.log +113 -0
- package/.turbo/turbo-type-check.log +4 -0
- package/CHANGELOG.md +141 -0
- package/DEBUG.md +177 -0
- package/LICENSE +10 -0
- package/README.md +185 -0
- package/dist/cli-manifest.d.ts +3 -0
- package/dist/cli-manifest.d.ts.map +1 -0
- package/dist/cli-manifest.js +8 -0
- package/dist/cli-manifest.js.map +1 -0
- package/dist/codegen/extract/commands.d.ts +19 -0
- package/dist/codegen/extract/commands.d.ts.map +1 -0
- package/dist/codegen/extract/commands.js +52 -0
- package/dist/codegen/extract/commands.js.map +1 -0
- package/dist/codegen/extract/data-sink.d.ts +6 -0
- package/dist/codegen/extract/data-sink.d.ts.map +1 -0
- package/dist/codegen/extract/data-sink.js +39 -0
- package/dist/codegen/extract/data-sink.js.map +1 -0
- package/dist/codegen/extract/events.d.ts +10 -0
- package/dist/codegen/extract/events.d.ts.map +1 -0
- package/dist/codegen/extract/events.js +32 -0
- package/dist/codegen/extract/events.js.map +1 -0
- package/dist/codegen/extract/fields.d.ts +3 -0
- package/dist/codegen/extract/fields.d.ts.map +1 -0
- package/dist/codegen/extract/fields.js +9 -0
- package/dist/codegen/extract/fields.js.map +1 -0
- package/dist/codegen/extract/graphql.d.ts +14 -0
- package/dist/codegen/extract/graphql.d.ts.map +1 -0
- package/dist/codegen/extract/graphql.js +81 -0
- package/dist/codegen/extract/graphql.js.map +1 -0
- package/dist/codegen/extract/gwt.d.ts +6 -0
- package/dist/codegen/extract/gwt.d.ts.map +1 -0
- package/dist/codegen/extract/gwt.js +61 -0
- package/dist/codegen/extract/gwt.js.map +1 -0
- package/dist/codegen/extract/index.d.ts +8 -0
- package/dist/codegen/extract/index.d.ts.map +1 -0
- package/dist/codegen/extract/index.js +8 -0
- package/dist/codegen/extract/index.js.map +1 -0
- package/dist/codegen/extract/messages.d.ts +24 -0
- package/dist/codegen/extract/messages.d.ts.map +1 -0
- package/dist/codegen/extract/messages.js +131 -0
- package/dist/codegen/extract/messages.js.map +1 -0
- package/dist/codegen/extract/projection.d.ts +4 -0
- package/dist/codegen/extract/projection.d.ts.map +1 -0
- package/dist/codegen/extract/projection.js +30 -0
- package/dist/codegen/extract/projection.js.map +1 -0
- package/dist/codegen/extract/query.d.ts +11 -0
- package/dist/codegen/extract/query.d.ts.map +1 -0
- package/dist/codegen/extract/query.js +11 -0
- package/dist/codegen/extract/query.js.map +1 -0
- package/dist/codegen/extract/states.d.ts +5 -0
- package/dist/codegen/extract/states.d.ts.map +1 -0
- package/dist/codegen/extract/states.js +35 -0
- package/dist/codegen/extract/states.js.map +1 -0
- package/dist/codegen/scaffoldFromSchema.d.ts +9 -0
- package/dist/codegen/scaffoldFromSchema.d.ts.map +1 -0
- package/dist/codegen/scaffoldFromSchema.integration.specs.d.ts +2 -0
- package/dist/codegen/scaffoldFromSchema.integration.specs.d.ts.map +1 -0
- package/dist/codegen/scaffoldFromSchema.integration.specs.js +59 -0
- package/dist/codegen/scaffoldFromSchema.integration.specs.js.map +1 -0
- package/dist/codegen/scaffoldFromSchema.js +326 -0
- package/dist/codegen/scaffoldFromSchema.js.map +1 -0
- package/dist/codegen/templates/command/commands.specs.ts +90 -0
- package/dist/codegen/templates/command/commands.ts.ejs +11 -0
- package/dist/codegen/templates/command/decide.specs.specs.ts +265 -0
- package/dist/codegen/templates/command/decide.specs.ts +542 -0
- package/dist/codegen/templates/command/decide.specs.ts.ejs +51 -0
- package/dist/codegen/templates/command/decide.ts.ejs +107 -0
- package/dist/codegen/templates/command/events.specs.ts +106 -0
- package/dist/codegen/templates/command/events.ts.ejs +14 -0
- package/dist/codegen/templates/command/evolve.specs.ts +102 -0
- package/dist/codegen/templates/command/evolve.ts.ejs +39 -0
- package/dist/codegen/templates/command/handle.specs.ts +313 -0
- package/dist/codegen/templates/command/handle.ts.ejs +111 -0
- package/dist/codegen/templates/command/mutation.resolver.specs.ts +115 -0
- package/dist/codegen/templates/command/mutation.resolver.ts.ejs +25 -0
- package/dist/codegen/templates/command/register.specs.ts +107 -0
- package/dist/codegen/templates/command/register.ts.ejs +12 -0
- package/dist/codegen/templates/command/state.specs.ts +127 -0
- package/dist/codegen/templates/command/state.ts.ejs +47 -0
- package/dist/codegen/templates/query/projection.specs.specs..ts +276 -0
- package/dist/codegen/templates/query/projection.specs.ts +348 -0
- package/dist/codegen/templates/query/projection.specs.ts.ejs +71 -0
- package/dist/codegen/templates/query/projection.ts.ejs +121 -0
- package/dist/codegen/templates/query/query.resolver.specs.ts +254 -0
- package/dist/codegen/templates/query/query.resolver.ts.ejs +98 -0
- package/dist/codegen/templates/query/state.specs.ts +70 -0
- package/dist/codegen/templates/query/state.ts.ejs +7 -0
- package/dist/codegen/templates/react/react.specs.specs.ts +214 -0
- package/dist/codegen/templates/react/react.specs.ts +241 -0
- package/dist/codegen/templates/react/react.specs.ts.ejs +80 -0
- package/dist/codegen/templates/react/react.ts.ejs +56 -0
- package/dist/codegen/templates/react/register.specs.ts +222 -0
- package/dist/codegen/templates/react/register.ts.ejs +39 -0
- package/dist/codegen/test-data/specVariant1.d.ts +4 -0
- package/dist/codegen/test-data/specVariant1.d.ts.map +1 -0
- package/dist/codegen/test-data/specVariant1.js +185 -0
- package/dist/codegen/test-data/specVariant1.js.map +1 -0
- package/dist/codegen/types.d.ts +35 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +2 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/codegen/utils/path.d.ts +4 -0
- package/dist/codegen/utils/path.d.ts.map +1 -0
- package/dist/codegen/utils/path.js +18 -0
- package/dist/codegen/utils/path.js.map +1 -0
- package/dist/commands/generate-server.d.ts +81 -0
- package/dist/commands/generate-server.d.ts.map +1 -0
- package/dist/commands/generate-server.js +383 -0
- package/dist/commands/generate-server.js.map +1 -0
- package/dist/domain/shared/ReadModel.d.ts +10 -0
- package/dist/domain/shared/ReadModel.d.ts.map +1 -0
- package/dist/domain/shared/ReadModel.js +19 -0
- package/dist/domain/shared/ReadModel.js.map +1 -0
- package/dist/domain/shared/ReadModel.ts +26 -0
- package/dist/domain/shared/index.d.ts +5 -0
- package/dist/domain/shared/index.d.ts.map +1 -0
- package/dist/domain/shared/index.js +5 -0
- package/dist/domain/shared/index.js.map +1 -0
- package/dist/domain/shared/index.ts +4 -0
- package/dist/domain/shared/reactorSpecification.d.ts +35 -0
- package/dist/domain/shared/reactorSpecification.d.ts.map +1 -0
- package/dist/domain/shared/reactorSpecification.js +155 -0
- package/dist/domain/shared/reactorSpecification.js.map +1 -0
- package/dist/domain/shared/reactorSpecification.ts +257 -0
- package/dist/domain/shared/sendCommand.d.ts +4 -0
- package/dist/domain/shared/sendCommand.d.ts.map +1 -0
- package/dist/domain/shared/sendCommand.js +17 -0
- package/dist/domain/shared/sendCommand.js.map +1 -0
- package/dist/domain/shared/sendCommand.ts +21 -0
- package/dist/domain/shared/types.d.ts +19 -0
- package/dist/domain/shared/types.d.ts.map +1 -0
- package/dist/domain/shared/types.js +39 -0
- package/dist/domain/shared/types.js.map +1 -0
- package/dist/domain/shared/types.ts +31 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +33 -0
- package/dist/server.js.map +1 -0
- package/dist/server.ts +43 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.ts +3 -0
- package/dist/utils/loadProjections.d.ts +3 -0
- package/dist/utils/loadProjections.d.ts.map +1 -0
- package/dist/utils/loadProjections.js +23 -0
- package/dist/utils/loadProjections.js.map +1 -0
- package/dist/utils/loadProjections.ts +30 -0
- package/dist/utils/loadRegisterFiles.d.ts +6 -0
- package/dist/utils/loadRegisterFiles.d.ts.map +1 -0
- package/dist/utils/loadRegisterFiles.js +28 -0
- package/dist/utils/loadRegisterFiles.js.map +1 -0
- package/dist/utils/loadRegisterFiles.ts +41 -0
- package/dist/utils/loadResolvers.d.ts +5 -0
- package/dist/utils/loadResolvers.d.ts.map +1 -0
- package/dist/utils/loadResolvers.js +27 -0
- package/dist/utils/loadResolvers.js.map +1 -0
- package/dist/utils/loadResolvers.ts +36 -0
- package/package.json +55 -0
- package/src/cli-manifest.ts +9 -0
- package/src/codegen/extract/commands.ts +79 -0
- package/src/codegen/extract/data-sink.ts +45 -0
- package/src/codegen/extract/events.ts +46 -0
- package/src/codegen/extract/fields.ts +17 -0
- package/src/codegen/extract/graphql.ts +103 -0
- package/src/codegen/extract/gwt.ts +75 -0
- package/src/codegen/extract/index.ts +7 -0
- package/src/codegen/extract/messages.ts +196 -0
- package/src/codegen/extract/projection.ts +47 -0
- package/src/codegen/extract/query.ts +18 -0
- package/src/codegen/extract/states.ts +45 -0
- package/src/codegen/scaffoldFromSchema.integration.specs.ts +71 -0
- package/src/codegen/scaffoldFromSchema.ts +440 -0
- package/src/codegen/templates/command/commands.specs.ts +90 -0
- package/src/codegen/templates/command/commands.ts.ejs +11 -0
- package/src/codegen/templates/command/decide.specs.specs.ts +265 -0
- package/src/codegen/templates/command/decide.specs.ts +542 -0
- package/src/codegen/templates/command/decide.specs.ts.ejs +51 -0
- package/src/codegen/templates/command/decide.ts.ejs +107 -0
- package/src/codegen/templates/command/events.specs.ts +106 -0
- package/src/codegen/templates/command/events.ts.ejs +14 -0
- package/src/codegen/templates/command/evolve.specs.ts +102 -0
- package/src/codegen/templates/command/evolve.ts.ejs +39 -0
- package/src/codegen/templates/command/handle.specs.ts +313 -0
- package/src/codegen/templates/command/handle.ts.ejs +111 -0
- package/src/codegen/templates/command/mutation.resolver.specs.ts +115 -0
- package/src/codegen/templates/command/mutation.resolver.ts.ejs +25 -0
- package/src/codegen/templates/command/register.specs.ts +107 -0
- package/src/codegen/templates/command/register.ts.ejs +12 -0
- package/src/codegen/templates/command/state.specs.ts +127 -0
- package/src/codegen/templates/command/state.ts.ejs +47 -0
- package/src/codegen/templates/query/projection.specs.specs..ts +276 -0
- package/src/codegen/templates/query/projection.specs.ts +348 -0
- package/src/codegen/templates/query/projection.specs.ts.ejs +71 -0
- package/src/codegen/templates/query/projection.ts.ejs +121 -0
- package/src/codegen/templates/query/query.resolver.specs.ts +254 -0
- package/src/codegen/templates/query/query.resolver.ts.ejs +98 -0
- package/src/codegen/templates/query/state.specs.ts +70 -0
- package/src/codegen/templates/query/state.ts.ejs +7 -0
- package/src/codegen/templates/react/react.specs.specs.ts +214 -0
- package/src/codegen/templates/react/react.specs.ts +241 -0
- package/src/codegen/templates/react/react.specs.ts.ejs +80 -0
- package/src/codegen/templates/react/react.ts.ejs +56 -0
- package/src/codegen/templates/react/register.specs.ts +222 -0
- package/src/codegen/templates/react/register.ts.ejs +39 -0
- package/src/codegen/test-data/specVariant1.json +212 -0
- package/src/codegen/test-data/specVariant1.ts +188 -0
- package/src/codegen/test-data/specVariant2.json +396 -0
- package/src/codegen/types.ts +35 -0
- package/src/codegen/utils/path.ts +20 -0
- package/src/commands/generate-server.ts +517 -0
- package/src/domain/shared/ReadModel.ts +26 -0
- package/src/domain/shared/index.ts +4 -0
- package/src/domain/shared/reactorSpecification.ts +257 -0
- package/src/domain/shared/sendCommand.ts +21 -0
- package/src/domain/shared/types.ts +31 -0
- package/src/index.ts +2 -0
- package/src/server.ts +43 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/loadProjections.ts +30 -0
- package/src/utils/loadRegisterFiles.ts +41 -0
- package/src/utils/loadResolvers.ts +36 -0
- package/tsconfig.json +12 -0
- package/tsconfig.tsbuildinfo +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# @auto-engineer/server-generator-apollo-emmett
|
|
2
|
+
|
|
3
|
+
Code generation plugin for the Auto Engineer CLI that scaffolds event-driven servers using the Emmett event sourcing framework. This plugin takes Flow specifications and generates GraphQL servers with commands, events, projections, and queries.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
This is a plugin for the Auto Engineer CLI. Install both the CLI and this plugin:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @auto-engineer/cli
|
|
11
|
+
npm install @auto-engineer/server-generator-apollo-emmett
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
|
+
|
|
16
|
+
Add this plugin to your `auto.config.ts`:
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
export default {
|
|
20
|
+
plugins: [
|
|
21
|
+
'@auto-engineer/server-generator-apollo-emmett',
|
|
22
|
+
// ... other plugins
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Commands
|
|
28
|
+
|
|
29
|
+
This plugin provides the following commands:
|
|
30
|
+
|
|
31
|
+
- `generate:server` - Generate a GraphQL server from flow specifications
|
|
32
|
+
|
|
33
|
+
## What does this plugin do?
|
|
34
|
+
|
|
35
|
+
The Emmett Generator transforms high-level flow specifications into event-driven servers. It generates:
|
|
36
|
+
|
|
37
|
+
### Command Handlers
|
|
38
|
+
|
|
39
|
+
- Command validation and business logic stubs
|
|
40
|
+
- Event emission patterns
|
|
41
|
+
- Error handling and domain validation
|
|
42
|
+
- Integration with the Emmett command bus
|
|
43
|
+
|
|
44
|
+
### Event Sourcing Infrastructure
|
|
45
|
+
|
|
46
|
+
- Event store configuration
|
|
47
|
+
- Event versioning and migration support
|
|
48
|
+
- Projection builders for read models
|
|
49
|
+
- Event stream processing
|
|
50
|
+
|
|
51
|
+
### GraphQL API Layer
|
|
52
|
+
|
|
53
|
+
- Type-safe GraphQL schema generation
|
|
54
|
+
- Mutation resolvers for commands
|
|
55
|
+
- Query resolvers for projections
|
|
56
|
+
- Subscription support for real-time updates
|
|
57
|
+
|
|
58
|
+
### Testing Infrastructure
|
|
59
|
+
|
|
60
|
+
- Comprehensive test suites for all generated components
|
|
61
|
+
- Behavioral tests for command handlers
|
|
62
|
+
- Integration tests for the GraphQL API
|
|
63
|
+
- Test data factories and fixtures
|
|
64
|
+
|
|
65
|
+
## Generated Project Structure
|
|
66
|
+
|
|
67
|
+
When you run `auto generate:server`, the plugin creates a complete server project:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
server/
|
|
71
|
+
├── src/
|
|
72
|
+
│ ├── domain/
|
|
73
|
+
│ │ ├── commands/ # Command handlers
|
|
74
|
+
│ │ ├── events/ # Event definitions
|
|
75
|
+
│ │ ├── projections/ # Read model projections
|
|
76
|
+
│ │ └── queries/ # Query handlers
|
|
77
|
+
│ ├── graphql/
|
|
78
|
+
│ │ ├── resolvers/ # GraphQL resolvers
|
|
79
|
+
│ │ └── schema.ts # Generated schema
|
|
80
|
+
│ ├── infrastructure/
|
|
81
|
+
│ │ ├── eventStore.ts # Event store setup
|
|
82
|
+
│ │ └── commandBus.ts # Command bus configuration
|
|
83
|
+
│ └── server.ts # Application entry point
|
|
84
|
+
├── tests/ # Generated test suites
|
|
85
|
+
└── package.json
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Features
|
|
89
|
+
|
|
90
|
+
### Type-Safe Code Generation
|
|
91
|
+
|
|
92
|
+
All generated code is fully typed using TypeScript, ensuring compile-time safety and developer experience.
|
|
93
|
+
|
|
94
|
+
### Event-Driven Architecture
|
|
95
|
+
|
|
96
|
+
Built on Emmett's event sourcing patterns:
|
|
97
|
+
|
|
98
|
+
- Commands represent intent to change state
|
|
99
|
+
- Events capture what actually happened
|
|
100
|
+
- Projections create read models from events
|
|
101
|
+
- Queries serve data to GraphQL clients
|
|
102
|
+
|
|
103
|
+
### Infrastructure
|
|
104
|
+
|
|
105
|
+
Generated servers include:
|
|
106
|
+
|
|
107
|
+
- Error handling and logging
|
|
108
|
+
- Health checks and monitoring endpoints
|
|
109
|
+
- Environment-based configuration
|
|
110
|
+
- Database migration scripts
|
|
111
|
+
|
|
112
|
+
### Templates
|
|
113
|
+
|
|
114
|
+
Uses EJS templating system for code generation:
|
|
115
|
+
|
|
116
|
+
- Command handler templates
|
|
117
|
+
- Event definition templates
|
|
118
|
+
- GraphQL resolver templates
|
|
119
|
+
- Test suite templates
|
|
120
|
+
|
|
121
|
+
## Integration with Flow
|
|
122
|
+
|
|
123
|
+
This plugin is designed to work with `@auto-engineer/flow` specifications:
|
|
124
|
+
|
|
125
|
+
1. Define your business flows using the Flow DSL
|
|
126
|
+
2. Export the flow schema using `auto export:schema`
|
|
127
|
+
3. Generate the server using `auto generate:server`
|
|
128
|
+
4. The generator reads the schema and creates appropriate handlers
|
|
129
|
+
|
|
130
|
+
## Example Workflow
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# 1. Create a flow specification project
|
|
134
|
+
auto create:example
|
|
135
|
+
|
|
136
|
+
# 2. Define your business flows in flows/
|
|
137
|
+
# Edit flows/order-management.flow.ts
|
|
138
|
+
|
|
139
|
+
# 3. Generate the server server
|
|
140
|
+
auto generate:server
|
|
141
|
+
|
|
142
|
+
# 4. The generated server is ready to run:
|
|
143
|
+
cd server
|
|
144
|
+
npm install
|
|
145
|
+
npm run start
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Advanced Features
|
|
149
|
+
|
|
150
|
+
### Custom Templates
|
|
151
|
+
|
|
152
|
+
Override default templates by providing your own EJS files:
|
|
153
|
+
|
|
154
|
+
- Place custom templates in `.auto-engineer/templates/`
|
|
155
|
+
- Templates follow the same structure as built-in ones
|
|
156
|
+
- Supports partial overrides for specific components
|
|
157
|
+
|
|
158
|
+
### Plugin Integration
|
|
159
|
+
|
|
160
|
+
Works with other Auto Engineer plugins:
|
|
161
|
+
|
|
162
|
+
- **@auto-engineer/server-implementer**: AI-powered implementation of generated stubs
|
|
163
|
+
- **@auto-engineer/server-checks**: Validation of generated code
|
|
164
|
+
- **@auto-engineer/frontend-generator-react-graphql**: Frontend generation from server schema
|
|
165
|
+
|
|
166
|
+
### Configuration Options
|
|
167
|
+
|
|
168
|
+
Customize generation behavior through `auto.config.ts`:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
export default {
|
|
172
|
+
plugins: [
|
|
173
|
+
[
|
|
174
|
+
'@auto-engineer/server-generator-apollo-emmett',
|
|
175
|
+
{
|
|
176
|
+
outputDir: './server',
|
|
177
|
+
templateOverrides: './templates',
|
|
178
|
+
generateMigrations: true,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The Emmett Generator bridges the gap between high-level business requirements and server infrastructure, enabling development of scalable, maintainable applications.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-manifest.d.ts","sourceRoot":"","sources":["../src/cli-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAGrE,eAAO,MAAM,YAAY,EAAE,WAK1B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { generateServerManifest } from './commands/generate-server.js';
|
|
2
|
+
export const CLI_MANIFEST = {
|
|
3
|
+
category: '@auto-engineer/server-generator-apollo-emmett',
|
|
4
|
+
commands: {
|
|
5
|
+
'generate:server': generateServerManifest,
|
|
6
|
+
},
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=cli-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-manifest.js","sourceRoot":"","sources":["../src/cli-manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,QAAQ,EAAE,+CAA+C;IACzD,QAAQ,EAAE;QACR,iBAAiB,EAAE,sBAAsB;KAC1C;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CommandExample, EventExample } from '@auto-engineer/flow';
|
|
2
|
+
import { Message, MessageDefinition } from '../types';
|
|
3
|
+
import { ReactGwtSpec } from './messages';
|
|
4
|
+
export declare function extractCommandsFromGwt(gwtSpecs: Array<{
|
|
5
|
+
given?: EventExample[];
|
|
6
|
+
when: CommandExample;
|
|
7
|
+
then: Array<EventExample | {
|
|
8
|
+
errorType: string;
|
|
9
|
+
message?: string;
|
|
10
|
+
}>;
|
|
11
|
+
}>, allMessages: MessageDefinition[]): {
|
|
12
|
+
commands: Message[];
|
|
13
|
+
commandSchemasByName: Record<string, Message>;
|
|
14
|
+
};
|
|
15
|
+
export declare function extractCommandsFromThen(gwtSpecs: ReactGwtSpec[], allMessages: MessageDefinition[]): {
|
|
16
|
+
commands: Message[];
|
|
17
|
+
commandSchemasByName: Record<string, Message>;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoB1C,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC,EACF,WAAW,EAAE,iBAAiB,EAAE,GAC/B;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAiBxE;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,WAAW,EAAE,iBAAiB,EAAE,GAC/B;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CA0BxE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { extractFieldsFromMessage } from './fields.js';
|
|
2
|
+
function createCommandMessage(commandRef, allMessages, source) {
|
|
3
|
+
const fields = extractFieldsFromMessage(commandRef, 'command', allMessages);
|
|
4
|
+
if (fields.length === 0 && source === 'then') {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
type: commandRef,
|
|
9
|
+
fields,
|
|
10
|
+
source,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function extractCommandsFromGwt(gwtSpecs, allMessages) {
|
|
14
|
+
const commandSchemasByName = {};
|
|
15
|
+
const commands = gwtSpecs
|
|
16
|
+
.map((gwt) => {
|
|
17
|
+
const cmd = gwt.when;
|
|
18
|
+
if (!cmd.commandRef)
|
|
19
|
+
return undefined;
|
|
20
|
+
const command = createCommandMessage(cmd.commandRef, allMessages, 'when');
|
|
21
|
+
if (command) {
|
|
22
|
+
commandSchemasByName[cmd.commandRef] = command;
|
|
23
|
+
}
|
|
24
|
+
return command;
|
|
25
|
+
})
|
|
26
|
+
.filter((cmd) => cmd !== undefined);
|
|
27
|
+
return { commands, commandSchemasByName };
|
|
28
|
+
}
|
|
29
|
+
export function extractCommandsFromThen(gwtSpecs, allMessages) {
|
|
30
|
+
const commands = [];
|
|
31
|
+
const commandSchemasByName = {};
|
|
32
|
+
for (const gwt of gwtSpecs) {
|
|
33
|
+
if (!Array.isArray(gwt.then)) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
for (const commandExample of gwt.then) {
|
|
37
|
+
if (!commandExample.commandRef) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const commandRef = commandExample.commandRef;
|
|
41
|
+
if (!(commandRef in commandSchemasByName)) {
|
|
42
|
+
const command = createCommandMessage(commandRef, allMessages, 'then');
|
|
43
|
+
if (command) {
|
|
44
|
+
commands.push(command);
|
|
45
|
+
commandSchemasByName[commandRef] = command;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { commands, commandSchemasByName };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/codegen/extract/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,SAAS,oBAAoB,CAC3B,UAAkB,EAClB,WAAgC,EAChC,MAAuB;IAEvB,MAAM,MAAM,GAAG,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAIE,EACF,WAAgC;IAEhC,MAAM,oBAAoB,GAA4B,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAc,QAAQ;SACjC,GAAG,CAAC,CAAC,GAAG,EAAuB,EAAE;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAEtC,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1E,IAAI,OAAO,EAAE,CAAC;YACZ,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,GAAG,EAAkB,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAEtD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAwB,EACxB,WAAgC;IAEhC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,oBAAoB,GAA4B,EAAE,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,KAAK,MAAM,cAAc,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;YAC7C,IAAI,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;gBACtE,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvB,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sink.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/data-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAQtE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAoC7F"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function resolveStreamId(stream, exampleData) {
|
|
2
|
+
return stream.replace(/\$\{([^}]+)\}/g, (_, key) => String(exampleData?.[key] ?? 'unknown'));
|
|
3
|
+
}
|
|
4
|
+
// eslint-disable-next-line complexity
|
|
5
|
+
export function getStreamFromSink(slice) {
|
|
6
|
+
let streamPattern;
|
|
7
|
+
let streamId;
|
|
8
|
+
const gwtSpecs = slice.type === 'command'
|
|
9
|
+
? slice.server?.gwt
|
|
10
|
+
: slice.type === 'query'
|
|
11
|
+
? slice.server?.gwt
|
|
12
|
+
: slice.type === 'react'
|
|
13
|
+
? slice.server?.gwt
|
|
14
|
+
: [];
|
|
15
|
+
let exampleData = {};
|
|
16
|
+
switch (slice.type) {
|
|
17
|
+
case 'react':
|
|
18
|
+
exampleData = gwtSpecs[0].when?.[0]?.exampleData ?? {};
|
|
19
|
+
break;
|
|
20
|
+
case 'command': {
|
|
21
|
+
const then = gwtSpecs[0]?.then;
|
|
22
|
+
const firstExample = then.find((t) => 'exampleData' in t);
|
|
23
|
+
exampleData = firstExample?.exampleData ?? {};
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case 'query':
|
|
27
|
+
exampleData = gwtSpecs[0]?.given?.[0]?.exampleData ?? {};
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
const sink = (slice.server?.data ?? []).find((item) => item?.destination?.type === 'stream');
|
|
31
|
+
if (sink && sink.destination.type === 'stream' && 'pattern' in sink.destination) {
|
|
32
|
+
streamPattern = sink.destination.pattern;
|
|
33
|
+
if (streamPattern != null) {
|
|
34
|
+
streamId = resolveStreamId(streamPattern, exampleData);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { streamPattern, streamId };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data-sink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-sink.js","sourceRoot":"","sources":["../../../src/codegen/extract/data-sink.ts"],"names":[],"mappings":"AAGA,SAAS,eAAe,CAAC,MAAc,EAAE,WAAoC;IAC3E,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;AACvG,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,IAAI,aAAiC,CAAC;IACtC,IAAI,QAA4B,CAAC;IACjC,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,SAAS;QACtB,CAAC,CAAE,KAAK,CAAC,MAAM,EAAE,GAAwB;QACzC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,CAAC,CAAE,KAAK,CAAC,MAAM,EAAE,GAAsB;YACvC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;gBACtB,CAAC,CAAE,KAAK,CAAC,MAAM,EAAE,GAAsB;gBACvC,CAAC,CAAC,EAAE,CAAC;IACb,IAAI,WAAW,GAA4B,EAAE,CAAC;IAC9C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,WAAW,GAAI,QAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;YAC3E,MAAM;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAI,QAA6B,CAAC,CAAC,CAAC,EAAE,IAAkD,CAAC;YACnG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;YAC/E,WAAW,GAAG,YAAY,EAAE,WAAW,IAAI,EAAE,CAAC;YAC9C,MAAM;QACR,CAAC;QACD,KAAK,OAAO;YACV,WAAW,GAAI,QAA2B,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;YAC7E,MAAM;IACV,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,IAAiB,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,CAE5F,CAAC;IACd,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAChF,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QACzC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,QAAQ,GAAG,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EventExample } from '@auto-engineer/flow';
|
|
2
|
+
import { Message, MessageDefinition } from '../types';
|
|
3
|
+
import { ReactGwtSpec } from './messages';
|
|
4
|
+
export declare function extractEventsFromThen(thenItems: Array<EventExample | {
|
|
5
|
+
errorType: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
}>, allMessages: MessageDefinition[]): Message[];
|
|
8
|
+
export declare function extractEventsFromGiven(givenEvents: EventExample[] | undefined, allMessages: MessageDefinition[]): Message[];
|
|
9
|
+
export declare function extractEventsFromWhen(gwtSpecs: ReactGwtSpec[], allMessages: MessageDefinition[]): Message[];
|
|
10
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY1C,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,KAAK,CAAC,YAAY,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACxE,WAAW,EAAE,iBAAiB,EAAE,GAC/B,OAAO,EAAE,CAOX;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,YAAY,EAAE,GAAG,SAAS,EACvC,WAAW,EAAE,iBAAiB,EAAE,GAC/B,OAAO,EAAE,CAMX;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAO3G"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { extractFieldsFromMessage } from './fields.js';
|
|
2
|
+
function createEventMessage(eventRef, source, allMessages) {
|
|
3
|
+
if (eventRef == null)
|
|
4
|
+
return undefined;
|
|
5
|
+
const fields = extractFieldsFromMessage(eventRef, 'event', allMessages);
|
|
6
|
+
return { type: eventRef, fields, source };
|
|
7
|
+
}
|
|
8
|
+
export function extractEventsFromThen(thenItems, allMessages) {
|
|
9
|
+
return thenItems
|
|
10
|
+
.map((then) => {
|
|
11
|
+
if (!('eventRef' in then))
|
|
12
|
+
return undefined;
|
|
13
|
+
return createEventMessage(then.eventRef, 'then', allMessages);
|
|
14
|
+
})
|
|
15
|
+
.filter((event) => event !== undefined);
|
|
16
|
+
}
|
|
17
|
+
export function extractEventsFromGiven(givenEvents, allMessages) {
|
|
18
|
+
if (!givenEvents)
|
|
19
|
+
return [];
|
|
20
|
+
return givenEvents
|
|
21
|
+
.map((given) => createEventMessage(given.eventRef, 'given', allMessages))
|
|
22
|
+
.filter((event) => event !== undefined);
|
|
23
|
+
}
|
|
24
|
+
export function extractEventsFromWhen(gwtSpecs, allMessages) {
|
|
25
|
+
return gwtSpecs.flatMap((gwt) => {
|
|
26
|
+
if (!Array.isArray(gwt.when)) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
return gwt.when.flatMap((eventExample) => extractEventsFromGiven([eventExample], allMessages));
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/codegen/extract/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGpD,SAAS,kBAAkB,CACzB,QAA4B,EAC5B,MAAiC,EACjC,WAAgC;IAEhC,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAwE,EACxE,WAAgC;IAEhC,OAAO,SAAS;SACb,GAAG,CAAC,CAAC,IAAI,EAAuB,EAAE;QACjC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,WAAuC,EACvC,WAAgC;IAEhC,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAE5B,OAAO,WAAW;SACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SACxE,MAAM,CAAC,CAAC,KAAK,EAAoB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAwB,EAAE,WAAgC;IAC9F,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,EAC1C,WAAW,EAAE,iBAAiB,EAAE,GAC/B,KAAK,EAAE,CAUT"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function extractFieldsFromMessage(messageName, messageType, allMessages) {
|
|
2
|
+
const messageDef = allMessages.find((m) => m.type === messageType && m.name === messageName);
|
|
3
|
+
return (messageDef?.fields?.map((f) => ({
|
|
4
|
+
name: f.name,
|
|
5
|
+
tsType: f.type,
|
|
6
|
+
required: f.required ?? true,
|
|
7
|
+
})) ?? []);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/codegen/extract/fields.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,WAA0C,EAC1C,WAAgC;IAEhC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAE7F,OAAO,CACL,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,IAAI;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;KAC7B,CAAC,CAAC,IAAI,EAAE,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ParsedArg {
|
|
2
|
+
name: string;
|
|
3
|
+
tsType: string;
|
|
4
|
+
graphqlType: string;
|
|
5
|
+
nullable: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ParsedGraphQlQuery {
|
|
8
|
+
queryName: string;
|
|
9
|
+
args: ParsedArg[];
|
|
10
|
+
returnType: string;
|
|
11
|
+
tsReturnType: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function parseGraphQlRequest(request: string): ParsedGraphQlQuery;
|
|
14
|
+
//# sourceMappingURL=graphql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/graphql.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8CD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAsCvE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { parse, print } from 'graphql';
|
|
2
|
+
function getTypeName(typeNode) {
|
|
3
|
+
if (typeNode.kind === 'NamedType') {
|
|
4
|
+
return { graphqlType: typeNode.name.value, nullable: true };
|
|
5
|
+
}
|
|
6
|
+
else if (typeNode.kind === 'NonNullType') {
|
|
7
|
+
const inner = getTypeName(typeNode.type);
|
|
8
|
+
return { ...inner, nullable: false };
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return getTypeName(typeNode.type);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function graphqlToTs(type) {
|
|
15
|
+
switch (type) {
|
|
16
|
+
case 'String':
|
|
17
|
+
return 'string';
|
|
18
|
+
case 'Int':
|
|
19
|
+
case 'Float':
|
|
20
|
+
case 'Number':
|
|
21
|
+
return 'number';
|
|
22
|
+
case 'Boolean':
|
|
23
|
+
return 'boolean';
|
|
24
|
+
case 'Date':
|
|
25
|
+
return 'Date';
|
|
26
|
+
default:
|
|
27
|
+
return type;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function convertJsonAstToSdl(request) {
|
|
31
|
+
// Handle JSON-serialized AST
|
|
32
|
+
if (request.startsWith('{') && request.includes('"kind"')) {
|
|
33
|
+
try {
|
|
34
|
+
const ast = JSON.parse(request);
|
|
35
|
+
if (typeof ast === 'object' && ast !== null && 'kind' in ast && ast.kind === 'Document') {
|
|
36
|
+
// Convert AST to SDL string - cast is safe here as we've validated it's a Document
|
|
37
|
+
return print(ast);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// If parsing fails, assume it's already a GraphQL string
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return request;
|
|
45
|
+
}
|
|
46
|
+
export function parseGraphQlRequest(request) {
|
|
47
|
+
const sdlRequest = convertJsonAstToSdl(request);
|
|
48
|
+
const ast = parse(sdlRequest);
|
|
49
|
+
const op = ast.definitions.find((d) => d.kind === 'OperationDefinition' && d.operation === 'query');
|
|
50
|
+
if (!op)
|
|
51
|
+
throw new Error('No query operation found');
|
|
52
|
+
const queryName = op.name?.value;
|
|
53
|
+
if (queryName == null)
|
|
54
|
+
throw new Error('Query must have a name');
|
|
55
|
+
const args = (op.variableDefinitions ?? []).map((def) => {
|
|
56
|
+
const varName = def.variable.name.value;
|
|
57
|
+
const { graphqlType, nullable } = getTypeName(def.type);
|
|
58
|
+
return {
|
|
59
|
+
name: varName,
|
|
60
|
+
graphqlType,
|
|
61
|
+
tsType: graphqlToTs(graphqlType),
|
|
62
|
+
nullable,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
const field = op.selectionSet.selections[0];
|
|
66
|
+
if (field?.kind !== 'Field' || !field.name.value) {
|
|
67
|
+
throw new Error('Query selection must be a field');
|
|
68
|
+
}
|
|
69
|
+
const baseName = field.name.value;
|
|
70
|
+
const returnType = pascalCase(baseName) + 'View';
|
|
71
|
+
return {
|
|
72
|
+
queryName: baseName,
|
|
73
|
+
args,
|
|
74
|
+
returnType,
|
|
75
|
+
tsReturnType: `${returnType}[]`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function pascalCase(input) {
|
|
79
|
+
return input.replace(/(^\w|_\w)/g, (match) => match.replace('_', '').toUpperCase());
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/codegen/extract/graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gwt.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/gwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,YAAY,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAAE,CAAC,CAiCpH"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export function buildCommandGwtMapping(slice) {
|
|
2
|
+
if (slice.type !== 'command') {
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
const gwtSpecs = slice.server?.gwt ?? [];
|
|
6
|
+
const mapping = {};
|
|
7
|
+
for (const gwt of gwtSpecs) {
|
|
8
|
+
const command = gwt.when?.commandRef;
|
|
9
|
+
if (command) {
|
|
10
|
+
mapping[command] = mapping[command] ?? [];
|
|
11
|
+
mapping[command].push({
|
|
12
|
+
given: gwt.given,
|
|
13
|
+
when: gwt.when,
|
|
14
|
+
then: gwt.then,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const enhancedMapping = {};
|
|
19
|
+
for (const command in mapping) {
|
|
20
|
+
const merged = mergeGwtConditions(mapping[command]);
|
|
21
|
+
const successfulData = findSuccessfulExampleData(merged);
|
|
22
|
+
enhancedMapping[command] = merged.map((gwt) => ({
|
|
23
|
+
...gwt,
|
|
24
|
+
failingFields: findFailingFields(gwt, successfulData),
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
return enhancedMapping;
|
|
28
|
+
}
|
|
29
|
+
function mergeGwtConditions(gwts) {
|
|
30
|
+
const map = new Map();
|
|
31
|
+
for (const gwt of gwts) {
|
|
32
|
+
const key = JSON.stringify(gwt.when.exampleData);
|
|
33
|
+
const existing = map.get(key) ?? [];
|
|
34
|
+
map.set(key, [...existing, gwt]);
|
|
35
|
+
}
|
|
36
|
+
return Array.from(map.values()).map((conditions) => {
|
|
37
|
+
const first = conditions[0];
|
|
38
|
+
const combinedThen = conditions.flatMap((g) => g.then);
|
|
39
|
+
return {
|
|
40
|
+
given: conditions.flatMap((g) => g.given ?? []),
|
|
41
|
+
when: first.when,
|
|
42
|
+
then: combinedThen,
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function findSuccessfulExampleData(gwts) {
|
|
47
|
+
const successful = gwts.find((gwt) => gwt.then.some((t) => typeof t === 'object' && t !== null && 'eventRef' in t));
|
|
48
|
+
return successful?.when.exampleData ?? {};
|
|
49
|
+
}
|
|
50
|
+
function findFailingFields(gwt, successfulData) {
|
|
51
|
+
const hasError = gwt.then.some((t) => typeof t === 'object' && t !== null && 'errorType' in t);
|
|
52
|
+
if (!hasError)
|
|
53
|
+
return [];
|
|
54
|
+
return Object.entries(gwt.when.exampleData)
|
|
55
|
+
.filter(([key, val]) => {
|
|
56
|
+
const successVal = successfulData[key];
|
|
57
|
+
return val === '' && successVal !== '' && successVal !== undefined;
|
|
58
|
+
})
|
|
59
|
+
.map(([key]) => key);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=gwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gwt.js","sourceRoot":"","sources":["../../../src/codegen/extract/gwt.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CAAC,KAAY;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IACzC,MAAM,OAAO,GAAmC,EAAE,CAAC;IAEnD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;gBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAoE,EAAE,CAAC;IAE5F,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAEzD,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9C,GAAG,GAAG;YACN,aAAa,EAAE,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC;SACtD,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAoB;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,YAAY;SACnB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAoB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IACpH,OAAO,UAAU,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAiB,EAAE,cAAuC;IACnF,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC;IAE/F,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QACrB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,KAAK,EAAE,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,SAAS,CAAC;IACrE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/extract/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/extract/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|