@nexusts/graphql 0.9.8 → 0.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- export declare function Arg(name: string, type?: string): ParameterDecorator;
1
+ export declare function Arg(name: string, type?: string): any;
2
2
  /** Read `@Arg` metadata for a specific method. */
3
3
  export declare function getMethodArgs(target: object, propertyKey: string | symbol): Array<{
4
4
  name: string;
@@ -1,12 +1,10 @@
1
1
  import type { ResolverClassRecord } from "../types.js";
2
- export declare const Query: (name?: string, opts?: {
2
+ export interface OperationOptions {
3
3
  returns?: string;
4
- }) => (target: object, propertyKey: string | symbol, _descriptor: TypedPropertyDescriptor<any>) => void;
5
- export declare const Mutation: (name?: string, opts?: {
6
- returns?: string;
7
- }) => (target: object, propertyKey: string | symbol, _descriptor: TypedPropertyDescriptor<any>) => void;
8
- export declare const Subscription: (name?: string, opts?: {
9
- returns?: string;
10
- }) => (target: object, propertyKey: string | symbol, _descriptor: TypedPropertyDescriptor<any>) => void;
4
+ args?: Record<string, string>;
5
+ }
6
+ export declare const Query: (name?: string, opts?: OperationOptions) => (...args: any[]) => void;
7
+ export declare const Mutation: (name?: string, opts?: OperationOptions) => (...args: any[]) => void;
8
+ export declare const Subscription: (name?: string, opts?: OperationOptions) => (...args: any[]) => void;
11
9
  /** Public helper for the scanner. */
12
10
  export type AnyField = ResolverClassRecord["fields"][number];
@@ -18,7 +18,7 @@
18
18
  * }
19
19
  */
20
20
  import type { ResolverClassRecord } from "../types.js";
21
- export declare function Resolver(typeName?: string): ClassDecorator;
21
+ export declare function Resolver(typeName?: string): any;
22
22
  /** Return all classes decorated with `@Resolver`. */
23
23
  export declare function getRegisteredResolvers(): Function[];
24
24
  /** Remove all entries from the registry. Intended for use in tests only. */
@@ -28,6 +28,6 @@ export declare function getResolverTypeName(target: object): string | undefined;
28
28
  /** Append a field method to the resolver class's metadata. */
29
29
  export declare function pushResolverField(target: object, field: ResolverClassRecord["fields"][number]): void;
30
30
  /** Read the field metadata for a resolver class. */
31
- export declare function getResolverFields(target: object): ResolverClassRecord["fields"];
31
+ export declare function getResolverFields(target: Function): ResolverClassRecord["fields"];
32
32
  /** True if `target` was decorated with `@Resolver`. */
33
33
  export declare function isResolverClass(target: object): boolean;
package/dist/index.js CHANGED
@@ -27,20 +27,31 @@ var __legacyDecorateClassTS = function(decorators, target, key, desc) {
27
27
  };
28
28
  var __require = import.meta.require;
29
29
  // packages/graphql/src/decorators/resolver.ts
30
- import { safeGetMeta, safeDefineMeta, safeHasMeta } from "@nexusts/core/di/safe-reflect";
30
+ import { safeGetMeta, safeDefineMeta } from "@nexusts/core/di/safe-reflect";
31
31
  var RESOLVER_KEY = Symbol.for("nexus:GraphQL:Resolver");
32
32
  var FIELDS_KEY = Symbol.for("nexus:GraphQL:Fields");
33
33
  var TYPENAME_KEY = Symbol.for("nexus:GraphQL:TypeName");
34
34
  var _resolverRegistry = new Set;
