@auto-engineer/server-generator-apollo-emmett 0.8.4 → 0.8.6
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 +2 -2
- package/CHANGELOG.md +16 -0
- package/dist/src/codegen/extract/commands.d.ts.map +1 -0
- package/dist/src/codegen/extract/commands.js.map +1 -0
- package/dist/src/codegen/extract/data-sink.d.ts.map +1 -0
- package/dist/{codegen → src/codegen}/extract/data-sink.js +33 -10
- package/dist/src/codegen/extract/data-sink.js.map +1 -0
- package/dist/src/codegen/extract/events.d.ts.map +1 -0
- package/dist/src/codegen/extract/events.js.map +1 -0
- package/dist/src/codegen/extract/fields.d.ts.map +1 -0
- package/dist/src/codegen/extract/fields.js.map +1 -0
- package/dist/src/codegen/extract/graphql.d.ts.map +1 -0
- package/dist/src/codegen/extract/graphql.js.map +1 -0
- package/dist/src/codegen/extract/gwt.d.ts.map +1 -0
- package/dist/src/codegen/extract/gwt.js.map +1 -0
- package/dist/src/codegen/extract/index.d.ts.map +1 -0
- package/dist/src/codegen/extract/index.js.map +1 -0
- package/dist/src/codegen/extract/messages.d.ts.map +1 -0
- package/dist/src/codegen/extract/messages.js.map +1 -0
- package/dist/src/codegen/extract/projection.d.ts.map +1 -0
- package/dist/src/codegen/extract/projection.js.map +1 -0
- package/dist/src/codegen/extract/query.d.ts.map +1 -0
- package/dist/src/codegen/extract/query.js.map +1 -0
- package/dist/src/codegen/extract/states.d.ts.map +1 -0
- package/dist/src/codegen/extract/states.js.map +1 -0
- package/dist/src/codegen/scaffoldFromSchema.d.ts +9 -0
- package/dist/src/codegen/scaffoldFromSchema.d.ts.map +1 -0
- package/dist/src/codegen/scaffoldFromSchema.integration.specs.d.ts.map +1 -0
- package/dist/src/codegen/scaffoldFromSchema.integration.specs.js.map +1 -0
- package/dist/{codegen → src/codegen}/scaffoldFromSchema.js +54 -18
- package/dist/src/codegen/scaffoldFromSchema.js.map +1 -0
- package/dist/{codegen → src/codegen}/templates/command/commands.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/command/decide.specs.specs.ts +3 -3
- package/dist/{codegen → src/codegen}/templates/command/decide.specs.ts +1 -5
- package/dist/{codegen → src/codegen}/templates/command/events.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/command/evolve.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/command/handle.specs.ts +1 -3
- package/dist/src/codegen/templates/command/mutation.resolver.specs.ts +363 -0
- package/dist/src/codegen/templates/command/mutation.resolver.ts.ejs +99 -0
- package/dist/{codegen → src/codegen}/templates/command/register.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/command/state.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/query/projection.specs.specs..ts +3 -3
- package/dist/{codegen → src/codegen}/templates/query/projection.specs.ts +5 -9
- package/dist/{codegen → src/codegen}/templates/query/query.resolver.specs.ts +194 -23
- package/dist/src/codegen/templates/query/query.resolver.ts.ejs +137 -0
- package/dist/{codegen → src/codegen}/templates/query/state.specs.ts +1 -2
- package/dist/{codegen → src/codegen}/templates/react/react.specs.specs.ts +2 -2
- package/dist/{codegen → src/codegen}/templates/react/react.specs.ts +3 -3
- package/dist/{codegen → src/codegen}/templates/react/register.specs.ts +3 -3
- package/dist/src/codegen/test-data/specVariant1.d.ts +4 -0
- package/dist/src/codegen/test-data/specVariant1.d.ts.map +1 -0
- package/dist/{codegen → src/codegen}/test-data/specVariant1.js +4 -2
- package/dist/src/codegen/test-data/specVariant1.js.map +1 -0
- package/dist/src/codegen/types.d.ts.map +1 -0
- package/dist/{codegen → src/codegen}/types.js.map +1 -1
- package/dist/src/codegen/utils/path.d.ts.map +1 -0
- package/dist/src/codegen/utils/path.js.map +1 -0
- package/dist/src/commands/generate-server.d.ts.map +1 -0
- package/dist/{commands → src/commands}/generate-server.js +34 -24
- package/dist/src/commands/generate-server.js.map +1 -0
- package/dist/src/domain/shared/ReadModel.d.ts.map +1 -0
- package/dist/src/domain/shared/ReadModel.js.map +1 -0
- package/dist/src/domain/shared/index.d.ts.map +1 -0
- package/dist/src/domain/shared/index.js.map +1 -0
- package/dist/src/domain/shared/reactorSpecification.d.ts.map +1 -0
- package/dist/src/domain/shared/reactorSpecification.js.map +1 -0
- package/dist/src/domain/shared/sendCommand.d.ts.map +1 -0
- package/dist/src/domain/shared/sendCommand.js.map +1 -0
- package/dist/src/domain/shared/types.d.ts.map +1 -0
- package/dist/src/domain/shared/types.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/loadProjections.d.ts.map +1 -0
- package/dist/src/utils/loadProjections.js.map +1 -0
- package/dist/src/utils/loadRegisterFiles.d.ts.map +1 -0
- package/dist/src/utils/loadRegisterFiles.js.map +1 -0
- package/dist/src/utils/loadResolvers.d.ts.map +1 -0
- package/dist/src/utils/loadResolvers.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -10
- package/src/codegen/extract/data-sink.ts +49 -23
- package/src/codegen/scaffoldFromSchema.ts +52 -20
- package/src/codegen/templates/command/commands.specs.ts +1 -2
- package/src/codegen/templates/command/decide.specs.specs.ts +3 -3
- package/src/codegen/templates/command/decide.specs.ts +1 -5
- package/src/codegen/templates/command/events.specs.ts +1 -2
- package/src/codegen/templates/command/evolve.specs.ts +1 -2
- package/src/codegen/templates/command/handle.specs.ts +1 -3
- package/src/codegen/templates/command/mutation.resolver.specs.ts +247 -8
- package/src/codegen/templates/command/mutation.resolver.ts.ejs +86 -12
- package/src/codegen/templates/command/register.specs.ts +1 -2
- package/src/codegen/templates/command/state.specs.ts +1 -2
- package/src/codegen/templates/query/projection.specs.specs..ts +3 -3
- package/src/codegen/templates/query/projection.specs.ts +5 -9
- package/src/codegen/templates/query/query.resolver.specs.ts +194 -23
- package/src/codegen/templates/query/query.resolver.ts.ejs +84 -45
- package/src/codegen/templates/query/state.specs.ts +1 -2
- package/src/codegen/templates/react/react.specs.specs.ts +2 -2
- package/src/codegen/templates/react/react.specs.ts +3 -3
- package/src/codegen/templates/react/register.specs.ts +3 -3
- package/src/codegen/test-data/specVariant1.ts +5 -3
- package/src/commands/generate-server.ts +38 -30
- package/tsconfig.json +3 -2
- package/tsconfig.test.json +9 -0
- package/.turbo/turbo-test.log +0 -14
- package/.turbo/turbo-type-check.log +0 -4
- package/dist/codegen/extract/commands.d.ts.map +0 -1
- package/dist/codegen/extract/commands.js.map +0 -1
- package/dist/codegen/extract/data-sink.d.ts.map +0 -1
- package/dist/codegen/extract/data-sink.js.map +0 -1
- package/dist/codegen/extract/events.d.ts.map +0 -1
- package/dist/codegen/extract/events.js.map +0 -1
- package/dist/codegen/extract/fields.d.ts.map +0 -1
- package/dist/codegen/extract/fields.js.map +0 -1
- package/dist/codegen/extract/graphql.d.ts.map +0 -1
- package/dist/codegen/extract/graphql.js.map +0 -1
- package/dist/codegen/extract/gwt.d.ts.map +0 -1
- package/dist/codegen/extract/gwt.js.map +0 -1
- package/dist/codegen/extract/index.d.ts.map +0 -1
- package/dist/codegen/extract/index.js.map +0 -1
- package/dist/codegen/extract/messages.d.ts.map +0 -1
- package/dist/codegen/extract/messages.js.map +0 -1
- package/dist/codegen/extract/projection.d.ts.map +0 -1
- package/dist/codegen/extract/projection.js.map +0 -1
- package/dist/codegen/extract/query.d.ts.map +0 -1
- package/dist/codegen/extract/query.js.map +0 -1
- package/dist/codegen/extract/states.d.ts.map +0 -1
- package/dist/codegen/extract/states.js.map +0 -1
- package/dist/codegen/scaffoldFromSchema.d.ts +0 -9
- package/dist/codegen/scaffoldFromSchema.d.ts.map +0 -1
- package/dist/codegen/scaffoldFromSchema.integration.specs.d.ts.map +0 -1
- package/dist/codegen/scaffoldFromSchema.integration.specs.js.map +0 -1
- package/dist/codegen/scaffoldFromSchema.js.map +0 -1
- package/dist/codegen/templates/command/mutation.resolver.specs.ts +0 -124
- package/dist/codegen/templates/command/mutation.resolver.ts.ejs +0 -25
- package/dist/codegen/templates/query/query.resolver.ts.ejs +0 -98
- package/dist/codegen/test-data/specVariant1.d.ts +0 -4
- package/dist/codegen/test-data/specVariant1.d.ts.map +0 -1
- package/dist/codegen/test-data/specVariant1.js.map +0 -1
- package/dist/codegen/types.d.ts.map +0 -1
- package/dist/codegen/utils/path.d.ts.map +0 -1
- package/dist/codegen/utils/path.js.map +0 -1
- package/dist/commands/generate-server.d.ts.map +0 -1
- package/dist/commands/generate-server.js.map +0 -1
- package/dist/domain/shared/ReadModel.d.ts.map +0 -1
- package/dist/domain/shared/ReadModel.js.map +0 -1
- package/dist/domain/shared/index.d.ts.map +0 -1
- package/dist/domain/shared/index.js.map +0 -1
- package/dist/domain/shared/reactorSpecification.d.ts.map +0 -1
- package/dist/domain/shared/reactorSpecification.js.map +0 -1
- package/dist/domain/shared/sendCommand.d.ts.map +0 -1
- package/dist/domain/shared/sendCommand.js.map +0 -1
- package/dist/domain/shared/types.d.ts.map +0 -1
- package/dist/domain/shared/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/loadProjections.d.ts.map +0 -1
- package/dist/utils/loadProjections.js.map +0 -1
- package/dist/utils/loadRegisterFiles.d.ts.map +0 -1
- package/dist/utils/loadRegisterFiles.js.map +0 -1
- package/dist/utils/loadResolvers.d.ts.map +0 -1
- package/dist/utils/loadResolvers.js.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
- /package/dist/{codegen → src/codegen}/extract/commands.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/commands.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/data-sink.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/events.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/events.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/fields.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/fields.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/graphql.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/graphql.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/gwt.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/gwt.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/index.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/index.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/messages.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/messages.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/projection.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/projection.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/query.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/query.js +0 -0
- /package/dist/{codegen → src/codegen}/extract/states.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/extract/states.js +0 -0
- /package/dist/{codegen → src/codegen}/scaffoldFromSchema.integration.specs.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/scaffoldFromSchema.integration.specs.js +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/commands.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/decide.specs.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/decide.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/events.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/evolve.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/handle.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/register.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/command/state.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/query/projection.specs.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/query/projection.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/query/state.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/react/react.specs.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/react/react.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/templates/react/register.ts.ejs +0 -0
- /package/dist/{codegen → src/codegen}/types.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/types.js +0 -0
- /package/dist/{codegen → src/codegen}/utils/path.d.ts +0 -0
- /package/dist/{codegen → src/codegen}/utils/path.js +0 -0
- /package/dist/{commands → src/commands}/generate-server.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/ReadModel.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/ReadModel.js +0 -0
- /package/dist/{domain → src/domain}/shared/ReadModel.ts +0 -0
- /package/dist/{domain → src/domain}/shared/index.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/index.js +0 -0
- /package/dist/{domain → src/domain}/shared/index.ts +0 -0
- /package/dist/{domain → src/domain}/shared/reactorSpecification.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/reactorSpecification.js +0 -0
- /package/dist/{domain → src/domain}/shared/reactorSpecification.ts +0 -0
- /package/dist/{domain → src/domain}/shared/sendCommand.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/sendCommand.js +0 -0
- /package/dist/{domain → src/domain}/shared/sendCommand.ts +0 -0
- /package/dist/{domain → src/domain}/shared/types.d.ts +0 -0
- /package/dist/{domain → src/domain}/shared/types.js +0 -0
- /package/dist/{domain → src/domain}/shared/types.ts +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{server.d.ts → src/server.d.ts} +0 -0
- /package/dist/{server.js → src/server.js} +0 -0
- /package/dist/{server.ts → src/server.ts} +0 -0
- /package/dist/{utils → src/utils}/index.d.ts +0 -0
- /package/dist/{utils → src/utils}/index.js +0 -0
- /package/dist/{utils → src/utils}/index.ts +0 -0
- /package/dist/{utils → src/utils}/loadProjections.d.ts +0 -0
- /package/dist/{utils → src/utils}/loadProjections.js +0 -0
- /package/dist/{utils → src/utils}/loadProjections.ts +0 -0
- /package/dist/{utils → src/utils}/loadRegisterFiles.d.ts +0 -0
- /package/dist/{utils → src/utils}/loadRegisterFiles.js +0 -0
- /package/dist/{utils → src/utils}/loadRegisterFiles.ts +0 -0
- /package/dist/{utils → src/utils}/loadResolvers.d.ts +0 -0
- /package/dist/{utils → src/utils}/loadResolvers.js +0 -0
- /package/dist/{utils → src/utils}/loadResolvers.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { generateScaffoldFilePlans } from '../../scaffoldFromSchema';
|
|
3
|
-
import {
|
|
3
|
+
import { Model as SpecsSchema } from '@auto-engineer/flow';
|
|
4
4
|
|
|
5
5
|
describe('query.resolver.ts.ejs', () => {
|
|
6
6
|
it('should generate a valid query resolver from request field', async () => {
|
|
@@ -26,7 +26,6 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
26
26
|
`,
|
|
27
27
|
client: {
|
|
28
28
|
description: '',
|
|
29
|
-
specs: [],
|
|
30
29
|
},
|
|
31
30
|
server: {
|
|
32
31
|
description: '',
|
|
@@ -79,13 +78,13 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
79
78
|
@Field(() => String)
|
|
80
79
|
title!: string;
|
|
81
80
|
|
|
82
|
-
@Field(() =>
|
|
81
|
+
@Field(() => Float)
|
|
83
82
|
pricePerNight!: number;
|
|
84
83
|
|
|
85
84
|
@Field(() => String)
|
|
86
85
|
location!: string;
|
|
87
86
|
|
|
88
|
-
@Field(() =>
|
|
87
|
+
@Field(() => Float)
|
|
89
88
|
maxGuests!: number;
|
|
90
89
|
|
|
91
90
|
[key: string]: unknown;
|
|
@@ -97,20 +96,19 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
97
96
|
async searchProperties(
|
|
98
97
|
@Ctx() ctx: GraphQLContext,
|
|
99
98
|
@Arg('location', () => String, { nullable: true }) location?: string,
|
|
100
|
-
@Arg('maxPrice', () =>
|
|
101
|
-
@Arg('minGuests', () =>
|
|
99
|
+
@Arg('maxPrice', () => Float, { nullable: true }) maxPrice?: number,
|
|
100
|
+
@Arg('minGuests', () => Float, { nullable: true }) minGuests?: number,
|
|
102
101
|
): Promise<AvailableListings[]> {
|
|
103
102
|
const model = new ReadModel<AvailableListings>(ctx.eventStore, 'AvailablePropertiesProjection');
|
|
104
103
|
|
|
105
104
|
// ## IMPLEMENTATION INSTRUCTIONS ##
|
|
106
105
|
// You can query the projection using the ReadModel API:
|
|
107
|
-
//
|
|
108
106
|
// - model.getAll() — fetch all documents
|
|
109
107
|
// - model.getById(id) — fetch a single document by ID (default key: 'id')
|
|
110
108
|
// - model.find(filterFn) — filter documents using a predicate
|
|
111
109
|
// - model.first(filterFn) — fetch the first document matching a predicate
|
|
112
110
|
//
|
|
113
|
-
// Example below uses
|
|
111
|
+
// Example below uses \\\`.find()\\\` to filter
|
|
114
112
|
// change the logic for the query as needed to meet the requirements for the current slice.
|
|
115
113
|
|
|
116
114
|
return model.find((item) => {
|
|
@@ -150,7 +148,7 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
150
148
|
}
|
|
151
149
|
}
|
|
152
150
|
`,
|
|
153
|
-
client: { description: ''
|
|
151
|
+
client: { description: '' },
|
|
154
152
|
server: {
|
|
155
153
|
description: '',
|
|
156
154
|
data: [
|
|
@@ -195,17 +193,6 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
195
193
|
"import { Query, Resolver, Arg, Ctx, ObjectType, Field, ID } from 'type-graphql';
|
|
196
194
|
import { type GraphQLContext, ReadModel } from '../../../shared';
|
|
197
195
|
|
|
198
|
-
@ObjectType()
|
|
199
|
-
export class SuggestedItems {
|
|
200
|
-
@Field(() => String)
|
|
201
|
-
sessionId!: string;
|
|
202
|
-
|
|
203
|
-
@Field(() => [SuggestedItemsItems])
|
|
204
|
-
items!: SuggestedItemsItems[];
|
|
205
|
-
|
|
206
|
-
[key: string]: unknown;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
196
|
@ObjectType()
|
|
210
197
|
export class SuggestedItemsItems {
|
|
211
198
|
@Field(() => String)
|
|
@@ -214,13 +201,24 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
214
201
|
@Field(() => String)
|
|
215
202
|
name!: string;
|
|
216
203
|
|
|
217
|
-
@Field(() =>
|
|
204
|
+
@Field(() => Float)
|
|
218
205
|
quantity!: number;
|
|
219
206
|
|
|
220
207
|
@Field(() => String)
|
|
221
208
|
reason!: string;
|
|
222
209
|
}
|
|
223
210
|
|
|
211
|
+
@ObjectType()
|
|
212
|
+
export class SuggestedItems {
|
|
213
|
+
@Field(() => String)
|
|
214
|
+
sessionId!: string;
|
|
215
|
+
|
|
216
|
+
@Field(() => [SuggestedItemsItems])
|
|
217
|
+
items!: SuggestedItemsItems[];
|
|
218
|
+
|
|
219
|
+
[key: string]: unknown;
|
|
220
|
+
}
|
|
221
|
+
|
|
224
222
|
@Resolver()
|
|
225
223
|
export class ViewsSuggestedItemsQueryResolver {
|
|
226
224
|
@Query(() => [SuggestedItems])
|
|
@@ -232,13 +230,12 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
232
230
|
|
|
233
231
|
// ## IMPLEMENTATION INSTRUCTIONS ##
|
|
234
232
|
// You can query the projection using the ReadModel API:
|
|
235
|
-
//
|
|
236
233
|
// - model.getAll() — fetch all documents
|
|
237
234
|
// - model.getById(id) — fetch a single document by ID (default key: 'id')
|
|
238
235
|
// - model.find(filterFn) — filter documents using a predicate
|
|
239
236
|
// - model.first(filterFn) — fetch the first document matching a predicate
|
|
240
237
|
//
|
|
241
|
-
// Example below uses
|
|
238
|
+
// Example below uses \\\`.find()\\\` to filter
|
|
242
239
|
// change the logic for the query as needed to meet the requirements for the current slice.
|
|
243
240
|
|
|
244
241
|
return model.find((item) => {
|
|
@@ -251,4 +248,178 @@ describe('query.resolver.ts.ejs', () => {
|
|
|
251
248
|
"
|
|
252
249
|
`);
|
|
253
250
|
});
|
|
251
|
+
it('should generate the query resolver for "views the questionnaire"', async () => {
|
|
252
|
+
const spec: SpecsSchema = {
|
|
253
|
+
variant: 'specs',
|
|
254
|
+
flows: [
|
|
255
|
+
{
|
|
256
|
+
name: 'Questionnaires',
|
|
257
|
+
slices: [
|
|
258
|
+
{
|
|
259
|
+
name: 'views the questionnaire',
|
|
260
|
+
type: 'query',
|
|
261
|
+
client: {
|
|
262
|
+
description: '',
|
|
263
|
+
specs: {
|
|
264
|
+
name: '',
|
|
265
|
+
rules: [
|
|
266
|
+
'focus on the current question based on the progress state',
|
|
267
|
+
'display the list of answered questions',
|
|
268
|
+
'display the list of remaining questions',
|
|
269
|
+
'show a progress indicator that is always visible as the user scrolls',
|
|
270
|
+
],
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
request:
|
|
274
|
+
'query QuestionnaireProgress($participantId: ID!) {\n questionnaireProgress(participantId: $participantId) {\n questionnaireId\n participantId\n status\n currentQuestionId\n remainingQuestions\n answers {\n questionId\n value\n }\n }\n}',
|
|
275
|
+
server: {
|
|
276
|
+
description: '',
|
|
277
|
+
data: [
|
|
278
|
+
{
|
|
279
|
+
target: { type: 'State', name: 'QuestionnaireProgress' },
|
|
280
|
+
origin: { type: 'projection', name: 'Questionnaires', idField: 'questionnaire-participantId' },
|
|
281
|
+
},
|
|
282
|
+
],
|
|
283
|
+
specs: {
|
|
284
|
+
name: '',
|
|
285
|
+
rules: [
|
|
286
|
+
{
|
|
287
|
+
description: 'questionnaires show current progress',
|
|
288
|
+
examples: [
|
|
289
|
+
{
|
|
290
|
+
description: 'a question has already been answered',
|
|
291
|
+
given: [
|
|
292
|
+
{
|
|
293
|
+
eventRef: 'QuestionAnswered',
|
|
294
|
+
exampleData: {
|
|
295
|
+
questionnaireId: 'q-001',
|
|
296
|
+
participantId: 'participant-abc',
|
|
297
|
+
link: 'https://app.example.com/q/q-001?participant=participant-abc',
|
|
298
|
+
sentAt: '2030-01-01T09:00:00.000Z',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
eventRef: 'QuestionAnswered',
|
|
303
|
+
exampleData: {
|
|
304
|
+
questionnaireId: 'q-001',
|
|
305
|
+
participantId: 'participant-abc',
|
|
306
|
+
questionId: 'q1',
|
|
307
|
+
answer: 'Yes',
|
|
308
|
+
savedAt: '2030-01-01T09:05:00.000Z',
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
],
|
|
312
|
+
when: { exampleData: {}, eventRef: 'QuestionnaireLinkSent' },
|
|
313
|
+
then: [
|
|
314
|
+
{
|
|
315
|
+
stateRef: 'QuestionnaireProgress',
|
|
316
|
+
exampleData: {
|
|
317
|
+
questionnaireId: 'q-001',
|
|
318
|
+
participantId: 'participant-abc',
|
|
319
|
+
status: 'in_progress',
|
|
320
|
+
currentQuestionId: 'q2',
|
|
321
|
+
remainingQuestions: ['q2', 'q3'],
|
|
322
|
+
answers: [{ questionId: 'q1', value: 'Yes' }],
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
],
|
|
326
|
+
},
|
|
327
|
+
],
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
],
|
|
334
|
+
},
|
|
335
|
+
],
|
|
336
|
+
messages: [
|
|
337
|
+
{
|
|
338
|
+
type: 'state',
|
|
339
|
+
name: 'QuestionnaireProgress',
|
|
340
|
+
fields: [
|
|
341
|
+
{ name: 'questionnaireId', type: 'string', required: true },
|
|
342
|
+
{ name: 'participantId', type: 'string', required: true },
|
|
343
|
+
{ name: 'status', type: '"in_progress" | "ready_to_submit" | "submitted"', required: true },
|
|
344
|
+
{ name: 'currentQuestionId', type: 'string | null', required: true },
|
|
345
|
+
{ name: 'remainingQuestions', type: 'Array<string>', required: true },
|
|
346
|
+
{ name: 'answers', type: 'Array<{ questionId: string; value: unknown }>', required: true },
|
|
347
|
+
],
|
|
348
|
+
metadata: { version: 1 },
|
|
349
|
+
},
|
|
350
|
+
],
|
|
351
|
+
integrations: [],
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
const plans = await generateScaffoldFilePlans(spec.flows, spec.messages, undefined, 'src/domain/flows');
|
|
355
|
+
const queryFile = plans.find(
|
|
356
|
+
(p) => p.outputPath.endsWith('query.resolver.ts') && p.contents.includes('ViewsTheQuestionnaireQueryResolver'),
|
|
357
|
+
);
|
|
358
|
+
|
|
359
|
+
expect(queryFile?.contents).toMatchInlineSnapshot(`
|
|
360
|
+
"import { Query, Resolver, Arg, Ctx, ObjectType, Field, ID } from 'type-graphql';
|
|
361
|
+
import { GraphQLJSON } from 'graphql-type-json';
|
|
362
|
+
import { type GraphQLContext, ReadModel } from '../../../shared';
|
|
363
|
+
|
|
364
|
+
@ObjectType()
|
|
365
|
+
export class QuestionnaireProgressAnswers {
|
|
366
|
+
@Field(() => String)
|
|
367
|
+
questionId!: string;
|
|
368
|
+
|
|
369
|
+
@Field(() => GraphQLJSON)
|
|
370
|
+
value!: unknown;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
@ObjectType()
|
|
374
|
+
export class QuestionnaireProgress {
|
|
375
|
+
@Field(() => String)
|
|
376
|
+
questionnaireId!: string;
|
|
377
|
+
|
|
378
|
+
@Field(() => String)
|
|
379
|
+
participantId!: string;
|
|
380
|
+
|
|
381
|
+
@Field(() => String)
|
|
382
|
+
status!: 'in_progress' | 'ready_to_submit' | 'submitted';
|
|
383
|
+
|
|
384
|
+
@Field(() => String, { nullable: true })
|
|
385
|
+
currentQuestionId?: string | null;
|
|
386
|
+
|
|
387
|
+
@Field(() => [String])
|
|
388
|
+
remainingQuestions!: string[];
|
|
389
|
+
|
|
390
|
+
@Field(() => [QuestionnaireProgressAnswers])
|
|
391
|
+
answers!: QuestionnaireProgressAnswers[];
|
|
392
|
+
|
|
393
|
+
[key: string]: unknown;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
@Resolver()
|
|
397
|
+
export class ViewsTheQuestionnaireQueryResolver {
|
|
398
|
+
@Query(() => [QuestionnaireProgress])
|
|
399
|
+
async questionnaireProgress(
|
|
400
|
+
@Ctx() ctx: GraphQLContext,
|
|
401
|
+
@Arg('participantId', () => ID, { nullable: true }) participantId?: string,
|
|
402
|
+
): Promise<QuestionnaireProgress[]> {
|
|
403
|
+
const model = new ReadModel<QuestionnaireProgress>(ctx.eventStore, 'Questionnaires');
|
|
404
|
+
|
|
405
|
+
// ## IMPLEMENTATION INSTRUCTIONS ##
|
|
406
|
+
// You can query the projection using the ReadModel API:
|
|
407
|
+
// - model.getAll() — fetch all documents
|
|
408
|
+
// - model.getById(id) — fetch a single document by ID (default key: 'id')
|
|
409
|
+
// - model.find(filterFn) — filter documents using a predicate
|
|
410
|
+
// - model.first(filterFn) — fetch the first document matching a predicate
|
|
411
|
+
//
|
|
412
|
+
// Example below uses \\\`.find()\\\` to filter
|
|
413
|
+
// change the logic for the query as needed to meet the requirements for the current slice.
|
|
414
|
+
|
|
415
|
+
return model.find((item) => {
|
|
416
|
+
if (participantId !== undefined && item.participantId !== participantId) return false;
|
|
417
|
+
|
|
418
|
+
return true;
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
"
|
|
423
|
+
`);
|
|
424
|
+
});
|
|
254
425
|
});
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<%
|
|
2
|
+
const target = slice?.server?.data?.[0]?.target;
|
|
3
|
+
const projection = slice?.server?.data?.[0]?.origin;
|
|
4
|
+
const queryName = parsedRequest?.queryName ?? camelCase(sliceName);
|
|
5
|
+
const viewType = target?.name ? pascalCase(target.name) : 'UnknownView';
|
|
6
|
+
const projectionType = projection?.name ? pascalCase(projection.name) : 'UnknownProjection';
|
|
7
|
+
const message = messages?.find(m => m.name === viewType);
|
|
8
|
+
const resolverClassName = `${pascalCase(slice.name)}QueryResolver`;
|
|
9
|
+
const usesID = parsedRequest?.args?.some(arg => graphqlType(arg.tsType) === 'ID');
|
|
10
|
+
|
|
11
|
+
function isInlineObject(ts) {
|
|
12
|
+
return /^\{[\s\S]*\}$/.test((ts ?? '').trim());
|
|
13
|
+
}
|
|
14
|
+
function isInlineObjectArray(ts) {
|
|
15
|
+
const t = (ts ?? '').trim();
|
|
16
|
+
return /^Array<\{[\s\S]*\}>$/.test(t) || /^\{[\s\S]*\}\[\]$/.test(t);
|
|
17
|
+
}
|
|
18
|
+
function baseTs(ts) {
|
|
19
|
+
return (ts ?? 'string').replace(/\s*\|\s*null\b/g, '').trim();
|
|
20
|
+
}
|
|
21
|
+
function fieldUsesDate(ts) {
|
|
22
|
+
const b = baseTs(ts);
|
|
23
|
+
if (b === 'Date') return true;
|
|
24
|
+
if (isInlineObject(b) || isInlineObjectArray(b)) return /:\s*Date\b/.test(b);
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
function fieldUsesJSON(ts) {
|
|
28
|
+
const b = baseTs(ts);
|
|
29
|
+
if (b === 'unknown' || b === 'any' || b === 'object') return true;
|
|
30
|
+
if (isInlineObject(b) || isInlineObjectArray(b)) return /:\s*(unknown|any|object)\b/.test(b);
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const messageFields = message?.fields ?? [];
|
|
35
|
+
const usesDate = messageFields.some(f => fieldUsesDate(f.type)) ||
|
|
36
|
+
(parsedRequest?.args ?? []).some(a => baseTs(a.tsType) === 'Date');
|
|
37
|
+
const usesJSON = messageFields.some(f => fieldUsesJSON(f.type));
|
|
38
|
+
|
|
39
|
+
// Collect embedded types up-front so we can emit them before the parent
|
|
40
|
+
const embeddedTypes = [];
|
|
41
|
+
for (const field of messageFields) {
|
|
42
|
+
const tsType = field.type ?? 'string';
|
|
43
|
+
if (isInlineObjectArray(tsType) || isInlineObject(tsType)) {
|
|
44
|
+
embeddedTypes.push({
|
|
45
|
+
typeName: `${viewType}${pascalCase(field.name)}`,
|
|
46
|
+
tsType,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
%>
|
|
51
|
+
import { Query, Resolver, Arg, Ctx, ObjectType, Field<% if (usesID) { %>, ID<% } %><% if (usesDate) { %>, GraphQLISODateTime<% } %> } from 'type-graphql';
|
|
52
|
+
<% if (usesJSON) { %>import { GraphQLJSON } from 'graphql-type-json';
|
|
53
|
+
<% } %>import { type GraphQLContext, ReadModel } from '../../../shared';
|
|
54
|
+
|
|
55
|
+
<% // Emit embedded types FIRST — this matches your snapshot order
|
|
56
|
+
for (const { typeName, tsType } of embeddedTypes) {
|
|
57
|
+
// Extract inner "{ ... }" whether Array<{...}> or "{...}[]"
|
|
58
|
+
const inner = tsType.trim().startsWith('Array<')
|
|
59
|
+
? tsType.trim().replace(/^Array<\{/, '{').replace(/}>$/, '}')
|
|
60
|
+
: tsType.trim().replace(/\[\]$/, '');
|
|
61
|
+
const match = inner.match(/^\{([\s\S]*)\}$/);
|
|
62
|
+
const body = match ? match[1] : '';
|
|
63
|
+
const rawFields = body.split(/[,;]\s*/).filter(Boolean);
|
|
64
|
+
const parsedFields = rawFields.map(f => {
|
|
65
|
+
const parts = f.split(':');
|
|
66
|
+
const name = parts[0]?.trim();
|
|
67
|
+
const type = parts.slice(1).join(':').trim();
|
|
68
|
+
if (!name || !type) return null;
|
|
69
|
+
return { name, tsType: type, gqlType: graphqlType(type), nullable: isNullable(type) };
|
|
70
|
+
}).filter(Boolean);
|
|
71
|
+
%>
|
|
72
|
+
@ObjectType()
|
|
73
|
+
export class <%= typeName %> {
|
|
74
|
+
<% for (const f of parsedFields) { %>
|
|
75
|
+
@Field(() => <%= f.gqlType %><%= f.nullable ? ', { nullable: true }' : '' %>)
|
|
76
|
+
<%= f.name %><%= f.nullable ? '?' : '!' %>: <%= toTsFieldType(f.tsType) %>;
|
|
77
|
+
<% } %>
|
|
78
|
+
}
|
|
79
|
+
<% } %>
|
|
80
|
+
|
|
81
|
+
@ObjectType()
|
|
82
|
+
export class <%= viewType %> {
|
|
83
|
+
<% if (messageFields.length) {
|
|
84
|
+
for (const field of messageFields) {
|
|
85
|
+
const tsType = field.type ?? 'string';
|
|
86
|
+
const gqlType = graphqlType(tsType);
|
|
87
|
+
const typeName = `${viewType}${pascalCase(field.name)}`;
|
|
88
|
+
%>
|
|
89
|
+
<% if (isInlineObjectArray(tsType)) { %>
|
|
90
|
+
@Field(() => [<%= typeName %>])
|
|
91
|
+
<%= field.name %>!: <%= typeName %>[];
|
|
92
|
+
<% } else if (isInlineObject(tsType)) { %>
|
|
93
|
+
@Field(() => <%= typeName %>)
|
|
94
|
+
<%= field.name %>!: <%= typeName %>;
|
|
95
|
+
<% } else { %>
|
|
96
|
+
@Field(() => <%= gqlType %><%= isNullable(tsType) ? ', { nullable: true }' : '' %>)
|
|
97
|
+
<%= field.name %><%= isNullable(tsType) ? '?' : '!' %>: <%= toTsFieldType(tsType) %>;
|
|
98
|
+
<% } } %>
|
|
99
|
+
[key: string]: unknown;
|
|
100
|
+
<% } else { %>
|
|
101
|
+
[key: string]: unknown;
|
|
102
|
+
<% } %>
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@Resolver()
|
|
106
|
+
export class <%= resolverClassName %> {
|
|
107
|
+
@Query(() => [<%= viewType %>])
|
|
108
|
+
async <%= queryName %>(
|
|
109
|
+
@Ctx() ctx: GraphQLContext<% if (parsedRequest?.args?.length) { %>,
|
|
110
|
+
<% for (let i = 0; i < parsedRequest.args.length; i++) {
|
|
111
|
+
const arg = parsedRequest.args[i];
|
|
112
|
+
const gqlType = graphqlType(arg.tsType);
|
|
113
|
+
const tsType = arg.tsType === 'ID' ? 'string' : arg.tsType;
|
|
114
|
+
%> @Arg('<%= arg.name %>', () => <%= gqlType %>, { nullable: true }) <%= arg.name %>?: <%= tsType %><%= i < parsedRequest.args.length - 1 ? ',' : '' %>
|
|
115
|
+
<% } } %>
|
|
116
|
+
): Promise<<%= viewType %>[]> {
|
|
117
|
+
const model = new ReadModel<<%= viewType %>>(ctx.eventStore, '<%= projectionType %>');
|
|
118
|
+
|
|
119
|
+
// ## IMPLEMENTATION INSTRUCTIONS ##
|
|
120
|
+
// You can query the projection using the ReadModel API:
|
|
121
|
+
// - model.getAll() — fetch all documents
|
|
122
|
+
// - model.getById(id) — fetch a single document by ID (default key: 'id')
|
|
123
|
+
// - model.find(filterFn) — filter documents using a predicate
|
|
124
|
+
// - model.first(filterFn) — fetch the first document matching a predicate
|
|
125
|
+
//
|
|
126
|
+
// Example below uses \`.find()\` to filter
|
|
127
|
+
// change the logic for the query as needed to meet the requirements for the current slice.
|
|
128
|
+
|
|
129
|
+
return model.find((item) => {
|
|
130
|
+
<% if (parsedRequest?.args?.length) {
|
|
131
|
+
for (const arg of parsedRequest.args) { %>
|
|
132
|
+
if (<%= arg.name %> !== undefined && item.<%= arg.name %> !== <%= arg.name %>) return false;
|
|
133
|
+
<% } } %>
|
|
134
|
+
return true;
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { generateScaffoldFilePlans } from '../../scaffoldFromSchema';
|
|
3
|
-
import {
|
|
3
|
+
import { Model as SpecsSchema } from '@auto-engineer/flow';
|
|
4
4
|
|
|
5
5
|
describe('state.ts.ejs', () => {
|
|
6
6
|
it('should generate a valid state definition file for a query slice with a state message', async () => {
|
|
@@ -15,7 +15,6 @@ describe('state.ts.ejs', () => {
|
|
|
15
15
|
name: 'Get available items',
|
|
16
16
|
client: {
|
|
17
17
|
description: 'Client view of available items',
|
|
18
|
-
specs: [],
|
|
19
18
|
},
|
|
20
19
|
server: {
|
|
21
20
|
description: 'Projects available items',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { Model as SpecsSchema } from '@auto-engineer/flow';
|
|
3
3
|
import { generateScaffoldFilePlans } from '../../scaffoldFromSchema';
|
|
4
4
|
|
|
5
5
|
describe('react.specs.ts.ejs (react slice)', () => {
|
|
@@ -13,7 +13,7 @@ describe('react.specs.ts.ejs (react slice)', () => {
|
|
|
13
13
|
{
|
|
14
14
|
type: 'command',
|
|
15
15
|
name: 'guest submits booking request',
|
|
16
|
-
client: { description: ''
|
|
16
|
+
client: { description: '' },
|
|
17
17
|
server: {
|
|
18
18
|
description: '',
|
|
19
19
|
specs: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { Model as SpecsSchema } from '@auto-engineer/flow';
|
|
3
3
|
import { generateScaffoldFilePlans } from '../../scaffoldFromSchema';
|
|
4
4
|
|
|
5
5
|
describe('handle.ts.ejs (react slice)', () => {
|
|
@@ -13,7 +13,7 @@ describe('handle.ts.ejs (react slice)', () => {
|
|
|
13
13
|
{
|
|
14
14
|
type: 'command',
|
|
15
15
|
name: 'guest submits booking request',
|
|
16
|
-
client: { description: ''
|
|
16
|
+
client: { description: '' },
|
|
17
17
|
server: {
|
|
18
18
|
description: '',
|
|
19
19
|
specs: {
|
|
@@ -116,7 +116,7 @@ describe('handle.ts.ejs (react slice)', () => {
|
|
|
116
116
|
{
|
|
117
117
|
type: 'command',
|
|
118
118
|
name: 'notify host',
|
|
119
|
-
client: { description: ''
|
|
119
|
+
client: { description: '' },
|
|
120
120
|
server: {
|
|
121
121
|
description: '',
|
|
122
122
|
specs: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { Model as SpecsSchema } from '@auto-engineer/flow';
|
|
3
3
|
import { generateScaffoldFilePlans } from '../../scaffoldFromSchema';
|
|
4
4
|
|
|
5
5
|
describe('register.ts.ejs (react slice)', () => {
|
|
@@ -13,7 +13,7 @@ describe('register.ts.ejs (react slice)', () => {
|
|
|
13
13
|
{
|
|
14
14
|
type: 'command',
|
|
15
15
|
name: 'guest submits booking request',
|
|
16
|
-
client: { description: ''
|
|
16
|
+
client: { description: '' },
|
|
17
17
|
server: {
|
|
18
18
|
description: '',
|
|
19
19
|
specs: {
|
|
@@ -116,7 +116,7 @@ describe('register.ts.ejs (react slice)', () => {
|
|
|
116
116
|
{
|
|
117
117
|
type: 'command',
|
|
118
118
|
name: 'notify host',
|
|
119
|
-
client: { description: ''
|
|
119
|
+
client: { description: '' },
|
|
120
120
|
server: {
|
|
121
121
|
description: '',
|
|
122
122
|
specs: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specVariant1.d.ts","sourceRoot":"","sources":["../../../../src/codegen/test-data/specVariant1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE3D,QAAA,MAAM,YAAY,EAAE,WAoNnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -12,7 +12,10 @@ const specVariant1 = {
|
|
|
12
12
|
description: 'Handles item creation',
|
|
13
13
|
client: {
|
|
14
14
|
description: 'A form that allows users to add items',
|
|
15
|
-
specs:
|
|
15
|
+
specs: {
|
|
16
|
+
name: 'A form that allows users to add items',
|
|
17
|
+
rules: ['have fields for id and description'],
|
|
18
|
+
},
|
|
16
19
|
},
|
|
17
20
|
server: {
|
|
18
21
|
description: 'Handles creation logic',
|
|
@@ -54,7 +57,6 @@ const specVariant1 = {
|
|
|
54
57
|
description: 'Projection of available items',
|
|
55
58
|
client: {
|
|
56
59
|
description: 'Show available items',
|
|
57
|
-
specs: [],
|
|
58
60
|
},
|
|
59
61
|
server: {
|
|
60
62
|
description: 'Project items based on ItemCreated',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specVariant1.js","sourceRoot":"","sources":["../../../../src/codegen/test-data/specVariant1.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/codegen/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC;IAC3C,IAAI,EAAE,cAAc,GAAG,YAAY,EAAE,CAAC;IACtC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/codegen/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../../src/codegen/utils/path.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,aAAa,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../src/codegen/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAG,QAAkB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-server.d.ts","sourceRoot":"","sources":["../../../src/commands/generate-server.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAqB1B,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,MAAM,MAAM,OAAO,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM,EAAE,WAAW,SAAS,aAAa,GAAG,aAAa,IAAI,QAAQ,CAAC;IACrH,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AACH,MAAM,MAAM,KAAK,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,SAAS,aAAa,GAAG,aAAa,IAAI,QAAQ,CAAC;IAC/G,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD,CAAC;AAKF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CACzC,gBAAgB,EAChB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,iBAAiB,EACjB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CACF,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,KAAK,CAC7C,wBAAwB,EACxB;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,eAAO,MAAM,cAAc;;;oBAxBX,MAAM;qBACL,MAAM;;gBAvBT,IAAI;gBACJ,MAAM;oBACF,MAAM;GAqEtB,CAAC;AA6aH,eAAe,cAAc,CAAC"}
|