nitro-graphql 2.0.0-beta.37 → 2.0.0-beta.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/dist/cli/commands/generate.d.mts +26 -0
  2. package/dist/cli/commands/generate.mjs +196 -0
  3. package/dist/cli/commands/index.d.mts +4 -0
  4. package/dist/cli/commands/index.mjs +5 -0
  5. package/dist/cli/commands/init.d.mts +12 -0
  6. package/dist/cli/commands/init.mjs +100 -0
  7. package/dist/cli/commands/validate.d.mts +10 -0
  8. package/dist/cli/commands/validate.mjs +69 -0
  9. package/dist/cli/config.d.mts +75 -0
  10. package/dist/cli/config.mjs +20 -0
  11. package/dist/cli/index.d.mts +24 -0
  12. package/dist/cli/index.mjs +219 -0
  13. package/dist/core/codegen/client.d.mts +23 -0
  14. package/dist/core/codegen/client.mjs +150 -0
  15. package/dist/core/codegen/document-loader.d.mts +10 -0
  16. package/dist/core/codegen/document-loader.mjs +18 -0
  17. package/dist/core/codegen/index.d.mts +8 -0
  18. package/dist/core/codegen/index.mjs +9 -0
  19. package/dist/{utils/codegen-plugin.d.mts → core/codegen/plugin.d.mts} +2 -2
  20. package/dist/{utils/codegen-plugin.mjs → core/codegen/plugin.mjs} +1 -1
  21. package/dist/core/codegen/runtime.d.mts +20 -0
  22. package/dist/core/codegen/runtime.mjs +60 -0
  23. package/dist/core/codegen/schema-loader.d.mts +28 -0
  24. package/dist/core/codegen/schema-loader.mjs +128 -0
  25. package/dist/core/codegen/server.d.mts +28 -0
  26. package/dist/core/codegen/server.mjs +143 -0
  27. package/dist/{codegen → core/codegen}/validation.d.mts +1 -1
  28. package/dist/{codegen → core/codegen}/validation.mjs +1 -1
  29. package/dist/core/config.d.mts +50 -0
  30. package/dist/core/config.mjs +82 -0
  31. package/dist/core/constants.d.mts +188 -0
  32. package/dist/core/constants.mjs +210 -0
  33. package/dist/core/index.d.mts +32 -0
  34. package/dist/core/index.mjs +26 -0
  35. package/dist/core/scanning/ast-scanner.d.mts +23 -0
  36. package/dist/core/scanning/ast-scanner.mjs +103 -0
  37. package/dist/core/scanning/common.d.mts +37 -0
  38. package/dist/core/scanning/common.mjs +60 -0
  39. package/dist/core/scanning/directives.d.mts +10 -0
  40. package/dist/core/scanning/directives.mjs +29 -0
  41. package/dist/core/scanning/documents.d.mts +21 -0
  42. package/dist/core/scanning/documents.mjs +43 -0
  43. package/dist/core/scanning/index.d.mts +7 -0
  44. package/dist/core/scanning/index.mjs +8 -0
  45. package/dist/core/scanning/resolvers.d.mts +10 -0
  46. package/dist/core/scanning/resolvers.mjs +58 -0
  47. package/dist/core/scanning/schemas.d.mts +14 -0
  48. package/dist/core/scanning/schemas.mjs +64 -0
  49. package/dist/{utils/schema-builder.d.mts → core/schema/builder.d.mts} +7 -2
  50. package/dist/{utils/schema-builder.mjs → core/schema/builder.mjs} +22 -3
  51. package/dist/{utils → core/schema}/federation.d.mts +10 -5
  52. package/dist/{utils → core/schema}/federation.mjs +1 -1
  53. package/dist/core/schema/index.d.mts +3 -0
  54. package/dist/core/schema/index.mjs +4 -0
  55. package/dist/core/types/adapter.d.mts +58 -0
  56. package/dist/core/types/codegen.d.mts +133 -0
  57. package/dist/core/types/config.d.mts +212 -0
  58. package/dist/{types → core/types}/define.d.mts +3 -7
  59. package/dist/core/types/index.d.mts +5 -0
  60. package/dist/core/types/scanning.d.mts +69 -0
  61. package/dist/core/types/scanning.mjs +1 -0
  62. package/dist/{utils → core/utils}/directive-parser.d.mts +21 -5
  63. package/dist/{utils → core/utils}/directive-parser.mjs +25 -36
  64. package/dist/{utils → core/utils}/errors.d.mts +8 -4
  65. package/dist/{utils → core/utils}/errors.mjs +8 -4
  66. package/dist/core/utils/file-io.d.mts +24 -0
  67. package/dist/core/utils/file-io.mjs +47 -0
  68. package/dist/{utils → core/utils}/imports.d.mts +1 -1
  69. package/dist/{utils → core/utils}/imports.mjs +1 -1
  70. package/dist/core/utils/index.d.mts +7 -0
  71. package/dist/core/utils/index.mjs +8 -0
  72. package/dist/core/utils/logger.d.mts +19 -0
  73. package/dist/core/utils/logger.mjs +38 -0
  74. package/dist/{utils → core/utils}/ofetch-templates.d.mts +1 -1
  75. package/dist/{utils → core/utils}/ofetch-templates.mjs +1 -1
  76. package/dist/core/validation/external-services.d.mts +11 -0
  77. package/dist/{utils/validation.mjs → core/validation/external-services.mjs} +3 -3
  78. package/dist/core/validation/index.d.mts +2 -0
  79. package/dist/core/validation/index.mjs +3 -0
  80. package/dist/define.d.mts +1 -3
  81. package/dist/index.d.mts +6 -44
  82. package/dist/index.mjs +5 -62
  83. package/dist/nitro/adapter.d.mts +30 -0
  84. package/dist/nitro/adapter.mjs +97 -0
  85. package/dist/{utils → nitro}/apollo.d.mts +1 -1
  86. package/dist/{utils → nitro}/apollo.mjs +1 -1
  87. package/dist/nitro/codegen.d.mts +19 -0
  88. package/dist/nitro/codegen.mjs +141 -0
  89. package/dist/nitro/config.d.mts +52 -0
  90. package/dist/nitro/config.mjs +58 -0
  91. package/dist/nitro/index.d.mts +46 -0
  92. package/dist/nitro/index.mjs +65 -0
  93. package/dist/{utils/path-resolver.d.mts → nitro/paths.d.mts} +3 -19
  94. package/dist/{utils/path-resolver.mjs → nitro/paths.mjs} +2 -36
  95. package/dist/{rollup.d.mts → nitro/rollup.d.mts} +1 -1
  96. package/dist/{rollup.mjs → nitro/rollup.mjs} +11 -23
  97. package/dist/{routes → nitro/routes}/apollo-server.d.mts +1 -1
  98. package/dist/{routes → nitro/routes}/apollo-server.mjs +5 -5
  99. package/dist/{routes → nitro/routes}/debug-template.d.mts +1 -1
  100. package/dist/{routes → nitro/routes}/debug-template.mjs +1 -1
  101. package/dist/{routes → nitro/routes}/debug.d.mts +10 -16
  102. package/dist/{routes → nitro/routes}/debug.mjs +2 -2
  103. package/dist/{routes → nitro/routes}/graphql-yoga.d.mts +1 -1
  104. package/dist/{routes → nitro/routes}/graphql-yoga.mjs +3 -3
  105. package/dist/{routes → nitro/routes}/health.d.mts +1 -1
  106. package/dist/{routes → nitro/routes}/health.mjs +1 -1
  107. package/dist/nitro/setup/file-watcher.d.mts +16 -0
  108. package/dist/{setup → nitro/setup}/file-watcher.mjs +14 -18
  109. package/dist/{setup.d.mts → nitro/setup/logging.d.mts} +5 -6
  110. package/dist/nitro/setup/logging.mjs +66 -0
  111. package/dist/nitro/setup/rollup-integration.d.mts +16 -0
  112. package/dist/{setup → nitro/setup}/rollup-integration.mjs +2 -2
  113. package/dist/nitro/setup/routes.d.mts +10 -0
  114. package/dist/nitro/setup/routes.mjs +35 -0
  115. package/dist/nitro/setup/ts-config.d.mts +11 -0
  116. package/dist/{setup → nitro/setup}/ts-config.mjs +3 -3
  117. package/dist/nitro/setup.d.mts +12 -0
  118. package/dist/{setup.mjs → nitro/setup.mjs} +33 -100
  119. package/dist/{types/index.d.mts → nitro/types.d.mts} +125 -43
  120. package/dist/nitro/types.mjs +1 -0
  121. package/dist/nitro/virtual/generators.d.mts +31 -0
  122. package/dist/nitro/virtual/generators.mjs +193 -0
  123. package/dist/nitro/virtual/stubs.d.mts +20 -0
  124. package/dist/nitro/virtual/stubs.mjs +31 -0
  125. package/dist/{ecosystem/nuxt.d.mts → nuxt.d.mts} +1 -1
  126. package/dist/{ecosystem/nuxt.mjs → nuxt.mjs} +2 -2
  127. package/dist/{graphql/server.d.mts → stubs/index.d.mts} +5 -1
  128. package/dist/stubs/index.mjs +1 -0
  129. package/package.json +43 -42
  130. package/dist/codegen/client-types.d.mts +0 -13
  131. package/dist/codegen/client-types.mjs +0 -131
  132. package/dist/codegen/external-types.d.mts +0 -12
  133. package/dist/codegen/external-types.mjs +0 -88
  134. package/dist/codegen/index.d.mts +0 -18
  135. package/dist/codegen/index.mjs +0 -24
  136. package/dist/codegen/server-types.d.mts +0 -13
  137. package/dist/codegen/server-types.mjs +0 -64
  138. package/dist/config/defaults.mjs +0 -36
  139. package/dist/constants/scalars.mjs +0 -27
  140. package/dist/constants.mjs +0 -106
  141. package/dist/graphql/index.d.mts +0 -5
  142. package/dist/setup/graphql-scanner.mjs +0 -25
  143. package/dist/setup/scaffold-generator.mjs +0 -109
  144. package/dist/types/standard-schema.d.mts +0 -59
  145. package/dist/utils/client-codegen.d.mts +0 -41
  146. package/dist/utils/client-codegen.mjs +0 -277
  147. package/dist/utils/file-generator.d.mts +0 -37
  148. package/dist/utils/file-generator.mjs +0 -72
  149. package/dist/utils/file-writer.d.mts +0 -35
  150. package/dist/utils/file-writer.mjs +0 -32
  151. package/dist/utils/index.d.mts +0 -13
  152. package/dist/utils/index.mjs +0 -13
  153. package/dist/utils/layers.d.mts +0 -22
  154. package/dist/utils/layers.mjs +0 -28
  155. package/dist/utils/scanning/common.d.mts +0 -23
  156. package/dist/utils/scanning/common.mjs +0 -39
  157. package/dist/utils/scanning/directives.d.mts +0 -11
  158. package/dist/utils/scanning/directives.mjs +0 -43
  159. package/dist/utils/scanning/documents.d.mts +0 -15
  160. package/dist/utils/scanning/documents.mjs +0 -46
  161. package/dist/utils/scanning/index.d.mts +0 -6
  162. package/dist/utils/scanning/index.mjs +0 -7
  163. package/dist/utils/scanning/resolvers.d.mts +0 -11
  164. package/dist/utils/scanning/resolvers.mjs +0 -100
  165. package/dist/utils/scanning/schemas.d.mts +0 -15
  166. package/dist/utils/scanning/schemas.mjs +0 -29
  167. package/dist/utils/server-codegen.d.mts +0 -7
  168. package/dist/utils/server-codegen.mjs +0 -113
  169. package/dist/utils/type-generation.d.mts +0 -6
  170. package/dist/utils/type-generation.mjs +0 -7
  171. package/dist/utils/validation.d.mts +0 -11
  172. package/dist/virtual/debug-info.d.mts +0 -9
  173. package/dist/virtual/debug-info.mjs +0 -26
  174. package/dist/virtual/generators/config.d.mts +0 -22
  175. package/dist/virtual/generators/config.mjs +0 -36
  176. package/dist/virtual/generators/debug.d.mts +0 -14
  177. package/dist/virtual/generators/debug.mjs +0 -53
  178. package/dist/virtual/generators/directives.d.mts +0 -14
  179. package/dist/virtual/generators/directives.mjs +0 -52
  180. package/dist/virtual/generators/index.d.mts +0 -6
  181. package/dist/virtual/generators/index.mjs +0 -7
  182. package/dist/virtual/generators/resolvers.d.mts +0 -14
  183. package/dist/virtual/generators/resolvers.mjs +0 -55
  184. package/dist/virtual/generators/schemas.d.mts +0 -14
  185. package/dist/virtual/generators/schemas.mjs +0 -43
  186. package/dist/virtual/graphql-config.d.mts +0 -9
  187. package/dist/virtual/graphql-config.mjs +0 -10
  188. package/dist/virtual/module-config.d.mts +0 -9
  189. package/dist/virtual/module-config.mjs +0 -10
  190. package/dist/virtual/server-directives.d.mts +0 -11
  191. package/dist/virtual/server-directives.mjs +0 -10
  192. package/dist/virtual/server-resolvers.d.mts +0 -11
  193. package/dist/virtual/server-resolvers.mjs +0 -10
  194. package/dist/virtual/server-schemas.d.mts +0 -11
  195. package/dist/virtual/server-schemas.mjs +0 -10
  196. /package/dist/{graphql/index.mjs → core/types/adapter.mjs} +0 -0
  197. /package/dist/{graphql/server.mjs → core/types/codegen.mjs} +0 -0
  198. /package/dist/{types/define.mjs → core/types/config.mjs} +0 -0
  199. /package/dist/{types/index.mjs → core/types/define.mjs} +0 -0
  200. /package/dist/{types/standard-schema.mjs → core/types/index.mjs} +0 -0