35
+ var _fieldStore = new Map;
35
36
  function Resolver(typeName) {
36
- return (target) => {
37
+ return (...args) => {
38
+ if (args.length >= 2 && args[1]?.kind === "class") {
39
+ const [target2, context] = args;
40
+ const inferred2 = typeName ?? target2.name.replace(/Resolver$/, "");
41
+ safeDefineMeta(RESOLVER_KEY, true, target2);
42
+ safeDefineMeta(TYPENAME_KEY, inferred2, target2);
43
+ const accumulated = context.metadata["nexus:GraphQL:Fields"];
44
+ _fieldStore.set(target2, accumulated ?? []);
45
+ _resolverRegistry.add(target2);
46
+ return;
47
+ }
48
+ const target = args[0];
37
49
  const ctor = target;
38
50
  const inferred = typeName ?? ctor.name.replace(/Resolver$/, "");
39
51
  safeDefineMeta(RESOLVER_KEY, true, ctor);
40
52
  safeDefineMeta(TYPENAME_KEY, inferred, ctor);
41
- if (!safeHasMeta(FIELDS_KEY, ctor)) {
42
- safeDefineMeta(FIELDS_KEY, [], ctor);
43
- }
53
+ const fields = safeGetMeta(FIELDS_KEY, ctor.prototype);
54
+ _fieldStore.set(ctor, fields ?? []);
44
55
  _resolverRegistry.add(ctor);
45
56
  };
46
57
  }
@@ -65,8 +76,7 @@ function pushResolverField(target, field) {
65
76
  safeDefineMeta(FIELDS_KEY, list, t);
66
77
  }
67
78
  function getResolverFields(target) {
68
- const t = target.prototype ?? target;
69
- return safeGetMeta(FIELDS_KEY, t) ?? [];
79
+ return _fieldStore.get(target) ?? [];
70
80
  }
71
81
  function isResolverClass(target) {
72
82
  const t = target.prototype ?? target;
@@ -76,7 +86,13 @@ function isResolverClass(target) {
76
86
  import { safeGetMeta as safeGetMeta2, safeDefineMeta as safeDefineMeta2 } from "@nexusts/core/di/safe-reflect";
77
87
  var ARGS_KEY = Symbol.for("nexus:GraphQL:MethodArgs");
78
88
  function Arg(name, type = "String") {
79
- return (target, propertyKey, parameterIndex) => {
89
+ return (...args) => {
90
+ if (args.length >= 2 && (args[1]?.kind === "parameter" || args[1]?.kind === "method")) {
91
+ return;
92
+ }
93
+ const target = args[0];
94
+ const propertyKey = args[1];
95
+ const parameterIndex = args[2];
80
96
  if (propertyKey === undefined) {
81
97
  throw new Error("@Arg() can only decorate method parameters, not constructor parameters.");
82
98
  }
@@ -90,16 +106,43 @@ function getMethodArgs(target, propertyKey) {
90
106
  }
91
107
 
92
108
  // packages/graphql/src/decorators/query.ts
109
+ function buildArgs(argsMeta, optsArgs) {
110
+ if (argsMeta.length > 0) {
111
+ return argsMeta.sort((a, b) => a.index - b.index).map((a) => ({ name: a.name, type: a.type }));
112
+ }
113
+ if (optsArgs) {
114
+ return Object.entries(optsArgs).map(([n, t]) => ({ name: n, type: t }));
115
+ }
116
+ return [];
117
+ }
93
118
  function makeOperationDecorator(kind) {
94
119
  return function(name, opts) {
95
- return (target, propertyKey, _descriptor) => {
120
+ return (...args) => {
121
+ if (args.length >= 2 && args[1]?.kind === "method") {
122
+ const [_target, context] = args;
123
+ const methodName = context.name;
124
+ const meta = context.metadata;
125
+ const key = "nexus:GraphQL:Fields";
126
+ const arr = meta[key] ?? [];
127
+ arr.push({
128
+ propertyKey: methodName,
129
+ kind,
130
+ name: name ?? methodName,
131
+ returnTypeName: opts?.returns ?? "JSON",
132
+ args: buildArgs([], opts?.args)
133
+ });
134
+ meta[key] = arr;
135
+ return;
136
+ }
137
+ const target = args[0];
138
+ const propertyKey = args[1];
96
139
  const argsMeta = getMethodArgs(target, propertyKey);
97
140
  pushResolverField(target, {
98
141
  propertyKey: String(propertyKey),
99
142
  kind,
100
143
  name: name ?? String(propertyKey),
101
144
  returnTypeName: opts?.returns ?? "JSON",
102
- args: argsMeta.sort((a, b) => a.index - b.index).map((a) => ({ name: a.name, type: a.type }))
145
+ args: buildArgs(argsMeta, opts?.args)
103
146
  });
104
147
  };
105
148
  };
@@ -532,5 +575,5 @@ export {
532
575
  Arg
533
576
  };
534
577
 
535
- //# debugId=4EA3066900269E5664756E2164756E21
578
+ //# debugId=A6EA8E12C6FB5F9164756E2164756E21
536
579
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -2,14 +2,14 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/decorators/resolver.ts", "../src/decorators/arg.ts", "../src/decorators/query.ts", "../src/decorators/type-mapper.ts", "../src/graphql.service.ts", "../src/graphql.module.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * @Resolver(typeName?) decorator.\n *\n * Marks a class as a GraphQL resolver. The optional `typeName` argument\n * declares the GraphQL type this class is responsible for. If\n * omitted, the type name defaults to the class name (e.g.\n * `UserResolver` → type `User`).\n *\n * The framework's GraphQL scanner picks up every class with this\n * decorator and reads the field methods off it (decorators from\n * `./query.js`, `./mutation.js`, `./subscription.js`).\n *\n * @Resolver(\"User\")\n * class UserResolver {\n * @Query() me() { ... }\n * @Mutation() signup(@Arg(\"email\") e: string) { ... }\n * @Subscription() events() { ... }\n * }\n */\nimport type { ResolverClassRecord } from \"../types.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\nconst RESOLVER_KEY = Symbol.for(\"nexus:GraphQL:Resolver\");\nconst FIELDS_KEY = Symbol.for(\"nexus:GraphQL:Fields\");\nconst TYPENAME_KEY = Symbol.for(\"nexus:GraphQL:TypeName\");\n\n// Global registry of all @Resolver-decorated classes. Populated at\n// decorator evaluation time so the SDL synthesiser can enumerate them\n// without needing a separate scan pass.\nconst _resolverRegistry = new Set<Function>();\n\nexport function Resolver(typeName?: string): ClassDecorator {\n\treturn (target: Function) => {\n\t\tconst ctor = target as unknown as new (...args: any[]) => any;\n\t\tconst inferred = typeName ?? ctor.name.replace(/Resolver$/, \"\");\n\t\tsafeDefineMeta(RESOLVER_KEY, true, ctor);\n\t\tsafeDefineMeta(TYPENAME_KEY, inferred, ctor);\n\t\tif (!safeHasMeta(FIELDS_KEY, ctor)) {\n\t\t\tsafeDefineMeta(FIELDS_KEY, [], ctor);\n\t\t}\n\t\t_resolverRegistry.add(ctor);\n\t};\n}\n\n/** Return all classes decorated with `@Resolver`. */\nexport function getRegisteredResolvers(): Function[] {\n\treturn [..._resolverRegistry];\n}\n\n/** Remove all entries from the registry. Intended for use in tests only. */\nexport function clearResolverRegistry(): void {\n\t_resolverRegistry.clear();\n}\n\n/** Read the type-name this resolver is for. */\nexport function getResolverTypeName(target: object): string | undefined {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\tconst fromMeta = safeGetMeta(TYPENAME_KEY, t);\n\tif (fromMeta) return fromMeta as string;\n\t// Fallback: derive from the class name (drop \"Resolver\" suffix).\n\tconst ctor = (t as { constructor?: { name: string } }).constructor;\n\treturn ctor?.name.replace(/Resolver$/, \"\");\n}\n\n/** Append a field method to the resolver class's metadata. */\nexport function pushResolverField(\n\ttarget: object,\n\tfield: ResolverClassRecord[\"fields\"][number],\n): void {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\tconst list = (safeGetMeta(FIELDS_KEY, t) as ResolverClassRecord[\"fields\"]) ?? [];\n\tlist.push(field);\n\tsafeDefineMeta(FIELDS_KEY, list, t);\n}\n\n/** Read the field metadata for a resolver class. */\nexport function getResolverFields(target: object): ResolverClassRecord[\"fields\"] {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\treturn (safeGetMeta(FIELDS_KEY, t) as ResolverClassRecord[\"fields\"]) ?? [];\n}\n\n/** True if `target` was decorated with `@Resolver`. */\nexport function isResolverClass(target: object): boolean {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\treturn safeGetMeta(RESOLVER_KEY, t) === true;\n}\n",
6
- "/**\n * `@Arg(name, type?)` parameter decorator.\n *\n * Declares a method parameter as a GraphQL field argument. Used on\n * resolver methods marked with `@Query`/`@Mutation`/`@Subscription`.\n *\n * @Mutation()\n * updateProfile(\n * @Arg(\"name\") name: string,\n * @Arg(\"email\", \"String!\") email: string,\n * ) { ... }\n *\n * The optional `type` argument is the SDL type (e.g. `\"String!\"`,\n * `\"Int\"`, `\"[User!]!\"`). When omitted, the framework uses `\"String\"`\n * as a safe default — explicit is better than implicit.\n */\nimport { pushResolverField, getResolverTypeName } from \"./resolver.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\nconst ARGS_KEY = Symbol.for(\"nexus:GraphQL:MethodArgs\");\n\nexport function Arg(name: string, type: string = \"String\"): ParameterDecorator {\n\treturn (\n\t\ttarget: object,\n\t\tpropertyKey: string | symbol | undefined,\n\t\tparameterIndex: number,\n\t) => {\n\t\tif (propertyKey === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t\"@Arg() can only decorate method parameters, not constructor parameters.\",\n\t\t\t);\n\t\t}\n\t\tconst list = (safeGetMeta(ARGS_KEY, target, propertyKey) as\n\t\t\t| Array<{ name: string; type: string; index: number }>\n\t\t\t| undefined) ?? [];\n\t\tlist.push({ name, type, index: parameterIndex });\n\t\tsafeDefineMeta(ARGS_KEY, list, target, propertyKey);\n\t};\n}\n\n/** Read `@Arg` metadata for a specific method. */\nexport function getMethodArgs(\n\ttarget: object,\n\tpropertyKey: string | symbol,\n): Array<{ name: string; type: string; index: number }> {\n\treturn (safeGetMeta(ARGS_KEY, target, propertyKey) as\n\t\t| Array<{ name: string; type: string; index: number }>\n\t\t| undefined) ?? [];\n}\n",
7
- "/**\n * `@Query(name?)` / `@Mutation(name?)` / `@Subscription(name?)`\n *\n * Method decorators that mark a resolver method as a GraphQL operation.\n * The optional `name` argument overrides the field name in the schema\n * (defaults to the method name).\n *\n * @Resolver(\"User\")\n * class UserResolver {\n * @Query(\"currentUser\")\n * me() { return ctx.state.user; }\n *\n * @Mutation()\n * updateProfile(@Arg(\"name\") name: string) { ... }\n *\n * @Subscription()\n * events() { return pubsub.asyncIterator(\"EVENTS\"); }\n * }\n */\nimport { pushResolverField } from \"./resolver.js\";\nimport { getMethodArgs } from \"./arg.js\";\nimport type { ResolverClassRecord } from \"../types.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\ntype OperationKind = \"query\" | \"mutation\" | \"subscription\";\n\n/**\n * Common implementation. `decorator` is a factory the user calls as\n * `@Query(name?, opts?)` / `@Mutation(name?, opts?)` etc.\n *\n * `opts.returns` explicit GraphQL return type string, e.g. `\"String!\"`.\n * Defaults to `\"JSON\"` when omitted (safe fallback; set explicitly for\n * code-first schemas that use `autoSchema: true`).\n */\nfunction makeOperationDecorator(kind: OperationKind) {\n\treturn function (name?: string, opts?: { returns?: string }) {\n\t\treturn (\n\t\t\ttarget: object,\n\t\t\tpropertyKey: string | symbol,\n\t\t\t_descriptor: TypedPropertyDescriptor<any>,\n\t\t): void => {\n\t\t\tconst argsMeta = getMethodArgs(target, propertyKey);\n\t\t\tpushResolverField(target, {\n\t\t\t\tpropertyKey: String(propertyKey),\n\t\t\t\tkind,\n\t\t\t\tname: name ?? String(propertyKey),\n\t\t\t\treturnTypeName: opts?.returns ?? \"JSON\",\n\t\t\t\targs: argsMeta\n\t\t\t\t\t.sort((a, b) => a.index - b.index)\n\t\t\t\t\t.map((a) => ({ name: a.name, type: a.type })),\n\t\t\t});\n\t\t};\n\t};\n}\n\nexport const Query = makeOperationDecorator(\"query\");\nexport const Mutation = makeOperationDecorator(\"mutation\");\nexport const Subscription = makeOperationDecorator(\"subscription\");\n\n/** Public helper for the scanner. */\nexport type AnyField = ResolverClassRecord[\"fields\"][number];\n",
5
+ "/**\n * @Resolver(typeName?) decorator.\n *\n * Marks a class as a GraphQL resolver. The optional `typeName` argument\n * declares the GraphQL type this class is responsible for. If\n * omitted, the type name defaults to the class name (e.g.\n * `UserResolver` → type `User`).\n *\n * The framework's GraphQL scanner picks up every class with this\n * decorator and reads the field methods off it (decorators from\n * `./query.js`, `./mutation.js`, `./subscription.js`).\n *\n * @Resolver(\"User\")\n * class UserResolver {\n * @Query() me() { ... }\n * @Mutation() signup(@Arg(\"email\") e: string) { ... }\n * @Subscription() events() { ... }\n * }\n */\nimport type { ResolverClassRecord } from \"../types.js\";\nimport { safeGetMeta, safeDefineMeta } from \"@nexusts/core/di/safe-reflect\";\n\nconst RESOLVER_KEY = Symbol.for(\"nexus:GraphQL:Resolver\");\nconst FIELDS_KEY = Symbol.for(\"nexus:GraphQL:Fields\");\nconst TYPENAME_KEY = Symbol.for(\"nexus:GraphQL:TypeName\");\n\n// Global registry of all @Resolver-decorated classes. Populated at\n// decorator evaluation time so the SDL synthesiser can enumerate them\n// without needing a separate scan pass.\nconst _resolverRegistry = new Set<Function>();\n\n/** Module-level field storage — avoids safeDefineMeta fallback store issues. */\nconst _fieldStore = new Map<Function, ResolverClassRecord[\"fields\"]>();\n\nexport function Resolver(typeName?: string): any {\n\treturn (...args: any[]) => {\n\t\t// Standard decorator mode (TC39)\n\t\tif (args.length >= 2 && args[1]?.kind === \"class\") {\n\t\t\tconst [target, context] = args as [new (...a: any[]) => any, ClassDecoratorContext];\n\t\t\tconst inferred = typeName ?? target.name.replace(/Resolver$/, \"\");\n\t\t\tsafeDefineMeta(RESOLVER_KEY, true, target);\n\t\t\tsafeDefineMeta(TYPENAME_KEY, inferred, target);\n\t\t\t// Collect fields stored on shared context.metadata by @Query/@Mutation\n\t\t\tconst accumulated = (context.metadata as any)[\"nexus:GraphQL:Fields\"] as\n\t\t\t\t| ResolverClassRecord[\"fields\"]\n\t\t\t\t| undefined;\n\t\t\t_fieldStore.set(target, accumulated ?? []);\n\t\t\t_resolverRegistry.add(target);\n\t\t\treturn;\n\t\t}\n\t\t// Legacy decorator mode (experimentalDecorators)\n\t\tconst target = args[0] as Function;\n\t\tconst ctor = target as unknown as new (...args: any[]) => any;\n\t\tconst inferred = typeName ?? ctor.name.replace(/Resolver$/, \"\");\n\t\tsafeDefineMeta(RESOLVER_KEY, true, ctor);\n\t\tsafeDefineMeta(TYPENAME_KEY, inferred, ctor);\n\t\t// Read fields stored by pushResolverField on the prototype\n\t\tconst fields = safeGetMeta(FIELDS_KEY, ctor.prototype) as ResolverClassRecord[\"fields\"] | undefined;\n\t\t_fieldStore.set(ctor, fields ?? []);\n\t\t_resolverRegistry.add(ctor);\n\t};\n}\n\n/** Return all classes decorated with `@Resolver`. */\nexport function getRegisteredResolvers(): Function[] {\n\treturn [..._resolverRegistry];\n}\n\n/** Remove all entries from the registry. Intended for use in tests only. */\nexport function clearResolverRegistry(): void {\n\t_resolverRegistry.clear();\n}\n\n/** Read the type-name this resolver is for. */\nexport function getResolverTypeName(target: object): string | undefined {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\tconst fromMeta = safeGetMeta(TYPENAME_KEY, t);\n\tif (fromMeta) return fromMeta as string;\n\t// Fallback: derive from the class name (drop \"Resolver\" suffix).\n\tconst ctor = (t as { constructor?: { name: string } }).constructor;\n\treturn ctor?.name.replace(/Resolver$/, \"\");\n}\n\n/** Append a field method to the resolver class's metadata. */\nexport function pushResolverField(\n\ttarget: object,\n\tfield: ResolverClassRecord[\"fields\"][number],\n): void {\n\t// Legacy mode: store via safeDefineMeta on the prototype\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\tconst list = (safeGetMeta(FIELDS_KEY, t) as ResolverClassRecord[\"fields\"]) ?? [];\n\tlist.push(field);\n\tsafeDefineMeta(FIELDS_KEY, list, t);\n}\n\n/** Read the field metadata for a resolver class. */\nexport function getResolverFields(target: Function): ResolverClassRecord[\"fields\"] {\n\treturn _fieldStore.get(target) ?? [];\n}\n\n/** True if `target` was decorated with `@Resolver`. */\nexport function isResolverClass(target: object): boolean {\n\tconst t = (target as { prototype?: object }).prototype ?? target;\n\treturn safeGetMeta(RESOLVER_KEY, t) === true;\n}\n",
6
+ "/**\n * `@Arg(name, type?)` parameter decorator.\n *\n * Declares a method parameter as a GraphQL field argument. Used on\n * resolver methods marked with `@Query`/`@Mutation`/`@Subscription`.\n *\n * @Mutation()\n * updateProfile(\n * @Arg(\"name\") name: string,\n * @Arg(\"email\", \"String!\") email: string,\n * ) { ... }\n *\n * The optional `type` argument is the SDL type (e.g. `\"String!\"`,\n * `\"Int\"`, `\"[User!]!\"`). When omitted, the framework uses `\"String\"`\n * as a safe default — explicit is better than implicit.\n */\nimport { pushResolverField, getResolverTypeName } from \"./resolver.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\nconst ARGS_KEY = Symbol.for(\"nexus:GraphQL:MethodArgs\");\n\nexport function Arg(name: string, type: string = \"String\"): any {\n\treturn (...args: any[]): void => {\n\t\t// Standard decorator mode: parameter decorators don't exist in TC39 stage-3.\n\t\t// @Arg is a no-op in standard mode; argument metadata should be provided\n\t\t// via @Query/@Mutation options or explicit SDL syntax.\n\t\tif (args.length >= 2 && (args[1]?.kind === \"parameter\" || args[1]?.kind === \"method\")) {\n\t\t\treturn;\n\t\t}\n\t\t// Legacy decorator mode (experimentalDecorators)\n\t\tconst target = args[0] as object;\n\t\tconst propertyKey = args[1] as string | symbol | undefined;\n\t\tconst parameterIndex = args[2] as number;\n\t\tif (propertyKey === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t\"@Arg() can only decorate method parameters, not constructor parameters.\",\n\t\t\t);\n\t\t}\n\t\tconst list = (safeGetMeta(ARGS_KEY, target, propertyKey) as\n\t\t\t| Array<{ name: string; type: string; index: number }>\n\t\t\t| undefined) ?? [];\n\t\tlist.push({ name, type, index: parameterIndex });\n\t\tsafeDefineMeta(ARGS_KEY, list, target, propertyKey);\n\t};\n}\n\n/** Read `@Arg` metadata for a specific method. */\nexport function getMethodArgs(\n\ttarget: object,\n\tpropertyKey: string | symbol,\n): Array<{ name: string; type: string; index: number }> {\n\treturn (safeGetMeta(ARGS_KEY, target, propertyKey) as\n\t\t| Array<{ name: string; type: string; index: number }>\n\t\t| undefined) ?? [];\n}\n",
7
+ "/**\n * `@Query(name?)` / `@Mutation(name?)` / `@Subscription(name?)`\n *\n * Method decorators that mark a resolver method as a GraphQL operation.\n * The optional `name` argument overrides the field name in the schema\n * (defaults to the method name).\n *\n * In standard decorator mode (TC39), argument types are provided via\n * `opts.args` instead of `@Arg()` parameter decorators:\n *\n * @Resolver()\n * class UserResolver {\n * @Query(\"hello\", { returns: \"String!\", args: { name: \"String!\" } })\n * hello(name: string): string { ... }\n * }\n *\n * In legacy mode, `@Arg()` parameter decorator continues to work.\n */\nimport { pushResolverField } from \"./resolver.js\";\nimport { getMethodArgs } from \"./arg.js\";\nimport type { ResolverClassRecord } from \"../types.js\";\n\ntype OperationKind = \"query\" | \"mutation\" | \"subscription\";\n\nexport interface OperationOptions {\n\treturns?: string;\n\targs?: Record<string, string>;\n}\n\n/** Build args array from legacy @Arg metadata or opts.args. */\nfunction buildArgs(\n\targsMeta: Array<{ name: string; type: string; index: number }>,\n\toptsArgs?: Record<string, string>,\n): Array<{ name: string; type: string }> {\n\tif (argsMeta.length > 0) {\n\t\treturn argsMeta.sort((a, b) => a.index - b.index).map((a) => ({ name: a.name, type: a.type }));\n\t}\n\tif (optsArgs) {\n\t\treturn Object.entries(optsArgs).map(([n, t]) => ({ name: n, type: t }));\n\t}\n\treturn [];\n}\n\nfunction makeOperationDecorator(kind: OperationKind) {\n\treturn function (name?: string, opts?: OperationOptions) {\n\t\treturn (...args: any[]): void => {\n\t\t\t// ── Standard decorator mode (TC39) ──\n\t\t\tif (args.length >= 2 && args[1]?.kind === \"method\") {\n\t\t\t\tconst [_target, context] = args as [object, DecoratorContext];\n\t\t\t\tconst methodName = context.name as string;\n\t\t\t\tconst meta = context.metadata as Record<string, any>;\n\t\t\t\tconst key = \"nexus:GraphQL:Fields\";\n\t\t\t\tconst arr: ResolverClassRecord[\"fields\"] = meta[key] ?? [];\n\t\t\t\tarr.push({\n\t\t\t\t\tpropertyKey: methodName,\n\t\t\t\t\tkind,\n\t\t\t\t\tname: name ?? methodName,\n\t\t\t\t\treturnTypeName: opts?.returns ?? \"JSON\",\n\t\t\t\t\targs: buildArgs([], opts?.args),\n\t\t\t\t});\n\t\t\t\tmeta[key] = arr;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// ── Legacy decorator mode (experimentalDecorators) ──\n\t\t\tconst target = args[0] as object;\n\t\t\tconst propertyKey = args[1] as string | symbol;\n\t\t\tconst argsMeta = getMethodArgs(target, propertyKey);\n\t\t\tpushResolverField(target, {\n\t\t\t\tpropertyKey: String(propertyKey),\n\t\t\t\tkind,\n\t\t\t\tname: name ?? String(propertyKey),\n\t\t\t\treturnTypeName: opts?.returns ?? \"JSON\",\n\t\t\t\targs: buildArgs(argsMeta, opts?.args),\n\t\t\t});\n\t\t};\n\t};\n}\n\nexport const Query = makeOperationDecorator(\"query\");\nexport const Mutation = makeOperationDecorator(\"mutation\");\nexport const Subscription = makeOperationDecorator(\"subscription\");\n\n/** Public helper for the scanner. */\nexport type AnyField = ResolverClassRecord[\"fields\"][number];\n",
8
8
  "/**\n * Maps TypeScript primitive type names to their GraphQL scalar equivalents.\n *\n * Bun does not emit `design:returntype`/`design:paramtypes` metadata, so\n * full automatic type inference is unavailable. Users supply type strings\n * explicitly via `@Query(\"field\", { returns: \"String!\" })` or\n * `@Arg(\"arg\", \"Int!\")`. This utility normalises common TypeScript aliases\n * to their canonical GraphQL scalar names.\n */\nconst TS_TO_GQL: Record<string, string> = {\n\tstring: \"String\",\n\tnumber: \"Float\",\n\tint: \"Int\",\n\tfloat: \"Float\",\n\tboolean: \"Boolean\",\n\tbool: \"Boolean\",\n\tid: \"ID\",\n};\n\n/**\n * Normalise a raw type string to its GraphQL scalar name.\n *\n * - Known TypeScript aliases are converted: `string` → `String`, etc.\n * - Unknown types (user-defined object types) are returned unchanged.\n * - Non-null (`!`) suffixes and list (`[...]`) wrappers are preserved.\n *\n * @example\n * normalizeGQLType(\"string\") // \"String\"\n * normalizeGQLType(\"string!\") // \"String!\"\n * normalizeGQLType(\"[int!]!\") // \"[Int!]!\"\n * normalizeGQLType(\"String!\") // \"String!\" (already canonical — unchanged)\n * normalizeGQLType(\"User\") // \"User\" (user-defined type — unchanged)\n */\nexport function normalizeGQLType(raw: string): string {\n\tconst nonNull = raw.endsWith(\"!\");\n\tconst base = nonNull ? raw.slice(0, -1) : raw;\n\tconst trimmed = base.trim();\n\n\tif (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\")) {\n\t\tconst inner = trimmed.slice(1, -1);\n\t\treturn `[${normalizeGQLType(inner)}]${nonNull ? \"!\" : \"\"}`;\n\t}\n\n\tconst mapped = TS_TO_GQL[trimmed.toLowerCase()];\n\treturn (mapped ?? trimmed) + (nonNull ? \"!\" : \"\");\n}\n",
9
9
  "/**\n * `GraphQLService` — owns the parsed schema, resolver map, and an\n * end-to-end executor.\n *\n * Most users won't instantiate this directly — they use\n * `GraphQLModule.forRoot({ typeDefs, resolvers, ... })` which puts\n * a singleton service into the DI container. The service is also\n * exported for advanced users (programmatic queries, schema\n * introspection, custom executors).\n *\n * The actual `parse` / `validate` / `execute` calls go to\n * `graphql` (a peer-dep). If the user hasn't installed it, we\n * throw a clear error from the first attempt.\n */\nimport type {\n\tGraphQLConfig,\n\tGraphQLContext,\n\tGraphQLExecutionResult,\n\tFieldResolver,\n\tResolverMap,\n} from \"./types.js\";\nimport { getRegisteredResolvers, getResolverFields } from \"./decorators/index.js\";\nimport { normalizeGQLType } from \"./decorators/type-mapper.js\";\nimport { safeGetMeta, safeDefineMeta, safeHasMeta } from \"@nexusts/core/di/safe-reflect\";\n\ninterface GraphQLJs {\n\tparse: (s: string) => unknown;\n\tbuildSchema: (sdl: string) => unknown;\n\tvalidate: (schema: unknown, doc: unknown, rules?: unknown) => unknown[];\n\t// graphql 16 takes positional args; graphql 17 takes a single\n\t// object. We always call it with the 16-style positional args\n\t// (so we wrap a `buildSchema` schema, not the resolver-builder\n\t// schema), but the type reflects both possibilities.\n\texecute: (...args: any[]) => Promise<GraphQLExecutionResult> | GraphQLExecutionResult;\n\tspecifiedRules?: unknown;\n\tgetOperationAST?: (doc: unknown, operationName?: string) => unknown;\n\tGraphQLSchema: unknown;\n\tGraphQLObjectType: unknown;\n\tGraphQLString: unknown;\n\tGraphQLNonNull: unknown;\n\tGraphQLList: unknown;\n\tGraphQLInt: unknown;\n\tGraphQLFloat: unknown;\n\tGraphQLBoolean: unknown;\n\tGraphQLID: unknown;\n\tGraphQLError: unknown;\n\tGraphQLScalarType: unknown;\n\tparseType: (s: string) => unknown;\n\tGraphQLSchemaConfig: unknown;\n}\n\nlet _graphql: GraphQLJs | null = null;\nlet _loadAttempted = false;\n\n/** Lazy-load the `graphql` package. Throws a clear error if missing. */\nexport async function loadGraphQLJs(): Promise<GraphQLJs> {\n\tif (_graphql) return _graphql;\n\tif (_loadAttempted) {\n\t\tthrow new Error(\n\t\t\t\"[@nexusts/graphql] The optional `graphql` package failed to load. \" +\n\t\t\t\t\"Install it with `bun add graphql` to use the GraphQL module.\",\n\t\t);\n\t}\n\t_loadAttempted = true;\n\ttry {\n\t\tconst mod = (await import(\"graphql\")) as unknown as GraphQLJs;\n\t\t_graphql = mod;\n\t\treturn mod;\n\t} catch (err) {\n\t\tthrow new Error(\n\t\t\t\"[@nexusts/graphql] The `graphql` package is required for execution. \" +\n\t\t\t\t\"Install it with `bun add graphql`. \" +\n\t\t\t\t\"Original error: \" + (err as Error).message,\n\t\t);\n\t}\n}\n\nexport class GraphQLService {\n\t/** The raw config the module was booted with. */\n\treadonly config: GraphQLConfig;\n\t/** Optional DI handle. */\n\tstatic readonly TOKEN = Symbol.for(\"nexus:GraphQL\");\n\n\tconstructor(config: GraphQLConfig = {}) {\n\t\tthis.config = {\n\t\t\tplayground: \"graphiql\",\n\t\t\tendpoint: { path: \"/graphql\", enableGet: true },\n\t\t\texposeSchemaSDL: true,\n\t\t\tintrospection: true,\n\t\t\t...config,\n\t\t};\n\t}\n\n\tprivate _schema: any = null;\n\tprivate _resolvers: ResolverMap = {};\n\tprivate _bootstrapPromise: Promise<void> | null = null;\n\n\t/**\n\t * Register a resolver map (or add to the existing one). Safe to\n\t * call multiple times — the maps are merged.\n\t */\n\taddResolvers(map: ResolverMap): void {\n\t\tfor (const [typeName, fields] of Object.entries(map)) {\n\t\t\tthis._resolvers[typeName] = {\n\t\t\t\t...this._resolvers[typeName],\n\t\t\t\t...fields,\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate async _buildSchema(sdl: string[]): Promise<any> {\n\t\tconst g = await loadGraphQLJs();\n\t\tconst merged = this.mergeSDLWithDecorators(sdl);\n\t\t// graphql-js's `buildSchema` produces a `GraphQLSchema` whose\n\t\t// fields' `resolve` is `undefined` by default — graphql-js's\n\t\t// execution layer looks up fields on the parent object in\n\t\t// that case. To wire our `ResolverMap`, we set each field's\n\t\t// `resolve` directly. This works for graphql 16 and 17.\n\t\tconst schema = (g.buildSchema as Function)(merged);\n\t\t// Deep-merge resolver maps: auto-wired < addResolvers() < config.resolvers.\n\t\t// Shallow spread would clobber an entire type object (e.g. the Query key)\n\t\t// when two sources contribute fields to the same type.\n\t\tconst autoWired = this.config.autoSchema ? this._autoWireResolvers() : {};\n\t\tconst final = mergeResolverMaps(autoWired, this._resolvers, this.config.resolvers ?? {});\n\t\twrapSchemaWithResolvers(schema, final);\n\t\treturn schema;\n\t}\n\n\t/**\n\t * Instantiate each registered `@Resolver` class and map its `@Query` /\n\t * `@Mutation` / `@Subscription` methods into a `ResolverMap`.\n\t *\n\t * For methods decorated with `@Arg`, positional arguments are extracted\n\t * from the graphql-js `args` object by name and forwarded positionally.\n\t * For methods without `@Arg`, the standard graphql-js 4-tuple\n\t * `(parent, args, ctx, info)` is passed through unchanged.\n\t */\n\tprivate _autoWireResolvers(): ResolverMap {\n\t\tconst map: ResolverMap = {};\n\t\tfor (const resolverClass of getRegisteredResolvers()) {\n\t\t\tconst fields = getResolverFields(resolverClass);\n\t\t\tconst instance = new (resolverClass as any)();\n\t\t\tfor (const f of fields) {\n\t\t\t\tlet typeName: string;\n\t\t\t\tif (f.kind === \"query\") typeName = \"Query\";\n\t\t\t\telse if (f.kind === \"mutation\") typeName = \"Mutation\";\n\t\t\t\telse typeName = \"Subscription\";\n\n\t\t\t\tif (!map[typeName]) map[typeName] = {};\n\n\t\t\t\tconst method = (instance as any)[f.propertyKey];\n\t\t\t\tif (typeof method !== \"function\") continue;\n\n\t\t\t\tconst argNames = f.args.map((a) => a.name);\n\t\t\t\tif (argNames.length === 0) {\n\t\t\t\t\t// No @Arg — pass graphql-js 4-tuple as-is.\n\t\t\t\t\tmap[typeName][f.name] = (parent: any, args: any, ctx: any, info: any) =>\n\t\t\t\t\t\tmethod.call(instance, parent, args, ctx, info);\n\t\t\t\t} else {\n\t\t\t\t\t// @Arg present — extract each value from the args object by\n\t\t\t\t\t// name and call the method with positional parameters.\n\t\t\t\t\tmap[typeName][f.name] = (_parent: any, args: any) => {\n\t\t\t\t\t\tconst positional = argNames.map((n) => args[n]);\n\t\t\t\t\t\treturn method.call(instance, ...positional);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\n\t/**\n\t * Build (or rebuild) the underlying GraphQL schema. Idempotent.\n\t * Returns the `graphql` schema instance.\n\t */\n\tasync ensureSchema(): Promise<any> {\n\t\tif (this._schema) return this._schema;\n\t\tif (this._bootstrapPromise) return this._bootstrapPromise.then(() => this._schema);\n\t\tthis._bootstrapPromise = (async () => {\n\t\t\tconst sdl = this.normaliseTypeDefs(this.config.typeDefs);\n\t\t\tconst autoSchema = this.config.autoSchema ?? false;\n\t\t\tconst hasResolvers = getRegisteredResolvers().length > 0;\n\n\t\t\tif (sdl.length === 0 && !autoSchema && !hasResolvers) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"[@nexusts/graphql] No typeDefs configured. \" +\n\t\t\t\t\t\t\"Pass `typeDefs: '...'` to GraphQLModule.forRoot(), \" +\n\t\t\t\t\t\t\"or set `autoSchema: true` and use `@Resolver` + `@Query` / `@Mutation` decorators.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._schema = await this._buildSchema(sdl);\n\t\t})();\n\t\tawait this._bootstrapPromise;\n\t\treturn this._schema;\n\t}\n\n\t/**\n\t * Validate + execute a GraphQL document. Returns the raw\n\t * `execute()` result envelope (data, errors, extensions).\n\t */\n\tasync execute(\n\t\tsource: string,\n\t\tvariableValues: Record<string, unknown> = {},\n\t\toperationName?: string,\n\t\tcontextValue?: GraphQLContext,\n\t): Promise<GraphQLExecutionResult> {\n\t\tconst g = await loadGraphQLJs();\n\t\tconst schema = await this.ensureSchema();\n\t\tconst document = (g.parse as Function)(source);\n\t\tconst errors = (g.validate as Function)(schema, document, g.specifiedRules) as unknown[];\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors: (errors as any[]).map((e: any) => ({\n\t\t\t\t\tmessage: e.message,\n\t\t\t\t\tlocations: e.locations,\n\t\t\t\t})),\n\t\t\t};\n\t\t}\n\t\t// If the user didn't pass a context and the service has a\n\t\t// `context()` factory, build a synthetic context (with a\n\t\t// stub Hono ctx) so resolvers that depend on `ctx.state` work\n\t\t// in `execute()` calls outside of an HTTP request.\n\t\tlet ctx = contextValue;\n\t\tif (!ctx && this.config.context) {\n\t\t\tconst fakeHono = { req: { url: \"\", method: \"EXECUTE\", header: () => \"\" } };\n\t\t\tctx = {\n\t\t\t\thono: fakeHono as any,\n\t\t\t\tstate: await this.config.context(fakeHono as any),\n\t\t\t};\n\t\t}\n\t\tconst rootValue = undefined;\n\t\treturn await (g.execute as any)({\n\t\t\tschema,\n\t\t\tdocument,\n\t\t\trootValue,\n\t\t\tcontextValue: ctx,\n\t\t\tvariableValues,\n\t\t\toperationName,\n\t\t});\n\t}\n\n\t/**\n\t * Produce a `GraphQLContext` from an inbound Hono request.\n\t * Calls the user's `context()` factory if provided.\n\t */\n\tasync buildContext(c: any): Promise<GraphQLContext> {\n\t\tconst state = this.config.context\n\t\t\t? await this.config.context(c)\n\t\t\t: {};\n\t\treturn { hono: c, state };\n\t}\n\n\t/**\n\t * Read the parsed SDL back as a string. Useful for the\n\t * `/graphql/schema` debug endpoint and for tests.\n\t */\n\tgetSchemaSDL(): string {\n\t\treturn this.normaliseTypeDefs(this.config.typeDefs).join(\"\\n\");\n\t}\n\n\tprivate normaliseTypeDefs(td?: string | string[]): string[] {\n\t\tif (!td) return [];\n\t\treturn Array.isArray(td) ? td : [td];\n\t}\n\n\t/**\n\t * Synthesise SDL snippets from `@Resolver` / `@Query` / `@Mutation` /\n\t * `@Subscription` decorator metadata and merge them with any\n\t * user-supplied `typeDefs`.\n\t *\n\t * - If the user's SDL already defines `type Query`, decorator-added\n\t * fields are appended with `extend type Query { ... }` to avoid\n\t * duplicate-type errors.\n\t * - Unknown return types or argument types are passed through as-is\n\t * (they are treated as user-defined object types).\n\t */\n\tprivate mergeSDLWithDecorators(sdl: string[]): string {\n\t\tconst registered = getRegisteredResolvers();\n\t\tif (registered.length === 0) return sdl.join(\"\\n\");\n\n\t\tconst queryFields: string[] = [];\n\t\tconst mutationFields: string[] = [];\n\t\tconst subscriptionFields: string[] = [];\n\n\t\tfor (const resolverClass of registered) {\n\t\t\tconst fields = getResolverFields(resolverClass);\n\t\t\tfor (const f of fields) {\n\t\t\t\tconst argStr =\n\t\t\t\t\tf.args.length > 0\n\t\t\t\t\t\t? `(${f.args.map((a) => `${a.name}: ${normalizeGQLType(a.type)}`).join(\", \")})`\n\t\t\t\t\t\t: \"\";\n\t\t\t\tconst line = ` ${f.name}${argStr}: ${normalizeGQLType(f.returnTypeName)}`;\n\t\t\t\tif (f.kind === \"query\") queryFields.push(line);\n\t\t\t\telse if (f.kind === \"mutation\") mutationFields.push(line);\n\t\t\t\telse if (f.kind === \"subscription\") subscriptionFields.push(line);\n\t\t\t}\n\t\t}\n\n\t\tconst userSDL = sdl.join(\"\\n\");\n\t\tconst generated: string[] = [];\n\n\t\tif (queryFields.length > 0) {\n\t\t\tconst keyword = /type\\s+Query\\s*\\{/.test(userSDL) ? \"extend type\" : \"type\";\n\t\t\tgenerated.push(`${keyword} Query {\\n${queryFields.join(\"\\n\")}\\n}`);\n\t\t}\n\t\tif (mutationFields.length > 0) {\n\t\t\tconst keyword = /type\\s+Mutation\\s*\\{/.test(userSDL) ? \"extend type\" : \"type\";\n\t\t\tgenerated.push(`${keyword} Mutation {\\n${mutationFields.join(\"\\n\")}\\n}`);\n\t\t}\n\t\tif (subscriptionFields.length > 0) {\n\t\t\tconst keyword = /type\\s+Subscription\\s*\\{/.test(userSDL) ? \"extend type\" : \"type\";\n\t\t\tgenerated.push(`${keyword} Subscription {\\n${subscriptionFields.join(\"\\n\")}\\n}`);\n\t\t}\n\n\t\treturn [userSDL, ...generated].filter(Boolean).join(\"\\n\");\n\t}\n}\n\n/** Deep-merge multiple `ResolverMap`s. Later entries win at the field level. */\nfunction mergeResolverMaps(...maps: ResolverMap[]): ResolverMap {\n\tconst result: ResolverMap = {};\n\tfor (const map of maps) {\n\t\tfor (const [typeName, fields] of Object.entries(map)) {\n\t\t\tresult[typeName] = { ...result[typeName], ...fields };\n\t\t}\n\t}\n\treturn result;\n}\n\n/**\n * Wrap a parsed schema with the user's resolver map. graphql-js's\n * `buildSchema` produces a schema with default resolvers (which look\n * up fields on the `rootValue`). For our use case, we want field-level\n * resolvers that pull from the registered `ResolverMap`.\n */\nfunction wrapSchemaWithResolvers(schema: any, resolvers: ResolverMap): any {\n\t// graphql-js schemas are immutable. We replace the resolver map\n\t// via a tiny proxy: when a field is queried, graphql-js's default\n\t// resolver calls our `defaultFieldResolver` (which simply looks\n\t// up the value in the parent). To wire our resolvers, we set\n\t// each field's `resolve` to the entry from the resolver map.\n\tconst typeMap = schema.getTypeMap?.() ?? {};\n\tfor (const [typeName, fields] of Object.entries(resolvers)) {\n\t\tconst type = typeMap[typeName];\n\t\tif (!type || typeof type.getFields !== \"function\") continue;\n\t\tconst fieldMap = type.getFields();\n\t\tfor (const [fieldName, resolver] of Object.entries(fields)) {\n\t\t\tconst field = fieldMap[fieldName];\n\t\t\tif (!field) continue;\n\t\t\tconst fn: FieldResolver =\n\t\t\t\ttypeof resolver === \"function\"\n\t\t\t\t\t? (resolver as FieldResolver)\n\t\t\t\t\t: ((resolver as { resolve: FieldResolver }).resolve as FieldResolver);\n\t\t\tfield.resolve = function (parent: any, args: any, ctx: any, info: any) {\n\t\t\t\treturn fn(parent, args, ctx, info);\n\t\t\t};\n\t\t}\n\t}\n\treturn schema;\n}\n",
10
10
  "/**\n * `GraphQLModule` — drop-in GraphQL endpoint.\n *\n * @Module({\n * imports: [\n * GraphQLModule.forRoot({\n * typeDefs: `\n * type Query { hello: String! }\n * `,\n * resolvers: {\n * Query: {\n * hello: () => \"world\",\n * },\n * },\n * }),\n * ],\n * })\n * export class AppModule {}\n *\n * After boot, the framework exposes:\n *\n * POST /graphql — queries + mutations\n * GET /graphql — GraphiQL UI (or a query, if `?query=...` is set)\n * GET /graphql/schema — the schema as SDL (debug)\n *\n * Resolvers can also be declared via the `@Resolver` + `@Query` /\n * `@Mutation` / `@Subscription` decorators — see the user guide.\n */\nimport type { Context } from \"hono\";\nimport { Module } from \"@nexusts/core\";\nimport { GraphQLService } from \"./graphql.service.js\";\nimport type { GraphQLConfig } from \"./types.js\";\nimport { safeGetMeta } from \"@nexusts/core/di/safe-reflect\";\n\n@Module({\n\tproviders: [\n\t\tGraphQLService,\n\t\t{ provide: GraphQLService.TOKEN, useExisting: GraphQLService },\n\t],\n\texports: [GraphQLService, GraphQLService.TOKEN],\n})\nexport class GraphQLModule {\n\tstatic forRoot(config: GraphQLConfig) {\n\t\tconst factory = () => new GraphQLService(config);\n\t\t@Module({\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: GraphQLService.TOKEN,\n\t\t\t\t\tuseFactory: factory,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tprovide: GraphQLService,\n\t\t\t\t\tuseFactory: factory,\n\t\t\t\t},\n\t\t\t\t{ provide: \"GRAPHQL_CONFIG\", useValue: config },\n\t\t\t],\n\t\t\texports: [GraphQLService, GraphQLService.TOKEN],\n\t\t})\n\t\tclass ConfiguredGraphQLModule {}\n\t\tObject.defineProperty(ConfiguredGraphQLModule, \"name\", {\n\t\t\tvalue: \"ConfiguredGraphQLModule\",\n\t\t});\n\t\treturn ConfiguredGraphQLModule;\n\t}\n\n\t/**\n\t * Manually mount the GraphQL endpoint onto a Hono-compatible app.\n\t * Used by `main.ts` setups that don't go through `@Module`.\n\t */\n\tstatic async mount(\n\t\tapp: {\n\t\t\tpost: (path: string, ...h: any[]) => any;\n\t\t\tget: (path: string, ...h: any[]) => any;\n\t\t\tuse: (path: string, ...h: any[]) => any;\n\t\t},\n\t\tsvc: GraphQLService,\n\t): Promise<void> {\n\t\tconst path = svc.config.endpoint?.path ?? \"/graphql\";\n\t\tconst enableGet = svc.config.endpoint?.enableGet ?? true;\n\t\tconst exposeSDL = svc.config.exposeSchemaSDL ?? true;\n\t\tconst playground = svc.config.playground ?? \"graphiql\";\n\n\t\t// POST /graphql — queries + mutations.\n\t\tapp.post(path, async (c: Context) => {\n\t\t\tconst body = await readRequestBody(c);\n\t\t\tconst ctx = await svc.buildContext(c);\n\t\t\tconst result = await svc.execute(\n\t\t\t\tbody.query,\n\t\t\t\tparseJSONField(body.variables) ?? {},\n\t\t\t\tbody.operationName || undefined,\n\t\t\t\tctx,\n\t\t\t);\n\t\t\treturn c.json(result, statusFor(result) as any);\n\t\t});\n\n\t\t// GET /graphql — playground / pre-baked query (?query=...&variables=...).\n\t\tif (enableGet) {\n\t\t\tapp.get(path, async (c: Context) => {\n\t\t\t\tconst query = c.req.query(\"query\");\n\t\t\t\tif (!query) {\n\t\t\t\t\tif (playground === \"none\") {\n\t\t\t\t\t\treturn c.text(\"GraphQL endpoint. Pass ?query=... for a pre-baked query.\", 200);\n\t\t\t\t\t}\n\t\t\t\t\treturn c.html(graphiqlHtml({ endpoint: path }), 200, {\n\t\t\t\t\t\t\"Content-Type\": \"text/html; charset=utf-8\",\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst ctx = await svc.buildContext(c);\n\t\t\t\tconst result = await svc.execute(\n\t\t\t\t\tquery,\n\t\t\t\t\tparseJSONField(c.req.query(\"variables\") ?? \"\") ?? {},\n\t\t\t\t\tc.req.query(\"operationName\") ?? undefined,\n\t\t\t\t\tctx,\n\t\t\t\t);\n\t\t\t\treturn c.json(result, statusFor(result) as any);\n\t\t\t});\n\t\t}\n\n\t\t// GET /graphql/schema — debug: print the raw SDL.\n\t\tif (exposeSDL) {\n\t\t\tapp.get(`${path}/schema`, (c: Context) => {\n\t\t\t\treturn c.text(svc.getSchemaSDL(), 200, {\n\t\t\t\t\t\"Content-Type\": \"text/plain; charset=utf-8\",\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t// Force schema bootstrap so the first request isn't slow.\n\t\tawait svc.ensureSchema();\n\t}\n}\n\n/** Read a GraphQL request body. Accepts JSON or form-urlencoded. */\nasync function readRequestBody(\n\tc: Context,\n): Promise<{ query: string; variables: string; operationName: string }> {\n\tconst ct = c.req.header(\"content-type\") ?? \"\";\n\tif (ct.includes(\"application/json\")) {\n\t\ttry {\n\t\t\tconst j = await c.req.json() as Record<string, unknown>;\n\t\t\treturn {\n\t\t\t\tquery: String(j.query ?? \"\"),\n\t\t\t\tvariables: j.variables ? JSON.stringify(j.variables) : \"\",\n\t\t\t\toperationName: j.operationName ? String(j.operationName) : \"\",\n\t\t\t};\n\t\t} catch {\n\t\t\treturn { query: \"\", variables: \"\", operationName: \"\" };\n\t\t}\n\t}\n\tif (ct.includes(\"application/x-www-form-urlencoded\")) {\n\t\tconst text = await c.req.text();\n\t\tconst params = new URLSearchParams(text);\n\t\treturn {\n\t\t\tquery: params.get(\"query\") ?? \"\",\n\t\t\tvariables: params.get(\"variables\") ?? \"\",\n\t\t\toperationName: params.get(\"operationName\") ?? \"\",\n\t\t};\n\t}\n\t// Default: assume form-urlencoded.\n\tconst text = await c.req.text();\n\tconst params = new URLSearchParams(text);\n\treturn {\n\t\tquery: params.get(\"query\") ?? \"\",\n\t\tvariables: params.get(\"variables\") ?? \"\",\n\t\toperationName: params.get(\"operationName\") ?? \"\",\n\t};\n}\n\nfunction parseJSONField(raw: string): Record<string, unknown> | undefined {\n\tif (!raw) return undefined;\n\ttry {\n\t\tconst parsed = JSON.parse(raw);\n\t\tif (parsed && typeof parsed === \"object\") {\n\t\t\treturn parsed as Record<string, unknown>;\n\t\t}\n\t} catch {\n\t\t/* fall through */\n\t}\n\treturn undefined;\n}\n\nfunction statusFor(result: { errors?: unknown[]; data?: unknown }): number {\n\tif (result.errors && (result.errors as unknown[]).length > 0 && !result.data) return 400;\n\treturn 200;\n}\n\n/** Minimal GraphiQL HTML — single-page, no CDN, no external assets. */\nfunction graphiqlHtml(opts: { endpoint: string }): string {\n\treturn `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <title>GraphiQL</title>\n <style>\n body { font-family: system-ui, sans-serif; margin: 0; padding: 1em; }\n pre { background: #f5f5f5; padding: 0.6em; border-radius: 4px; overflow: auto; }\n .row { display: flex; gap: 1em; }\n textarea { width: 100%; min-height: 8em; font-family: ui-monospace, monospace; }\n button { padding: 0.4em 0.8em; }\n </style>\n</head>\n<body>\n <h2>GraphiQL (lightweight)</h2>\n <p>POST <code>${opts.endpoint}</code> · this is a no-deps playground built into\n <code>@nexusts/graphql</code>. For the full GraphiQL\n experience, see <code>graphiql</code> on npm.</p>\n <div class=\"row\">\n <textarea id=\"q\" placeholder=\"query { hello }\">{ hello }</textarea>\n </div>\n <p><button id=\"run\">Run</button> <span id=\"status\"></span></p>\n <pre id=\"out\"></pre>\n <script>\n const $q = document.getElementById(\"q\");\n const $out = document.getElementById(\"out\");\n const $status = document.getElementById(\"status\");\n document.getElementById(\"run\").onclick = async () => {\n $status.textContent = \"running…\";\n $out.textContent = \"\";\n const res = await fetch(${JSON.stringify(opts.endpoint)}, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ query: $q.value }),\n });\n const j = await res.json();\n $status.textContent = res.status + \" \" + res.statusText;\n $out.textContent = JSON.stringify(j, null, 2);\n };\n </script>\n</body>\n</html>`;\n}\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "4EA3066900269E5664756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "A6EA8E12C6FB5F9164756E2164756E21",
14
14
  "names": []
15
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexusts/graphql",
3
- "version": "0.9.8",
3
+ "version": "0.9.10",
4
4
  "description": "SDL-first GraphQL endpoint with @Resolver decorators",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -34,7 +34,7 @@
34
34
  }
35
35
  },
36
36
  "dependencies": {
37
- "@nexusts/core": "^0.9.8"
37
+ "@nexusts/core": "^0.9.10"
38
38
  },
39
39
  "repository": {
40
40
  "type": "git",