veloce-ts 0.2.4 → 0.2.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/CHANGELOG.md +17 -0
- package/dist/cjs/src/graphql/index.js +2 -2
- package/dist/cjs/src/graphql/index.js.map +3 -3
- package/dist/cjs/src/index.js +8 -8
- package/dist/cjs/src/index.js.map +4 -4
- package/dist/cjs/src/plugins/index.js +1 -1
- package/dist/cjs/src/plugins/index.js.map +3 -3
- package/dist/esm/{chunk-dfay135z.js → chunk-ef0vfd27.js} +1 -1
- package/dist/esm/{chunk-dfay135z.js.map → chunk-ef0vfd27.js.map} +3 -3
- package/dist/esm/src/graphql/index.js +2 -2
- package/dist/esm/src/graphql/index.js.map +1 -1
- package/dist/esm/src/index.js +3 -3
- package/dist/esm/src/index.js.map +3 -3
- package/dist/esm/src/plugins/index.js +1 -1
- package/dist/types/decorators/graphql.d.ts +0 -1
- package/dist/types/decorators/graphql.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -69,4 +69,4 @@ ${W.join(`
|
|
|
69
69
|
`.trim()}getSchema(){return this.schema}}
|
|
70
70
|
export{A as R,S,_ as T,v as U,Q as V,G as W,K as X,L as Y,T as Z,I as _,u as $,h as aa,j as ba,q as ca,Y as da,m as ea,g as fa,P as ga,E as ha};
|
|
71
71
|
|
|
72
|
-
//# debugId=
|
|
72
|
+
//# debugId=B4358717307B642764756E2164756E21
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["..\\..\\src\\decorators\\graphql.ts", "..\\..\\src\\graphql\\zod-to-graphql.ts", "..\\..\\src\\graphql\\schema-builder.ts", "..\\..\\src\\graphql\\plugin.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// GraphQL decorators for Veloce-TS\r\nimport 'reflect-metadata';\r\nimport type { ZodSchema } from 'zod';\r\nimport type {\r\n GraphQLResolverMetadata,\r\n GraphQLFieldMetadata,\r\n GraphQLArgumentMetadata,\r\n GraphQLOperationType\r\n} from '../types';\r\n\r\n// Metadata keys for reflect-metadata\r\nconst GRAPHQL_RESOLVER_KEY = Symbol('graphql:resolver');\r\nconst GRAPHQL_FIELD_KEY = Symbol('graphql:field');\r\nconst GRAPHQL_ARGS_KEY = Symbol('graphql:args');\r\n\r\n/**\r\n * @Resolver decorator - Marks a class as a GraphQL resolver\r\n * \r\n * @example\r\n * ```typescript\r\n * @Resolver()\r\n * class UserResolver {\r\n * @Query()\r\n * async getUser(@Arg('id', z.string()) id: string) {\r\n * return { id, name: 'John' };\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport function Resolver(name?: string): ClassDecorator {\r\n return (target: any) => {\r\n const metadata: GraphQLResolverMetadata = {\r\n target,\r\n name: name || target.name\r\n };\r\n\r\n Reflect.defineMetadata(GRAPHQL_RESOLVER_KEY, metadata, target);\r\n };\r\n}\r\n\r\n/**\r\n * @GQLQuery decorator - Marks a method as a GraphQL query\r\n * \r\n * @example\r\n * ```typescript\r\n * @GQLQuery()\r\n * async getUser(@Arg('id', z.string()) id: string) {\r\n * return { id, name: 'John' };\r\n * }\r\n * ```\r\n */\r\nexport function GQLQuery(name?: string, options?: {\r\n description?: string;\r\n deprecated?: boolean;\r\n deprecationReason?: string;\r\n}): MethodDecorator {\r\n return createFieldDecorator('query', name, options);\r\n}\r\n\r\n// Alias for convenience\r\nexport { GQLQuery as GraphQLQuery };\r\
|
|
5
|
+
"// GraphQL decorators for Veloce-TS\r\nimport 'reflect-metadata';\r\nimport type { ZodSchema } from 'zod';\r\nimport type {\r\n GraphQLResolverMetadata,\r\n GraphQLFieldMetadata,\r\n GraphQLArgumentMetadata,\r\n GraphQLOperationType\r\n} from '../types';\r\n\r\n// Metadata keys for reflect-metadata\r\nconst GRAPHQL_RESOLVER_KEY = Symbol('graphql:resolver');\r\nconst GRAPHQL_FIELD_KEY = Symbol('graphql:field');\r\nconst GRAPHQL_ARGS_KEY = Symbol('graphql:args');\r\n\r\n/**\r\n * @Resolver decorator - Marks a class as a GraphQL resolver\r\n * \r\n * @example\r\n * ```typescript\r\n * @Resolver()\r\n * class UserResolver {\r\n * @Query()\r\n * async getUser(@Arg('id', z.string()) id: string) {\r\n * return { id, name: 'John' };\r\n * }\r\n * }\r\n * ```\r\n */\r\nexport function Resolver(name?: string): ClassDecorator {\r\n return (target: any) => {\r\n const metadata: GraphQLResolverMetadata = {\r\n target,\r\n name: name || target.name\r\n };\r\n\r\n Reflect.defineMetadata(GRAPHQL_RESOLVER_KEY, metadata, target);\r\n };\r\n}\r\n\r\n/**\r\n * @GQLQuery decorator - Marks a method as a GraphQL query\r\n * \r\n * @example\r\n * ```typescript\r\n * @GQLQuery()\r\n * async getUser(@Arg('id', z.string()) id: string) {\r\n * return { id, name: 'John' };\r\n * }\r\n * ```\r\n */\r\nexport function GQLQuery(name?: string, options?: {\r\n description?: string;\r\n deprecated?: boolean;\r\n deprecationReason?: string;\r\n}): MethodDecorator {\r\n return createFieldDecorator('query', name, options);\r\n}\r\n\r\n// Alias for convenience\r\nexport { GQLQuery as GraphQLQuery };\r\n\r\n/**\r\n * @GQLMutation decorator - Marks a method as a GraphQL mutation\r\n * \r\n * @example\r\n * ```typescript\r\n * @GQLMutation()\r\n * async createUser(@Arg('input', CreateUserSchema) input: CreateUserInput) {\r\n * return { id: '1', ...input };\r\n * }\r\n * ```\r\n */\r\nexport function GQLMutation(name?: string, options?: {\r\n description?: string;\r\n deprecated?: boolean;\r\n deprecationReason?: string;\r\n}): MethodDecorator {\r\n return createFieldDecorator('mutation', name, options);\r\n}\r\n\r\n// Alias for convenience\r\nexport { GQLMutation as GraphQLMutation };\r\nexport { GQLMutation as Mutation };\r\n\r\n/**\r\n * @GQLSubscription decorator - Marks a method as a GraphQL subscription\r\n * \r\n * @example\r\n * ```typescript\r\n * @GQLSubscription()\r\n * async onUserCreated() {\r\n * return pubsub.asyncIterator('USER_CREATED');\r\n * }\r\n * ```\r\n */\r\nexport function GQLSubscription(name?: string, options?: {\r\n description?: string;\r\n deprecated?: boolean;\r\n deprecationReason?: string;\r\n}): MethodDecorator {\r\n return createFieldDecorator('subscription', name, options);\r\n}\r\n\r\n// Alias for convenience\r\nexport { GQLSubscription as GraphQLSubscription };\r\nexport { GQLSubscription as Subscription };\r\n\r\n/**\r\n * Helper function to create field decorators\r\n */\r\nfunction createFieldDecorator(\r\n type: GraphQLOperationType,\r\n name?: string,\r\n options?: {\r\n description?: string;\r\n deprecated?: boolean;\r\n deprecationReason?: string;\r\n }\r\n): MethodDecorator {\r\n return (target: any, propertyKey: string | symbol) => {\r\n const metadata: GraphQLFieldMetadata = {\r\n target: target.constructor,\r\n propertyKey: propertyKey as string,\r\n type,\r\n name: name || (propertyKey as string),\r\n description: options?.description,\r\n deprecated: options?.deprecated,\r\n deprecationReason: options?.deprecationReason\r\n };\r\n\r\n // Store field metadata\r\n const existingFields = Reflect.getMetadata(GRAPHQL_FIELD_KEY, target.constructor) || [];\r\n existingFields.push(metadata);\r\n Reflect.defineMetadata(GRAPHQL_FIELD_KEY, existingFields, target.constructor);\r\n\r\n // Also store on the method itself for easy access\r\n Reflect.defineMetadata(GRAPHQL_FIELD_KEY, metadata, target, propertyKey);\r\n };\r\n}\r\n\r\n/**\r\n * @Arg decorator - Marks a parameter as a GraphQL argument with validation\r\n * \r\n * @example\r\n * ```typescript\r\n * @Query()\r\n * async getUser(\r\n * @Arg('id', z.string().uuid()) id: string,\r\n * @Arg('includeProfile', z.boolean().optional()) includeProfile?: boolean\r\n * ) {\r\n * return { id, name: 'John' };\r\n * }\r\n * ```\r\n */\r\nexport function Arg<T extends ZodSchema>(\r\n name: string,\r\n schema?: T,\r\n options?: {\r\n description?: string;\r\n defaultValue?: any;\r\n nullable?: boolean;\r\n }\r\n): ParameterDecorator {\r\n return (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => {\r\n if (!propertyKey) return;\r\n \r\n const existingArgs = Reflect.getMetadata(GRAPHQL_ARGS_KEY, target, propertyKey) || [];\r\n\r\n const metadata: GraphQLArgumentMetadata = {\r\n index: parameterIndex,\r\n name,\r\n schema,\r\n description: options?.description,\r\n defaultValue: options?.defaultValue,\r\n nullable: options?.nullable\r\n };\r\n\r\n existingArgs[parameterIndex] = metadata;\r\n Reflect.defineMetadata(GRAPHQL_ARGS_KEY, existingArgs, target, propertyKey);\r\n };\r\n}\r\n\r\n/**\r\n * @GQLContext decorator - Injects GraphQL context into a parameter\r\n * \r\n * @example\r\n * ```typescript\r\n * @GQLQuery()\r\n * async getCurrentUser(@GQLContext() ctx: GraphQLContext) {\r\n * return ctx.user;\r\n * }\r\n * ```\r\n */\r\nexport function GQLContext(): ParameterDecorator {\r\n return (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => {\r\n if (!propertyKey) return;\r\n \r\n const existingArgs = Reflect.getMetadata(GRAPHQL_ARGS_KEY, target, propertyKey) || [];\r\n\r\n const metadata: GraphQLArgumentMetadata = {\r\n index: parameterIndex,\r\n name: '__context__', // Special marker for context injection\r\n nullable: false\r\n };\r\n\r\n existingArgs[parameterIndex] = metadata;\r\n Reflect.defineMetadata(GRAPHQL_ARGS_KEY, existingArgs, target, propertyKey);\r\n };\r\n}\r\n\r\n// Alias for convenience (note: GraphQLContext type is exported from graphql module)\r\nexport { GQLContext as GraphQLCtx };\r\n\r\n// ============================================================================\r\n// Helper functions to retrieve metadata\r\n// ============================================================================\r\n\r\n/**\r\n * Get resolver metadata from a class\r\n */\r\nexport function getResolverMetadata(target: any): GraphQLResolverMetadata | undefined {\r\n return Reflect.getMetadata(GRAPHQL_RESOLVER_KEY, target);\r\n}\r\n\r\n/**\r\n * Get all field metadata from a resolver class\r\n */\r\nexport function getFieldsMetadata(target: any): GraphQLFieldMetadata[] {\r\n return Reflect.getMetadata(GRAPHQL_FIELD_KEY, target) || [];\r\n}\r\n\r\n/**\r\n * Get field metadata from a specific method\r\n */\r\nexport function getFieldMetadata(target: any, propertyKey: string): GraphQLFieldMetadata | undefined {\r\n return Reflect.getMetadata(GRAPHQL_FIELD_KEY, target, propertyKey);\r\n}\r\n\r\n/**\r\n * Get argument metadata from a method\r\n */\r\nexport function getArgumentsMetadata(target: any, propertyKey: string): GraphQLArgumentMetadata[] {\r\n return Reflect.getMetadata(GRAPHQL_ARGS_KEY, target, propertyKey) || [];\r\n}\r\n\r\n/**\r\n * Check if a class has resolver metadata\r\n */\r\nexport function hasResolverMetadata(target: any): boolean {\r\n return Reflect.hasMetadata(GRAPHQL_RESOLVER_KEY, target);\r\n}\r\n\r\n/**\r\n * Check if a method has field metadata\r\n */\r\nexport function hasFieldMetadata(target: any, propertyKey: string): boolean {\r\n return Reflect.hasMetadata(GRAPHQL_FIELD_KEY, target, propertyKey);\r\n}\r\n",
|
|
6
6
|
"// Convert Zod schemas to GraphQL types\r\nimport type { ZodSchema, ZodTypeAny } from 'zod';\r\nimport { z } from 'zod';\r\n\r\n/**\r\n * Convert a Zod schema to a GraphQL type string\r\n */\r\nexport function zodToGraphQLType(schema: ZodSchema): string {\r\n const zodType = (schema as any)._def.typeName;\r\n\r\n // Handle ZodString\r\n if (zodType === 'ZodString') {\r\n return 'String';\r\n }\r\n\r\n // Handle ZodNumber\r\n if (zodType === 'ZodNumber') {\r\n const def = (schema as any)._def;\r\n if (def.checks?.some((check: any) => check.kind === 'int')) {\r\n return 'Int';\r\n }\r\n return 'Float';\r\n }\r\n\r\n // Handle ZodBoolean\r\n if (zodType === 'ZodBoolean') {\r\n return 'Boolean';\r\n }\r\n\r\n // Handle ZodArray\r\n if (zodType === 'ZodArray') {\r\n const elementType = zodToGraphQLType((schema as any)._def.type);\r\n return `[${elementType}]`;\r\n }\r\n\r\n // Handle ZodObject\r\n if (zodType === 'ZodObject') {\r\n // For objects, we'll need to generate a custom type\r\n // Return a placeholder that will be replaced with the actual type name\r\n return 'JSON'; // GraphQL scalar for generic objects\r\n }\r\n\r\n // Handle ZodOptional\r\n if (zodType === 'ZodOptional') {\r\n return zodToGraphQLType((schema as any)._def.innerType);\r\n }\r\n\r\n // Handle ZodNullable\r\n if (zodType === 'ZodNullable') {\r\n return zodToGraphQLType((schema as any)._def.innerType);\r\n }\r\n\r\n // Handle ZodDefault\r\n if (zodType === 'ZodDefault') {\r\n return zodToGraphQLType((schema as any)._def.innerType);\r\n }\r\n\r\n // Handle ZodEnum\r\n if (zodType === 'ZodEnum') {\r\n // For enums, we'll need to generate a custom enum type\r\n return 'String'; // Fallback to String\r\n }\r\n\r\n // Handle ZodUnion\r\n if (zodType === 'ZodUnion') {\r\n // GraphQL doesn't support unions of scalars directly\r\n // We'll use the first option as fallback\r\n const options = (schema as any)._def.options;\r\n if (options && options.length > 0) {\r\n return zodToGraphQLType(options[0]);\r\n }\r\n }\r\n\r\n // Handle ZodLiteral\r\n if (zodType === 'ZodLiteral') {\r\n const value = (schema as any)._def.value;\r\n if (typeof value === 'string') return 'String';\r\n if (typeof value === 'number') return 'Float';\r\n if (typeof value === 'boolean') return 'Boolean';\r\n }\r\n\r\n // Handle ZodDate\r\n if (zodType === 'ZodDate') {\r\n return 'String'; // ISO date string\r\n }\r\n\r\n // Default fallback\r\n return 'String';\r\n}\r\n\r\n/**\r\n * Check if a Zod schema is nullable/optional\r\n */\r\nexport function isNullable(schema: ZodSchema): boolean {\r\n const zodType = (schema as any)._def.typeName;\r\n \r\n if (zodType === 'ZodOptional' || zodType === 'ZodNullable') {\r\n return true;\r\n }\r\n\r\n if (zodType === 'ZodDefault') {\r\n return isNullable((schema as any)._def.innerType);\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Get the default value from a Zod schema\r\n */\r\nexport function getDefaultValue(schema: ZodSchema): any {\r\n const zodType = (schema as any)._def.typeName;\r\n\r\n if (zodType === 'ZodDefault') {\r\n return (schema as any)._def.defaultValue();\r\n }\r\n\r\n if (zodType === 'ZodOptional' || zodType === 'ZodNullable') {\r\n const innerType = (schema as any)._def.innerType;\r\n if (innerType) {\r\n return getDefaultValue(innerType);\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Generate GraphQL object type definition from Zod object schema\r\n */\r\nexport function zodObjectToGraphQLType(name: string, schema: ZodSchema): string {\r\n const zodType = (schema as any)._def.typeName;\r\n\r\n if (zodType !== 'ZodObject') {\r\n throw new Error('Schema must be a ZodObject');\r\n }\r\n\r\n const shape = (schema as any)._def.shape();\r\n const fields: string[] = [];\r\n\r\n for (const [key, value] of Object.entries(shape)) {\r\n const fieldSchema = value as ZodTypeAny;\r\n const fieldType = zodToGraphQLType(fieldSchema);\r\n const nullable = isNullable(fieldSchema);\r\n const typeString = nullable ? fieldType : `${fieldType}!`;\r\n fields.push(` ${key}: ${typeString}`);\r\n }\r\n\r\n return `type ${name} {\\n${fields.join('\\n')}\\n}`;\r\n}\r\n\r\n/**\r\n * Generate GraphQL input type definition from Zod object schema\r\n */\r\nexport function zodObjectToGraphQLInput(name: string, schema: ZodSchema): string {\r\n const zodType = (schema as any)._def.typeName;\r\n\r\n if (zodType !== 'ZodObject') {\r\n throw new Error('Schema must be a ZodObject');\r\n }\r\n\r\n const shape = (schema as any)._def.shape();\r\n const fields: string[] = [];\r\n\r\n for (const [key, value] of Object.entries(shape)) {\r\n const fieldSchema = value as ZodTypeAny;\r\n const fieldType = zodToGraphQLType(fieldSchema);\r\n const nullable = isNullable(fieldSchema);\r\n const defaultValue = getDefaultValue(fieldSchema);\r\n \r\n let typeString = nullable ? fieldType : `${fieldType}!`;\r\n \r\n if (defaultValue !== undefined) {\r\n const defaultStr = JSON.stringify(defaultValue);\r\n typeString += ` = ${defaultStr}`;\r\n }\r\n \r\n fields.push(` ${key}: ${typeString}`);\r\n }\r\n\r\n return `input ${name} {\\n${fields.join('\\n')}\\n}`;\r\n}\r\n",
|
|
7
7
|
"// GraphQL Schema Builder for Veloce-TS\r\nimport type { MetadataRegistry } from '../core/metadata';\r\nimport type { DIContainer } from '../dependencies/container';\r\nimport type { GraphQLFieldMetadata, GraphQLArgumentMetadata, Context } from '../types';\r\nimport { getArgumentsMetadata } from '../decorators/graphql';\r\nimport { zodToGraphQLType, isNullable } from './zod-to-graphql';\r\nimport { ValidationEngine } from '../validation/validator';\r\n\r\n/**\r\n * GraphQL Schema Builder\r\n * Generates GraphQL schema from decorator metadata\r\n */\r\nexport class GraphQLSchemaBuilder {\r\n private validationEngine: ValidationEngine;\r\n private customTypes: Map<string, string> = new Map();\r\n\r\n constructor(\r\n private metadata: MetadataRegistry,\r\n private container: DIContainer\r\n ) {\r\n this.validationEngine = new ValidationEngine();\r\n }\r\n\r\n /**\r\n * Build the complete GraphQL schema\r\n */\r\n build(): GraphQLSchemaDefinition {\r\n const resolvers = this.metadata.getGraphQLResolvers();\r\n \r\n const queries: string[] = [];\r\n const mutations: string[] = [];\r\n const subscriptions: string[] = [];\r\n const types: string[] = [];\r\n\r\n // Process each resolver\r\n for (const resolver of resolvers) {\r\n const fields = this.metadata.getGraphQLFieldsByResolver(resolver.target);\r\n\r\n for (const field of fields) {\r\n const fieldDef = this.buildFieldDefinition(field);\r\n\r\n switch (field.type) {\r\n case 'query':\r\n queries.push(fieldDef);\r\n break;\r\n case 'mutation':\r\n mutations.push(fieldDef);\r\n break;\r\n case 'subscription':\r\n subscriptions.push(fieldDef);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build type definitions\r\n let typeDefs = '';\r\n\r\n // Add custom types\r\n if (this.customTypes.size > 0) {\r\n typeDefs += Array.from(this.customTypes.values()).join('\\n\\n') + '\\n\\n';\r\n }\r\n\r\n // Add Query type\r\n if (queries.length > 0) {\r\n typeDefs += 'type Query {\\n';\r\n typeDefs += queries.map(q => ` ${q}`).join('\\n');\r\n typeDefs += '\\n}\\n\\n';\r\n }\r\n\r\n // Add Mutation type\r\n if (mutations.length > 0) {\r\n typeDefs += 'type Mutation {\\n';\r\n typeDefs += mutations.map(m => ` ${m}`).join('\\n');\r\n typeDefs += '\\n}\\n\\n';\r\n }\r\n\r\n // Add Subscription type\r\n if (subscriptions.length > 0) {\r\n typeDefs += 'type Subscription {\\n';\r\n typeDefs += subscriptions.map(s => ` ${s}`).join('\\n');\r\n typeDefs += '\\n}\\n';\r\n }\r\n\r\n // Build resolvers object\r\n const resolversObj = this.buildResolvers();\r\n\r\n return {\r\n typeDefs: typeDefs.trim(),\r\n resolvers: resolversObj\r\n };\r\n }\r\n\r\n /**\r\n * Build a field definition string\r\n */\r\n private buildFieldDefinition(field: GraphQLFieldMetadata): string {\r\n const args = getArgumentsMetadata(field.target.prototype, field.propertyKey);\r\n const argStrings: string[] = [];\r\n\r\n // Build arguments\r\n for (const arg of args) {\r\n if (arg.name === '__context__') continue; // Skip context injection\r\n\r\n let argType = 'String'; // Default type\r\n \r\n if (arg.schema) {\r\n argType = zodToGraphQLType(arg.schema);\r\n const nullable = isNullable(arg.schema);\r\n if (!nullable && !arg.nullable) {\r\n argType += '!';\r\n }\r\n }\r\n\r\n let argStr = `${arg.name}: ${argType}`;\r\n \r\n if (arg.defaultValue !== undefined) {\r\n argStr += ` = ${JSON.stringify(arg.defaultValue)}`;\r\n }\r\n\r\n argStrings.push(argStr);\r\n }\r\n\r\n const argsStr = argStrings.length > 0 ? `(${argStrings.join(', ')})` : '';\r\n \r\n // For now, default return type to String (can be enhanced with type inference)\r\n const returnType = 'String';\r\n\r\n let fieldStr = `${field.name}${argsStr}: ${returnType}`;\r\n\r\n // Add deprecation\r\n if (field.deprecated) {\r\n const reason = field.deprecationReason || 'No longer supported';\r\n fieldStr += ` @deprecated(reason: \"${reason}\")`;\r\n }\r\n\r\n return fieldStr;\r\n }\r\n\r\n /**\r\n * Build resolvers object with validation and DI\r\n */\r\n private buildResolvers(): GraphQLResolvers {\r\n const resolvers = this.metadata.getGraphQLResolvers();\r\n const resolversObj: GraphQLResolvers = {\r\n Query: {},\r\n Mutation: {},\r\n Subscription: {}\r\n };\r\n\r\n for (const resolver of resolvers) {\r\n const fields = this.metadata.getGraphQLFieldsByResolver(resolver.target);\r\n\r\n for (const field of fields) {\r\n const resolverFn = this.createResolverFunction(resolver.target, field);\r\n\r\n switch (field.type) {\r\n case 'query':\r\n resolversObj.Query![field.name!] = resolverFn;\r\n break;\r\n case 'mutation':\r\n resolversObj.Mutation![field.name!] = resolverFn;\r\n break;\r\n case 'subscription':\r\n resolversObj.Subscription![field.name!] = resolverFn;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return resolversObj;\r\n }\r\n\r\n /**\r\n * Create a resolver function with validation and DI\r\n */\r\n private createResolverFunction(\r\n target: any,\r\n field: GraphQLFieldMetadata\r\n ): GraphQLResolverFn {\r\n return async (parent: any, args: any, context: GraphQLContext, info: any) => {\r\n try {\r\n // Get argument metadata\r\n const argsMetadata = getArgumentsMetadata(target.prototype, field.propertyKey);\r\n const resolvedArgs: any[] = [];\r\n\r\n // Validate and resolve arguments\r\n for (const argMeta of argsMetadata) {\r\n if (argMeta.name === '__context__') {\r\n // Inject context\r\n resolvedArgs[argMeta.index] = context;\r\n } else {\r\n let value = args[argMeta.name];\r\n\r\n // Apply default value if not provided\r\n if (value === undefined && argMeta.defaultValue !== undefined) {\r\n value = argMeta.defaultValue;\r\n }\r\n\r\n // Validate with Zod schema\r\n if (argMeta.schema) {\r\n value = await this.validationEngine.validate(value, argMeta.schema);\r\n }\r\n\r\n resolvedArgs[argMeta.index] = value;\r\n }\r\n }\r\n\r\n // Resolve the resolver instance (with DI support)\r\n const instance: any = await this.container.resolve(target, {\r\n scope: 'request',\r\n context: context.request\r\n });\r\n\r\n // Execute the resolver method\r\n const result = await instance[field.propertyKey](...resolvedArgs);\r\n\r\n return result;\r\n } catch (error) {\r\n // Re-throw for GraphQL error handling\r\n throw error;\r\n }\r\n };\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\nexport interface GraphQLSchemaDefinition {\r\n typeDefs: string;\r\n resolvers: GraphQLResolvers;\r\n}\r\n\r\nexport interface GraphQLResolvers {\r\n Query?: Record<string, GraphQLResolverFn>;\r\n Mutation?: Record<string, GraphQLResolverFn>;\r\n Subscription?: Record<string, GraphQLResolverFn>;\r\n}\r\n\r\nexport type GraphQLResolverFn = (\r\n parent: any,\r\n args: any,\r\n context: GraphQLContext,\r\n info: any\r\n) => any | Promise<any>;\r\n\r\nexport interface GraphQLContext {\r\n request: Context;\r\n user?: any;\r\n [key: string]: any;\r\n}\r\n",
|
|
8
8
|
"// GraphQL Plugin - Enables GraphQL support for Veloce-TS\r\nimport type { Plugin } from '../core/plugin';\r\nimport type { VeloceTS } from '../core/application';\r\nimport { GraphQLSchemaBuilder } from './schema-builder';\r\nimport type { GraphQLContext } from './schema-builder';\r\n\r\n/**\r\n * GraphQL Plugin Options\r\n */\r\nexport interface GraphQLPluginOptions {\r\n /** Path to serve GraphQL endpoint (default: /graphql) */\r\n path?: string;\r\n \r\n /** Path to serve GraphQL Playground (default: /graphql/playground) */\r\n playgroundPath?: string;\r\n \r\n /** Enable GraphQL Playground in development (default: true) */\r\n playground?: boolean;\r\n \r\n /** Custom context factory function */\r\n context?: (request: any) => Promise<any> | any;\r\n}\r\n\r\n/**\r\n * GraphQLPlugin enables GraphQL support with decorators and Zod validation\r\n * \r\n * @example\r\n * ```typescript\r\n * const app = new VeloceTS();\r\n * app.usePlugin(new GraphQLPlugin({\r\n * path: '/graphql',\r\n * playground: true\r\n * }));\r\n * ```\r\n */\r\nexport class GraphQLPlugin implements Plugin {\r\n name = 'graphql';\r\n version = '1.0.0';\r\n\r\n private options: Required<GraphQLPluginOptions>;\r\n private schema?: { typeDefs: string; resolvers: any };\r\n\r\n constructor(options?: GraphQLPluginOptions) {\r\n this.options = {\r\n path: options?.path || '/graphql',\r\n playgroundPath: options?.playgroundPath || '/graphql/playground',\r\n playground: options?.playground !== false,\r\n context: options?.context || ((request: any) => ({ request }))\r\n };\r\n }\r\n\r\n async install(app: VeloceTS): Promise<void> {\r\n // Build GraphQL schema from metadata\r\n const metadata = app.getMetadata();\r\n const container = app.getContainer();\r\n \r\n const schemaBuilder = new GraphQLSchemaBuilder(metadata, container);\r\n this.schema = schemaBuilder.build();\r\n\r\n // Register GraphQL endpoint\r\n app.post(this.options.path, {\r\n handler: async (c) => {\r\n return this.handleGraphQLRequest(c);\r\n },\r\n docs: {\r\n summary: 'GraphQL endpoint',\r\n description: 'Execute GraphQL queries and mutations',\r\n tags: ['GraphQL']\r\n }\r\n });\r\n\r\n // Also support GET for queries (useful for GraphQL Playground)\r\n app.get(this.options.path, {\r\n handler: async (c) => {\r\n const query = c.req.query('query');\r\n const variables = c.req.query('variables');\r\n const operationName = c.req.query('operationName');\r\n\r\n if (!query) {\r\n return c.json({ error: 'Query parameter is required' }, 400);\r\n }\r\n\r\n return this.executeGraphQL(c, {\r\n query,\r\n variables: variables ? JSON.parse(variables) : undefined,\r\n operationName\r\n });\r\n },\r\n docs: {\r\n summary: 'GraphQL endpoint (GET)',\r\n description: 'Execute GraphQL queries via GET request',\r\n tags: ['GraphQL']\r\n }\r\n });\r\n\r\n // Register GraphQL Playground endpoint if enabled\r\n if (this.options.playground) {\r\n app.get(this.options.playgroundPath, {\r\n handler: async (c) => {\r\n return c.html(this.renderPlayground());\r\n },\r\n docs: {\r\n summary: 'GraphQL Playground',\r\n description: 'Interactive GraphQL IDE',\r\n tags: ['GraphQL']\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Handle GraphQL POST request\r\n */\r\n private async handleGraphQLRequest(c: any) {\r\n try {\r\n const body = await c.req.json();\r\n return this.executeGraphQL(c, body);\r\n } catch (error) {\r\n return c.json({\r\n errors: [{\r\n message: 'Invalid JSON in request body',\r\n extensions: { code: 'BAD_REQUEST' }\r\n }]\r\n }, 400);\r\n }\r\n }\r\n\r\n /**\r\n * Execute a GraphQL operation\r\n */\r\n private async executeGraphQL(c: any, request: GraphQLRequest) {\r\n if (!this.schema) {\r\n return c.json({\r\n errors: [{\r\n message: 'GraphQL schema not initialized',\r\n extensions: { code: 'INTERNAL_SERVER_ERROR' }\r\n }]\r\n }, 500);\r\n }\r\n\r\n try {\r\n // Parse the query (simple implementation - in production use graphql-js)\r\n const { query, variables, operationName } = request;\r\n\r\n // Create context\r\n const context: GraphQLContext = await this.options.context(c);\r\n\r\n // Execute the operation\r\n const result = await this.executeOperation(\r\n query,\r\n variables,\r\n context,\r\n operationName\r\n );\r\n\r\n return c.json(result);\r\n } catch (error: any) {\r\n return c.json({\r\n errors: [{\r\n message: error.message || 'Internal server error',\r\n extensions: {\r\n code: 'INTERNAL_SERVER_ERROR',\r\n ...(process.env.NODE_ENV === 'development' && { stack: error.stack })\r\n }\r\n }]\r\n }, 500);\r\n }\r\n }\r\n\r\n /**\r\n * Execute a GraphQL operation (simplified implementation)\r\n * In production, this should use graphql-js or similar library\r\n */\r\n private async executeOperation(\r\n query: string,\r\n variables: any,\r\n context: GraphQLContext,\r\n operationName?: string\r\n ): Promise<GraphQLResponse> {\r\n // This is a simplified implementation\r\n // In a real implementation, you would use graphql-js to parse and execute\r\n \r\n // For now, return a placeholder response\r\n // The actual execution would happen through the resolvers we built\r\n return {\r\n data: null,\r\n errors: [{\r\n message: 'GraphQL execution not fully implemented. Use a GraphQL library like graphql-js for full support.',\r\n extensions: { code: 'NOT_IMPLEMENTED' }\r\n }]\r\n };\r\n }\r\n\r\n /**\r\n * Render GraphQL Playground HTML\r\n */\r\n private renderPlayground(): string {\r\n return `\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>GraphQL Playground</title>\r\n <link rel=\"stylesheet\" href=\"https://unpkg.com/graphql-playground-react/build/static/css/index.css\" />\r\n <link rel=\"shortcut icon\" href=\"https://unpkg.com/graphql-playground-react/build/favicon.png\" />\r\n <script src=\"https://unpkg.com/graphql-playground-react/build/static/js/middleware.js\"></script>\r\n <style>\r\n body {\r\n margin: 0;\r\n padding: 0;\r\n font-family: 'Open Sans', sans-serif;\r\n overflow: hidden;\r\n }\r\n #root {\r\n height: 100vh;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <div id=\"root\"></div>\r\n <script>\r\n window.addEventListener('load', function (event) {\r\n GraphQLPlayground.init(document.getElementById('root'), {\r\n endpoint: '${this.options.path}',\r\n settings: {\r\n 'editor.theme': 'light',\r\n 'editor.cursorShape': 'line',\r\n 'editor.reuseHeaders': true,\r\n 'tracing.hideTracingResponse': true,\r\n 'queryPlan.hideQueryPlanResponse': true,\r\n 'editor.fontSize': 14,\r\n 'editor.fontFamily': \"'Source Code Pro', 'Consolas', 'Inconsolata', 'Droid Sans Mono', 'Monaco', monospace\",\r\n 'request.credentials': 'include'\r\n }\r\n })\r\n })\r\n </script>\r\n</body>\r\n</html>\r\n `.trim();\r\n }\r\n\r\n /**\r\n * Get the generated schema (useful for testing)\r\n */\r\n getSchema() {\r\n return this.schema;\r\n }\r\n}\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\ninterface GraphQLRequest {\r\n query: string;\r\n variables?: Record<string, any>;\r\n operationName?: string;\r\n}\r\n\r\ninterface GraphQLResponse {\r\n data?: any;\r\n errors?: Array<{\r\n message: string;\r\n locations?: Array<{ line: number; column: number }>;\r\n path?: Array<string | number>;\r\n extensions?: Record<string, any>;\r\n }>;\r\n}\r\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": ";uIACA,SAUM,JAAuB,OAAO,kBAAkB,EAChD,EAAoB,OAAO,eAAe,EAC1C,EAAmB,OAAO,cAAc,EAgBvC,SAAS,CAAQ,CAAC,EAA+B,CACtD,MAAO,CAAC,IAAgB,CACtB,IAAM,EAAoC,CACxC,SACA,KAAM,GAAQ,EAAO,IACvB,EAEA,QAAQ,eAAe,EAAsB,EAAU,CAAM,GAe1D,SAAS,CAAQ,CAAC,EAAe,EAIpB,CAClB,OAAO,EAAqB,QAAS,EAAM,CAAO,
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": "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",
|
|
11
|
+
"debugId": "B4358717307B642764756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{$ as L,R as t,S as x,T as f,U as a,V as d,W as h,X as l,Y as s,Z as u,_ as G,aa as Q,ba as b,ca as c,da as g,ea as i,fa as j,ga as k,ha as n}from"../../chunk-
|
|
2
|
+
import{$ as L,R as t,S as x,T as f,U as a,V as d,W as h,X as l,Y as s,Z as u,_ as G,aa as Q,ba as b,ca as c,da as g,ea as i,fa as j,ga as k,ha as n}from"../../chunk-ef0vfd27.js";import"../../chunk-k66rn4fj.js";import"../../chunk-mky5qqg0.js";import"../../chunk-yq3gf9ts.js";import"../../chunk-9v7atckx.js";import"../../chunk-5q75d71c.js";import"../../chunk-y262e56g.js";export{b as zodToGraphQLType,i as zodObjectToGraphQLType,j as zodObjectToGraphQLInput,c as isNullable,L as hasResolverMetadata,Q as hasFieldMetadata,l as getResolverMetadata,s as getFieldsMetadata,u as getFieldMetadata,g as getDefaultValue,G as getArgumentsMetadata,a as Subscription,t as Resolver,f as Mutation,a as GraphQLSubscription,k as GraphQLSchemaBuilder,x as GraphQLQuery,n as GraphQLPlugin,f as GraphQLMutation,h as GraphQLCtx,a as GQLSubscription,x as GQLQuery,f as GQLMutation,h as GQLContext,d as Arg};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=C4F29F3EE7CB7CCD64756E2164756E21
|