@@ -1,17 +1,17 @@
1
- import { createMergedSchema } from "../utils/schema-builder.mjs";
1
+ import { createMergedSchema } from "../../core/schema/builder.mjs";
2
2
  import defu from "defu";
3
+ import { ApolloServer } from "@apollo/server";
4
+ import { defineEventHandler } from "nitro/h3";
3
5
  import { importedConfig } from "#nitro-graphql/graphql-config";
4
6
  import { moduleConfig } from "#nitro-graphql/module-config";
5
7
  import { directives } from "#nitro-graphql/server-directives";
6
8
  import { resolvers } from "#nitro-graphql/server-resolvers";
7
9
  import { schemas } from "#nitro-graphql/server-schemas";
8
- import { ApolloServer } from "@apollo/server";
9
10
  import { ApolloServerPluginLandingPageDisabled } from "@apollo/server/plugin/disabled";
10
11
  import { ApolloServerPluginLandingPageLocalDefault } from "@apollo/server/plugin/landingPage/default";
11
- import { startServerAndCreateH3Handler } from "nitro-graphql/utils/apollo";
12
- import { defineEventHandler } from "nitro/h3";
12
+ import { startServerAndCreateH3Handler } from "nitro-graphql/apollo";
13
13
 
14
- //#region src/routes/apollo-server.ts
14
+ //#region src/nitro/routes/apollo-server.ts
15
15
  let apolloServer = null;
16
16
  let serverStarted = false;
17
17
  async function createApolloServer() {
@@ -1,4 +1,4 @@
1
- //#region src/routes/debug-template.d.ts
1
+ //#region src/nitro/routes/debug-template.d.ts
2
2
  /**
3
3
  * Debug dashboard HTML template
4
4
  * Extracted from debug.ts to reduce file complexity
@@ -1,4 +1,4 @@
1
- //#region src/routes/debug-template.ts
1
+ //#region src/nitro/routes/debug-template.ts
2
2
  /**
3
3
  * Debug dashboard HTML template
4
4
  * Extracted from debug.ts to reduce file complexity
@@ -1,6 +1,6 @@
1
1
  import * as nitro_deps_h31 from "nitro/deps/h3";
2
2
 
3
- //#region src/routes/debug.d.ts
3
+ //#region src/nitro/routes/debug.d.ts
4
4
 
5
5
  /**
6
6
  * Debug endpoint for inspecting virtual modules and GraphQL setup
@@ -31,30 +31,24 @@ declare const _default: nitro_deps_h31.EventHandlerWithFetch<nitro_deps_h31.Even
31
31
  documentFiles: any;
32
32
  };
33
33
  runtime: {
34
- loadedResolvers: number;
35
- loadedSchemas: number;
36
- loadedDirectives: number;
34
+ loadedResolvers: any;
35
+ loadedSchemas: any;
36
+ loadedDirectives: any;
37
37
  };
38
38
  virtualModules: any;
39
39
  virtualModuleSamples: {
40
40
  'server-resolvers': {
41
- resolverCount: number;
42
- sample: {
43
- hasResolver: boolean;
44
- resolverKeys: string[];
45
- }[];
41
+ resolverCount: any;
42
+ sample: any;
46
43
  };
47
44
  'server-schemas': {
48
- schemaCount: number;
49
- sample: {
50
- defLength: number;
51
- defPreview: string;
52
- }[];
45
+ schemaCount: any;
46
+ sample: any;
53
47
  };
54
48
  'server-directives': {
55
- directiveCount: number;
49
+ directiveCount: any;
56
50
  };
57
- 'module-config': Record<string, any>;
51
+ 'module-config': any;
58
52
  };
59
53
  }>>;
60
54
  //#endregion
@@ -1,12 +1,12 @@
1
1
  import { generateHtmlDashboard } from "./debug-template.mjs";
2
+ import { defineEventHandler, getQuery } from "nitro/h3";
2
3
  import { moduleConfig } from "#nitro-graphql/module-config";
3
4
  import { directives } from "#nitro-graphql/server-directives";
4
5
  import { resolvers } from "#nitro-graphql/server-resolvers";
5
6
  import { schemas } from "#nitro-graphql/server-schemas";
6
- import { defineEventHandler, getQuery } from "nitro/h3";
7
7
  import { debugInfo } from "#nitro-graphql/debug-info";
8
8
 
9
- //#region src/routes/debug.ts
9
+ //#region src/nitro/routes/debug.ts
10
10
  /**
11
11
  * Debug endpoint for inspecting virtual modules and GraphQL setup
12
12
  * Only available in development mode
@@ -1,6 +1,6 @@
1
1
  import * as nitro_deps_h33 from "nitro/deps/h3";
2
2
 
3
- //#region src/routes/graphql-yoga.d.ts
3
+ //#region src/nitro/routes/graphql-yoga.d.ts
4
4
  declare const _default: nitro_deps_h33.EventHandlerWithFetch<nitro_deps_h33.EventHandlerRequest, Promise<Response>>;
5
5
  //#endregion
6
6
  export { _default as default };
@@ -1,14 +1,14 @@
1
- import { createMergedSchema } from "../utils/schema-builder.mjs";
1
+ import { createMergedSchema } from "../../core/schema/builder.mjs";
2
2
  import defu from "defu";
3
+ import { defineEventHandler } from "nitro/h3";
3
4
  import { importedConfig } from "#nitro-graphql/graphql-config";
4
5
  import { moduleConfig } from "#nitro-graphql/module-config";
5
6
  import { directives } from "#nitro-graphql/server-directives";
6
7
  import { resolvers } from "#nitro-graphql/server-resolvers";
7
8
  import { schemas } from "#nitro-graphql/server-schemas";
8
- import { defineEventHandler } from "nitro/h3";
9
9
  import { createYoga } from "graphql-yoga";
10
10
 
11
- //#region src/routes/graphql-yoga.ts
11
+ //#region src/nitro/routes/graphql-yoga.ts
12
12
  const apolloSandboxHtml = `<!DOCTYPE html>
13
13
  <html lang="en">
14
14
  <body style="margin: 0; overflow-x: hidden; overflow-y: hidden">
@@ -1,6 +1,6 @@
1
1
  import * as nitro_deps_h35 from "nitro/deps/h3";
2
2
 
3
- //#region src/routes/health.d.ts
3
+ //#region src/nitro/routes/health.d.ts
4
4
  declare const _default: nitro_deps_h35.EventHandlerWithFetch<nitro_deps_h35.EventHandlerRequest, Promise<{
5
5
  status: string;
6
6
  message: string;
@@ -2,7 +2,7 @@ import { defineEventHandler } from "nitro/h3";
2
2
  import { $fetch } from "nitro/deps/ofetch";
3
3
  import { useRuntimeConfig } from "nitro/runtime-config";
4
4
 
5
- //#region src/routes/health.ts
5
+ //#region src/nitro/routes/health.ts
6
6
  var health_default = defineEventHandler(async (event) => {
7
7
  const runtime = useRuntimeConfig();
8
8
  if (!runtime.graphql || !runtime.graphql.endpoint?.graphql) {
@@ -0,0 +1,16 @@
1
+ import { FSWatcher } from "chokidar";
2
+ import { Nitro } from "nitro/types";
3
+
4
+ //#region src/nitro/setup/file-watcher.d.ts
5
+
6
+ /**
7
+ * Setup file watcher for GraphQL files (schemas, resolvers, directives, documents)
8
+ * Watches for changes and triggers type regeneration and dev server reload
9
+ */
10
+ declare function setupFileWatcher(nitro: Nitro, watchDirs: string[]): FSWatcher;
11
+ /**
12
+ * Determine which directories to watch based on framework and configuration
13
+ */
14
+ declare function getWatchDirectories(nitro: Nitro): string[];
15
+ //#endregion
16
+ export { getWatchDirectories, setupFileWatcher };
@@ -1,17 +1,13 @@
1
- import { DIRECTIVE_EXTENSIONS, DIR_SERVER_GRAPHQL, DIR_SERVER_GRAPHQL_WIN, GRAPHQL_EXTENSIONS, LOG_TAG, RESOLVER_EXTENSIONS } from "../constants.mjs";
2
- import { generateServerTypes } from "../codegen/server-types.mjs";
3
- import { generateClientTypes } from "../codegen/index.mjs";
4
- import { DEFAULT_WATCHER_IGNORE_INITIAL, DEFAULT_WATCHER_PERSISTENT } from "../config/defaults.mjs";
5
- import { generateDirectiveSchemas } from "../utils/directive-parser.mjs";
6
- import { generateLayerIgnorePatterns, getLayerAppDirectories, getLayerServerDirectories } from "../utils/layers.mjs";
7
- import { scanDirectives } from "../utils/scanning/directives.mjs";
8
- import { scanResolvers } from "../utils/scanning/resolvers.mjs";
9
- import { scanSchemas } from "../utils/scanning/schemas.mjs";
1
+ import { DIRECTIVE_EXTENSIONS, DIR_SERVER_GRAPHQL, DIR_SERVER_GRAPHQL_WIN, GRAPHQL_EXTENSIONS, LOG_TAG, RESOLVER_EXTENSIONS } from "../../core/constants.mjs";
2
+ import { generateDirectiveSchemas } from "../../core/utils/directive-parser.mjs";
3
+ import { NitroAdapter } from "../adapter.mjs";
4
+ import { generateClientTypes, generateServerTypes } from "../codegen.mjs";
5
+ import { DEFAULT_WATCHER_IGNORE_INITIAL, DEFAULT_WATCHER_PERSISTENT } from "../config.mjs";
10
6
  import consola from "consola";
11
7
  import { join } from "pathe";
12
8
  import { watch } from "chokidar";
13
9
 
14
- //#region src/setup/file-watcher.ts
10
+ //#region src/nitro/setup/file-watcher.ts
15
11
  const logger = consola.withTag(LOG_TAG);
16
12
  /**
17
13
  * Setup file watcher for GraphQL files (schemas, resolvers, directives, documents)
@@ -21,21 +17,21 @@ function setupFileWatcher(nitro, watchDirs) {
21
17
  const watcher = watch(watchDirs, {
22
18
  persistent: DEFAULT_WATCHER_PERSISTENT,
23
19
  ignoreInitial: DEFAULT_WATCHER_IGNORE_INITIAL,
24
- ignored: [...nitro.options.ignore, ...generateLayerIgnorePatterns()]
20
+ ignored: nitro.options.ignore
25
21
  });
26
22
  watcher.on("all", async (_, path) => {
27
23
  const isGraphQLFile = GRAPHQL_EXTENSIONS.some((ext) => path.endsWith(ext));
28
24
  const isResolverFile = RESOLVER_EXTENSIONS.some((ext) => path.endsWith(ext));
29
25
  const isDirectiveFile = DIRECTIVE_EXTENSIONS.some((ext) => path.endsWith(ext));
30
26
  if (isGraphQLFile || isResolverFile || isDirectiveFile) if (path.includes(nitro.graphql.serverDir) || path.includes(DIR_SERVER_GRAPHQL) || path.includes(DIR_SERVER_GRAPHQL_WIN) || isResolverFile || isDirectiveFile) {
31
- const directives = await scanDirectives(nitro);
32
- nitro.scanDirectives = directives;
27
+ const directivesResult = await NitroAdapter.scanDirectives(nitro);
28
+ nitro.scanDirectives = directivesResult.items;
33
29
  if (!nitro.scanSchemas) nitro.scanSchemas = [];
34
- const directivesPath = await generateDirectiveSchemas(nitro, directives);
35
- const schemas = await scanSchemas(nitro);
30
+ const directivesPath = await generateDirectiveSchemas(nitro, directivesResult.items);
31
+ const schemas = (await NitroAdapter.scanSchemas(nitro)).items;
36
32
  if (directivesPath && !schemas.includes(directivesPath)) schemas.push(directivesPath);
37
33
  nitro.scanSchemas = schemas;
38
- await scanResolvers(nitro).then((r) => nitro.scanResolvers = r);
34
+ nitro.scanResolvers = (await NitroAdapter.scanResolvers(nitro)).items;
39
35
  logger.success("Types regenerated");
40
36
  await generateServerTypes(nitro, { silent: true });
41
37
  await generateClientTypes(nitro, { silent: true });
@@ -55,8 +51,8 @@ function getWatchDirectories(nitro) {
55
51
  switch (nitro.options.framework.name) {
56
52
  case "nuxt": {
57
53
  watchDirs.push(nitro.graphql.clientDir);
58
- const layerServerDirs = getLayerServerDirectories(nitro);
59
- const layerAppDirs = getLayerAppDirectories(nitro);
54
+ const layerServerDirs = nitro.options.graphql?.layerServerDirs || [];
55
+ const layerAppDirs = nitro.options.graphql?.layerAppDirs || [];
60
56
  for (const layerServerDir of layerServerDirs) watchDirs.push(join(layerServerDir, "graphql"));
61
57
  for (const layerAppDir of layerAppDirs) watchDirs.push(join(layerAppDir, "graphql"));
62
58
  break;
@@ -1,7 +1,7 @@
1
- import { SecurityConfig } from "./types/index.mjs";
1
+ import { SecurityConfig } from "../types.mjs";
2
2
  import { Nitro } from "nitro/types";
3
3
 
4
- //#region src/setup.d.ts
4
+ //#region src/nitro/setup/logging.d.ts
5
5
 
6
6
  /**
7
7
  * Resolves security configuration with environment-aware defaults
@@ -10,9 +10,8 @@ import { Nitro } from "nitro/types";
10
10
  */
11
11
  declare function resolveSecurityConfig(config?: SecurityConfig): Required<SecurityConfig>;
12
12
  /**
13
- * Main setup function for nitro-graphql
14
- * Coordinates all initialization steps for the module
13
+ * Log startup information
15
14
  */
16
- declare function setupNitroGraphQL(nitro: Nitro): Promise<void>;
15
+ declare function logStartupInfo(nitro: Nitro, serverEnabled: boolean): void;
17
16
  //#endregion
18
- export { resolveSecurityConfig, setupNitroGraphQL };
17
+ export { logStartupInfo, resolveSecurityConfig };
@@ -0,0 +1,66 @@
1
+ import consola from "consola";
2
+
3
+ //#region src/nitro/setup/logging.ts
4
+ /**
5
+ * Resolves security configuration with environment-aware defaults
6
+ * In production: introspection off, playground off, errors masked, suggestions disabled
7
+ * In development: introspection on, playground on, errors shown, suggestions enabled
8
+ */
9
+ function resolveSecurityConfig(config) {
10
+ const isProd = process.env.NODE_ENV === "production";
11
+ return {
12
+ introspection: config?.introspection ?? !isProd,
13
+ playground: config?.playground ?? !isProd,
14
+ maskErrors: config?.maskErrors ?? isProd,
15
+ disableSuggestions: config?.disableSuggestions ?? isProd
16
+ };
17
+ }
18
+ /**
19
+ * Log startup information
20
+ */
21
+ function logStartupInfo(nitro, serverEnabled) {
22
+ const externalServicesCount = nitro.options.graphql?.externalServices?.length || 0;
23
+ const docs = nitro.scanDocuments || [];
24
+ const isProd = process.env.NODE_ENV === "production";
25
+ if (serverEnabled) {
26
+ const securityConfig = resolveSecurityConfig(nitro.options.graphql?.security);
27
+ const framework = nitro.options.graphql?.framework || "unknown";
28
+ const schemas = nitro.scanSchemas?.length || 0;
29
+ const resolvers = nitro.scanResolvers?.length || 0;
30
+ consola.box({
31
+ title: "Nitro GraphQL",
32
+ message: [
33
+ `Framework: ${framework}`,
34
+ `Environment: ${isProd ? "production" : "development"}`,
35
+ `Schemas: ${schemas}`,
36
+ `Resolvers: ${resolvers}`,
37
+ externalServicesCount > 0 ? `External Services: ${externalServicesCount}` : "",
38
+ docs.length > 0 ? `Documents: ${docs.length}` : "",
39
+ "",
40
+ "Security:",
41
+ `├─ Introspection: ${securityConfig.introspection ? "enabled" : "disabled"}`,
42
+ `├─ Playground: ${securityConfig.playground ? "enabled" : "disabled"}`,
43
+ `├─ Error Masking: ${securityConfig.maskErrors ? "enabled" : "disabled"}`,
44
+ `└─ Field Suggestions: ${securityConfig.disableSuggestions ? "disabled" : "enabled"}`
45
+ ].filter(Boolean).join("\n"),
46
+ style: {
47
+ borderColor: isProd ? "yellow" : "cyan",
48
+ borderStyle: "rounded"
49
+ }
50
+ });
51
+ } else consola.box({
52
+ title: "Nitro GraphQL (Client Only)",
53
+ message: [
54
+ "Server mode: disabled",
55
+ `External Services: ${externalServicesCount}`,
56
+ `Documents: ${docs.length}`
57
+ ].join("\n"),
58
+ style: {
59
+ borderColor: "blue",
60
+ borderStyle: "rounded"
61
+ }
62
+ });
63
+ }
64
+
65
+ //#endregion
66
+ export { logStartupInfo, resolveSecurityConfig };
@@ -0,0 +1,16 @@
1
+ import { Nitro } from "nitro/types";
2
+
3
+ //#region src/nitro/setup/rollup-integration.d.ts
4
+
5
+ /**
6
+ * Setup Rollup/Rolldown chunking configuration for GraphQL files
7
+ * Creates separate chunks for schemas and resolvers to optimize bundle size
8
+ */
9
+ declare function setupRollupChunking(nitro: Nitro): void;
10
+ /**
11
+ * Configure external dependencies for Rollup
12
+ * Marks codegen and federation packages as external
13
+ */
14
+ declare function setupRollupExternals(nitro: Nitro): void;
15
+ //#endregion
16
+ export { setupRollupChunking, setupRollupExternals };
@@ -1,6 +1,6 @@
1
- import { CHUNK_NAME_RESOLVERS, CHUNK_NAME_SCHEMAS, CHUNK_PATH_GRAPHQL, CHUNK_PATH_UNKNOWN, GRAPHQL_EXTENSIONS, RESOLVER_EXTENSIONS } from "../constants.mjs";
1
+ import { CHUNK_NAME_RESOLVERS, CHUNK_NAME_SCHEMAS, CHUNK_PATH_GRAPHQL, CHUNK_PATH_UNKNOWN, GRAPHQL_EXTENSIONS, RESOLVER_EXTENSIONS } from "../../core/constants.mjs";
2
2
 
3
- //#region src/setup/rollup-integration.ts
3
+ //#region src/nitro/setup/rollup-integration.ts
4
4
  /**
5
5
  * Setup Rollup/Rolldown chunking configuration for GraphQL files
6
6
  * Creates separate chunks for schemas and resolvers to optimize bundle size
@@ -0,0 +1,10 @@
1
+ import { Nitro } from "nitro/types";
2
+
3
+ //#region src/nitro/setup/routes.d.ts
4
+
5
+ /**
6
+ * Register GraphQL route handlers
7
+ */
8
+ declare function registerRouteHandlers(nitro: Nitro): void;
9
+ //#endregion
10
+ export { registerRouteHandlers };
@@ -0,0 +1,35 @@
1
+ import { ENDPOINT_DEBUG, GRAPHQL_HTTP_METHODS } from "../../core/constants.mjs";
2
+ import { join } from "pathe";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ //#region src/nitro/setup/routes.ts
6
+ /**
7
+ * Register GraphQL route handlers
8
+ */
9
+ function registerRouteHandlers(nitro) {
10
+ const runtime = fileURLToPath(new URL("../routes", import.meta.url));
11
+ const framework = nitro.options.graphql?.framework;
12
+ if (framework === "graphql-yoga") for (const method of GRAPHQL_HTTP_METHODS) nitro.options.handlers.push({
13
+ route: nitro.options.runtimeConfig.graphql?.endpoint?.graphql || "/api/graphql",
14
+ handler: join(runtime, "graphql-yoga"),
15
+ method
16
+ });
17
+ if (framework === "apollo-server") for (const method of GRAPHQL_HTTP_METHODS) nitro.options.handlers.push({
18
+ route: nitro.options.runtimeConfig.graphql?.endpoint?.graphql || "/api/graphql",
19
+ handler: join(runtime, "apollo-server"),
20
+ method
21
+ });
22
+ nitro.options.handlers.push({
23
+ route: nitro.options.runtimeConfig.graphql?.endpoint?.healthCheck || "/api/graphql/health",
24
+ handler: join(runtime, "health"),
25
+ method: "GET"
26
+ });
27
+ if (nitro.options.dev) nitro.options.handlers.push({
28
+ route: ENDPOINT_DEBUG,
29
+ handler: join(runtime, "debug"),
30
+ method: "GET"
31
+ });
32
+ }
33
+
34
+ //#endregion
35
+ export { registerRouteHandlers };
@@ -0,0 +1,11 @@
1
+ import { Nitro, NitroTypes } from "nitro/types";
2
+
3
+ //#region src/nitro/setup/ts-config.d.ts
4
+
5
+ /**
6
+ * Setup TypeScript path aliases for GraphQL types
7
+ * Called via nitro:config hook to extend tsconfig.json
8
+ */
9
+ declare function setupTypeScriptPaths(nitro: Nitro, types: NitroTypes): void;
10
+ //#endregion
11
+ export { setupTypeScriptPaths };
@@ -1,8 +1,8 @@
1
- import { getDefaultPaths, getTypesConfig, resolveFilePath } from "../utils/path-resolver.mjs";
2
- import { relativeWithDot } from "../utils/imports.mjs";
1
+ import { relativeWithDot } from "../../core/utils/imports.mjs";
2
+ import { getDefaultPaths, getTypesConfig, resolveFilePath } from "../paths.mjs";
3
3
  import { dirname, join, resolve } from "pathe";
4
4
 
5
- //#region src/setup/ts-config.ts
5
+ //#region src/nitro/setup/ts-config.ts
6
6
  /**
7
7
  * Setup TypeScript path aliases for GraphQL types
8
8
  * Called via nitro:config hook to extend tsconfig.json
@@ -0,0 +1,12 @@
1
+ import { resolveSecurityConfig } from "./setup/logging.mjs";
2
+ import { Nitro } from "nitro/types";
3
+
4
+ //#region src/nitro/setup.d.ts
5
+
6
+ /**
7
+ * Main setup function for nitro-graphql
8
+ * Coordinates all initialization steps for the module
9
+ */
10
+ declare function setupNitroGraphQL(nitro: Nitro): Promise<void>;
11
+ //#endregion
12
+ export { resolveSecurityConfig, setupNitroGraphQL };
@@ -1,35 +1,35 @@
1
- import { ENDPOINT_DEBUG, FRAMEWORK_NITRO, FRAMEWORK_NUXT, GRAPHQL_HTTP_METHODS, LOG_TAG } from "./constants.mjs";
2
- import { getDefaultPaths } from "./utils/path-resolver.mjs";
3
- import { generateServerTypes } from "./codegen/server-types.mjs";
4
- import { generateClientTypes } from "./codegen/index.mjs";
5
- import { DEFAULT_RUNTIME_CONFIG, DEFAULT_TYPESCRIPT_STRICT, DEFAULT_TYPES_CONFIG } from "./config/defaults.mjs";
6
- import { validateExternalServices } from "./utils/validation.mjs";
1
+ import { FRAMEWORK_NITRO, FRAMEWORK_NUXT, LOG_TAG } from "../core/constants.mjs";
2
+ import { generateDirectiveSchemas } from "../core/utils/directive-parser.mjs";
3
+ import { validateExternalServices } from "../core/validation/external-services.mjs";
4
+ import { NitroAdapter } from "./adapter.mjs";
5
+ import { getDefaultPaths } from "./paths.mjs";
6
+ import { generateClientTypes, generateServerTypes } from "./codegen.mjs";
7
+ import { DEFAULT_RUNTIME_CONFIG, DEFAULT_TYPESCRIPT_STRICT, DEFAULT_TYPES_CONFIG } from "./config.mjs";
7
8
  import { rollupConfig } from "./rollup.mjs";
8
9
  import { getWatchDirectories, setupFileWatcher } from "./setup/file-watcher.mjs";
9
- import { scanAllGraphQLFiles } from "./setup/graphql-scanner.mjs";
10
+ import { logStartupInfo, resolveSecurityConfig } from "./setup/logging.mjs";
10
11
  import { setupRollupChunking, setupRollupExternals } from "./setup/rollup-integration.mjs";
11
- import { generateScaffoldFiles } from "./setup/scaffold-generator.mjs";
12
+ import { registerRouteHandlers } from "./setup/routes.mjs";
12
13
  import { setupTypeScriptPaths } from "./setup/ts-config.mjs";
13
14
  import defu from "defu";
14
- import { fileURLToPath } from "node:url";
15
15
  import consola from "consola";
16
- import { join, relative, resolve } from "pathe";
16
+ import { relative, resolve } from "pathe";
17
17
 
18
- //#region src/setup.ts
18
+ //#region src/nitro/setup.ts
19
19
  const logger = consola.withTag(LOG_TAG);
20
20
  /**
21
- * Resolves security configuration with environment-aware defaults
22
- * In production: introspection off, playground off, errors masked, suggestions disabled
23
- * In development: introspection on, playground on, errors shown, suggestions enabled
21
+ * Scan all GraphQL files and update Nitro state
24
22
  */
25
- function resolveSecurityConfig(config) {
26
- const isProd = process.env.NODE_ENV === "production";
27
- return {
28
- introspection: config?.introspection ?? !isProd,
29
- playground: config?.playground ?? !isProd,
30
- maskErrors: config?.maskErrors ?? isProd,
31
- disableSuggestions: config?.disableSuggestions ?? isProd
32
- };
23
+ async function scanAllGraphQLFiles(nitro) {
24
+ const directivesResult = await NitroAdapter.scanDirectives(nitro);
25
+ nitro.scanDirectives = directivesResult.items;
26
+ if (!nitro.scanSchemas) nitro.scanSchemas = [];
27
+ const directivesPath = await generateDirectiveSchemas(nitro, directivesResult.items);
28
+ const schemas = (await NitroAdapter.scanSchemas(nitro)).items;
29
+ if (directivesPath && !schemas.includes(directivesPath)) schemas.push(directivesPath);
30
+ nitro.scanSchemas = schemas;
31
+ nitro.scanDocuments = (await NitroAdapter.scanDocuments(nitro)).items;
32
+ nitro.scanResolvers = (await NitroAdapter.scanResolvers(nitro)).items;
33
33
  }
34
34
  /**
35
35
  * Main setup function for nitro-graphql
@@ -54,7 +54,6 @@ async function setupNitroGraphQL(nitro) {
54
54
  if (serverEnabled) registerRouteHandlers(nitro);
55
55
  setupTypeScriptConfiguration(nitro);
56
56
  setupNuxtIntegration(nitro);
57
- if (serverEnabled) generateScaffoldFiles(nitro);
58
57
  logStartupInfo(nitro, serverEnabled);
59
58
  }
60
59
  /**
@@ -139,11 +138,18 @@ function setupFileWatching(nitro, serverEnabled) {
139
138
  * Scan all GraphQL files (schemas, resolvers, directives, documents)
140
139
  */
141
140
  async function scanGraphQLFiles(nitro, serverEnabled) {
142
- if (serverEnabled) await scanAllGraphQLFiles(nitro);
143
- else {
144
- const { scanDocuments } = await import("./utils/index.mjs");
145
- nitro.scanDocuments = await scanDocuments(nitro);
141
+ const skipLocalScan = nitro.options.graphql?.skipLocalScan === true;
142
+ const extendSources = nitro.options.graphql?.extend;
143
+ if (skipLocalScan && extendSources?.length) {
144
+ logger.info(`Using ${extendSources.length} extend source(s), skipping local scanning`);
145
+ nitro.scanSchemas = [];
146
+ nitro.scanResolvers = [];
147
+ nitro.scanDirectives = [];
148
+ nitro.scanDocuments = (await NitroAdapter.scanDocuments(nitro)).items;
149
+ return;
146
150
  }
151
+ if (serverEnabled) await scanAllGraphQLFiles(nitro);
152
+ else nitro.scanDocuments = (await NitroAdapter.scanDocuments(nitro)).items;
147
153
  }
148
154
  /**
149
155
  * Setup dev mode hooks for rescanning files
@@ -203,33 +209,6 @@ function setupCloseHooks(nitro, serverEnabled) {
203
209
  });
204
210
  }
205
211
  /**
206
- * Register GraphQL route handlers
207
- */
208
- function registerRouteHandlers(nitro) {
209
- const runtime = fileURLToPath(new URL("routes", import.meta.url));
210
- const framework = nitro.options.graphql?.framework;
211
- if (framework === "graphql-yoga") for (const method of GRAPHQL_HTTP_METHODS) nitro.options.handlers.push({
212
- route: nitro.options.runtimeConfig.graphql?.endpoint?.graphql || "/api/graphql",
213
- handler: join(runtime, "graphql-yoga"),
214
- method
215
- });
216
- if (framework === "apollo-server") for (const method of GRAPHQL_HTTP_METHODS) nitro.options.handlers.push({
217
- route: nitro.options.runtimeConfig.graphql?.endpoint?.graphql || "/api/graphql",
218
- handler: join(runtime, "apollo-server"),
219
- method
220
- });
221
- nitro.options.handlers.push({
222
- route: nitro.options.runtimeConfig.graphql?.endpoint?.healthCheck || "/api/graphql/health",
223
- handler: join(runtime, "health"),
224
- method: "GET"
225
- });
226
- if (nitro.options.dev) nitro.options.handlers.push({
227
- route: ENDPOINT_DEBUG,
228
- handler: join(runtime, "debug"),
229
- method: "GET"
230
- });
231
- }
232
- /**
233
212
  * Setup TypeScript configuration and path aliases
234
213
  */
235
214
  function setupTypeScriptConfiguration(nitro) {
@@ -247,52 +226,6 @@ function setupNuxtIntegration(nitro) {
247
226
  if (nuxtOptions) nuxtOptions.nitroGraphqlExternalServices = nitro.options.graphql?.externalServices || [];
248
227
  });
249
228
  }
250
- /**
251
- * Log startup information
252
- */
253
- function logStartupInfo(nitro, serverEnabled) {
254
- const externalServicesCount = nitro.options.graphql?.externalServices?.length || 0;
255
- const docs = nitro.scanDocuments || [];
256
- const isProd = process.env.NODE_ENV === "production";
257
- if (serverEnabled) {
258
- const securityConfig = resolveSecurityConfig(nitro.options.graphql?.security);
259
- const framework = nitro.options.graphql?.framework || "unknown";
260
- const schemas = nitro.scanSchemas?.length || 0;
261
- const resolvers = nitro.scanResolvers?.length || 0;
262
- consola.box({
263
- title: "Nitro GraphQL",
264
- message: [
265
- `Framework: ${framework}`,
266
- `Environment: ${isProd ? "production" : "development"}`,
267
- `Schemas: ${schemas}`,
268
- `Resolvers: ${resolvers}`,
269
- externalServicesCount > 0 ? `External Services: ${externalServicesCount}` : "",
270
- docs.length > 0 ? `Documents: ${docs.length}` : "",
271
- "",
272
- "Security:",
273
- `├─ Introspection: ${securityConfig.introspection ? "enabled" : "disabled"}`,
274
- `├─ Playground: ${securityConfig.playground ? "enabled" : "disabled"}`,
275
- `├─ Error Masking: ${securityConfig.maskErrors ? "enabled" : "disabled"}`,
276
- `└─ Field Suggestions: ${securityConfig.disableSuggestions ? "disabled" : "enabled"}`
277
- ].filter(Boolean).join("\n"),
278
- style: {
279
- borderColor: isProd ? "yellow" : "cyan",
280
- borderStyle: "rounded"
281
- }
282
- });
283
- } else consola.box({
284
- title: "Nitro GraphQL (Client Only)",
285
- message: [
286
- "Server mode: disabled",
287
- `External Services: ${externalServicesCount}`,
288
- `Documents: ${docs.length}`
289
- ].join("\n"),
290
- style: {
291
- borderColor: "blue",
292
- borderStyle: "rounded"
293
- }
294
- });
295
- }
296
229
 
297
230
  //#endregion
298
231
  export { resolveSecurityConfig, setupNitroGraphQL };