nitro-graphql 2.0.0-beta.31 → 2.0.0-beta.33

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 (86) hide show
  1. package/dist/codegen/client-types.d.mts +13 -0
  2. package/dist/codegen/client-types.mjs +131 -0
  3. package/dist/codegen/external-types.d.mts +12 -0
  4. package/dist/codegen/external-types.mjs +88 -0
  5. package/dist/codegen/index.d.mts +18 -0
  6. package/dist/codegen/index.mjs +24 -0
  7. package/dist/codegen/server-types.d.mts +13 -0
  8. package/dist/codegen/server-types.mjs +64 -0
  9. package/dist/codegen/validation.d.mts +13 -0
  10. package/dist/codegen/validation.mjs +96 -0
  11. package/dist/config/defaults.mjs +36 -0
  12. package/dist/constants/scalars.mjs +27 -0
  13. package/dist/constants.mjs +106 -0
  14. package/dist/ecosystem/nuxt.mjs +3 -3
  15. package/dist/rollup.d.mts +2 -8
  16. package/dist/rollup.mjs +24 -199
  17. package/dist/routes/apollo-server.d.mts +2 -2
  18. package/dist/routes/apollo-server.mjs +7 -51
  19. package/dist/routes/debug-template.d.mts +15 -0
  20. package/dist/routes/debug-template.mjs +385 -0
  21. package/dist/routes/debug.d.mts +2 -2
  22. package/dist/routes/debug.mjs +1 -344
  23. package/dist/routes/graphql-yoga.d.mts +2 -2
  24. package/dist/routes/graphql-yoga.mjs +7 -51
  25. package/dist/routes/health.d.mts +2 -2
  26. package/dist/setup/file-watcher.mjs +84 -0
  27. package/dist/setup/graphql-scanner.mjs +25 -0
  28. package/dist/setup/rollup-integration.mjs +90 -0
  29. package/dist/setup/scaffold-generator.mjs +109 -0
  30. package/dist/setup/ts-config.mjs +69 -0
  31. package/dist/setup.d.mts +2 -2
  32. package/dist/setup.mjs +147 -303
  33. package/dist/types/index.d.mts +2 -2
  34. package/dist/utils/client-codegen.d.mts +1 -1
  35. package/dist/utils/client-codegen.mjs +5 -28
  36. package/dist/utils/codegen-plugin.d.mts +20 -0
  37. package/dist/utils/codegen-plugin.mjs +30 -0
  38. package/dist/utils/directive-parser.d.mts +2 -1
  39. package/dist/utils/directive-parser.mjs +4 -2
  40. package/dist/utils/federation.d.mts +29 -0
  41. package/dist/utils/federation.mjs +40 -0
  42. package/dist/utils/file-generator.mjs +1 -1
  43. package/dist/utils/file-writer.d.mts +35 -0
  44. package/dist/utils/file-writer.mjs +32 -0
  45. package/dist/utils/imports.d.mts +15 -0
  46. package/dist/utils/imports.mjs +25 -0
  47. package/dist/utils/index.d.mts +11 -38
  48. package/dist/utils/index.mjs +10 -287
  49. package/dist/utils/layers.d.mts +22 -0
  50. package/dist/utils/layers.mjs +28 -0
  51. package/dist/utils/ofetch-templates.d.mts +30 -0
  52. package/dist/utils/ofetch-templates.mjs +135 -0
  53. package/dist/utils/path-resolver.d.mts +2 -2
  54. package/dist/utils/path-resolver.mjs +2 -2
  55. package/dist/utils/scanning/common.d.mts +23 -0
  56. package/dist/utils/scanning/common.mjs +39 -0
  57. package/dist/utils/scanning/directives.d.mts +11 -0
  58. package/dist/utils/scanning/directives.mjs +43 -0
  59. package/dist/utils/scanning/documents.d.mts +15 -0
  60. package/dist/utils/scanning/documents.mjs +46 -0
  61. package/dist/utils/scanning/index.d.mts +6 -0
  62. package/dist/utils/scanning/index.mjs +7 -0
  63. package/dist/utils/scanning/resolvers.d.mts +11 -0
  64. package/dist/utils/scanning/resolvers.mjs +100 -0
  65. package/dist/utils/scanning/schemas.d.mts +15 -0
  66. package/dist/utils/scanning/schemas.mjs +29 -0
  67. package/dist/utils/schema-builder.d.mts +48 -0
  68. package/dist/utils/schema-builder.mjs +51 -0
  69. package/dist/utils/server-codegen.mjs +4 -27
  70. package/dist/utils/type-generation.d.mts +6 -12
  71. package/dist/utils/type-generation.mjs +6 -419
  72. package/dist/utils/validation.d.mts +11 -0
  73. package/dist/utils/validation.mjs +34 -0
  74. package/dist/virtual/generators/config.d.mts +22 -0
  75. package/dist/virtual/generators/config.mjs +36 -0
  76. package/dist/virtual/generators/debug.d.mts +14 -0
  77. package/dist/virtual/generators/debug.mjs +53 -0
  78. package/dist/virtual/generators/directives.d.mts +14 -0
  79. package/dist/virtual/generators/directives.mjs +52 -0
  80. package/dist/virtual/generators/index.d.mts +6 -0
  81. package/dist/virtual/generators/index.mjs +7 -0
  82. package/dist/virtual/generators/resolvers.d.mts +14 -0
  83. package/dist/virtual/generators/resolvers.mjs +55 -0
  84. package/dist/virtual/generators/schemas.d.mts +14 -0
  85. package/dist/virtual/generators/schemas.mjs +43 -0
  86. package/package.json +75 -57
@@ -0,0 +1,52 @@
1
+ import { genImport } from "knitwork";
2
+
3
+ //#region src/virtual/generators/directives.ts
4
+ /**
5
+ * Generate virtual module code for server directives
6
+ */
7
+ function generateDirectivesModule(nitro) {
8
+ try {
9
+ const imports = nitro.scanDirectives || [];
10
+ if (imports.length === 0) return "export const directives = []";
11
+ const importsContent = [];
12
+ const invalidImports = [];
13
+ for (const { specifier, imports: importList, options } of imports) try {
14
+ if (!importList || importList.length === 0) {
15
+ invalidImports.push(`${specifier}: No exports found`);
16
+ continue;
17
+ }
18
+ const importCode = genImport(specifier, importList, options);
19
+ importsContent.push(importCode);
20
+ } catch (error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ invalidImports.push(`${specifier}: ${message}`);
23
+ if (nitro.options.dev) nitro.logger.error(`[nitro-graphql] Failed to generate import for directive ${specifier}:`, error);
24
+ }
25
+ if (invalidImports.length > 0 && nitro.options.dev) {
26
+ nitro.logger.warn("[nitro-graphql] Some directive imports could not be generated:");
27
+ for (const msg of invalidImports) nitro.logger.warn(` - ${msg}`);
28
+ }
29
+ const data = imports.map(({ imports: importList }) => importList.map((i) => `{ directive: ${i.as} }`).join(",\n")).filter(Boolean).join(",\n");
30
+ return [
31
+ ...importsContent,
32
+ "",
33
+ "export const directives = [",
34
+ data,
35
+ "]",
36
+ ""
37
+ ].join("\n");
38
+ } catch (error) {
39
+ nitro.logger.error("[nitro-graphql] Failed to generate virtual directive module:", error);
40
+ return "export const directives = []";
41
+ }
42
+ }
43
+ /**
44
+ * Register the directives virtual module with Nitro
45
+ */
46
+ function virtualDirectives(nitro) {
47
+ nitro.options.virtual ??= {};
48
+ nitro.options.virtual["#nitro-graphql/server-directives"] = () => generateDirectivesModule(nitro);
49
+ }
50
+
51
+ //#endregion
52
+ export { generateDirectivesModule, virtualDirectives };
@@ -0,0 +1,6 @@
1
+ import { generateGraphQLConfigModule, generateModuleConfigModule, virtualGraphQLConfig, virtualModuleConfig } from "./config.mjs";
2
+ import { generateDebugInfoModule, virtualDebugInfo } from "./debug.mjs";
3
+ import { generateDirectivesModule, virtualDirectives } from "./directives.mjs";
4
+ import { generateResolversModule, virtualResolvers } from "./resolvers.mjs";
5
+ import { generateSchemasModule, virtualSchemas } from "./schemas.mjs";
6
+ export { generateDebugInfoModule, generateDirectivesModule, generateGraphQLConfigModule, generateModuleConfigModule, generateResolversModule, generateSchemasModule, virtualDebugInfo, virtualDirectives, virtualGraphQLConfig, virtualModuleConfig, virtualResolvers, virtualSchemas };
@@ -0,0 +1,7 @@
1
+ import { generateGraphQLConfigModule, generateModuleConfigModule, virtualGraphQLConfig, virtualModuleConfig } from "./config.mjs";
2
+ import { generateDebugInfoModule, virtualDebugInfo } from "./debug.mjs";
3
+ import { generateDirectivesModule, virtualDirectives } from "./directives.mjs";
4
+ import { generateResolversModule, virtualResolvers } from "./resolvers.mjs";
5
+ import { generateSchemasModule, virtualSchemas } from "./schemas.mjs";
6
+
7
+ export { generateDebugInfoModule, generateDirectivesModule, generateGraphQLConfigModule, generateModuleConfigModule, generateResolversModule, generateSchemasModule, virtualDebugInfo, virtualDirectives, virtualGraphQLConfig, virtualModuleConfig, virtualResolvers, virtualSchemas };
@@ -0,0 +1,14 @@
1
+ import { Nitro } from "nitro/types";
2
+
3
+ //#region src/virtual/generators/resolvers.d.ts
4
+
5
+ /**
6
+ * Generate virtual module code for server resolvers
7
+ */
8
+ declare function generateResolversModule(nitro: Nitro): string;
9
+ /**
10
+ * Register the resolvers virtual module with Nitro
11
+ */
12
+ declare function virtualResolvers(nitro: Nitro): void;
13
+ //#endregion
14
+ export { generateResolversModule, virtualResolvers };
@@ -0,0 +1,55 @@
1
+ import { genImport } from "knitwork";
2
+
3
+ //#region src/virtual/generators/resolvers.ts
4
+ /**
5
+ * Generate virtual module code for server resolvers
6
+ */
7
+ function generateResolversModule(nitro) {
8
+ try {
9
+ const imports = [...nitro.scanResolvers];
10
+ if (imports.length === 0) {
11
+ if (nitro.options.dev) nitro.logger.warn("[nitro-graphql] No resolvers found. Virtual module will export empty array.");
12
+ return "export const resolvers = []";
13
+ }
14
+ const importsContent = [];
15
+ const invalidImports = [];
16
+ for (const { specifier, imports: importList, options } of imports) try {
17
+ if (!importList || importList.length === 0) {
18
+ invalidImports.push(`${specifier}: No exports found`);
19
+ continue;
20
+ }
21
+ const importCode = genImport(specifier, importList, options);
22
+ importsContent.push(importCode);
23
+ } catch (error) {
24
+ const message = error instanceof Error ? error.message : String(error);
25
+ invalidImports.push(`${specifier}: ${message}`);
26
+ if (nitro.options.dev) nitro.logger.error(`[nitro-graphql] Failed to generate import for ${specifier}:`, error);
27
+ }
28
+ if (invalidImports.length > 0 && nitro.options.dev) {
29
+ nitro.logger.warn("[nitro-graphql] Some resolver imports could not be generated:");
30
+ for (const msg of invalidImports) nitro.logger.warn(` - ${msg}`);
31
+ }
32
+ const data = imports.map(({ imports: importList }) => importList.map((i) => `{ resolver: ${i.as} }`).join(",\n")).filter(Boolean).join(",\n");
33
+ return [
34
+ ...importsContent,
35
+ "",
36
+ "export const resolvers = [",
37
+ data,
38
+ "]",
39
+ ""
40
+ ].join("\n");
41
+ } catch (error) {
42
+ nitro.logger.error("[nitro-graphql] Failed to generate virtual resolver module:", error);
43
+ return "export const resolvers = []";
44
+ }
45
+ }
46
+ /**
47
+ * Register the resolvers virtual module with Nitro
48
+ */
49
+ function virtualResolvers(nitro) {
50
+ nitro.options.virtual ??= {};
51
+ nitro.options.virtual["#nitro-graphql/server-resolvers"] = () => generateResolversModule(nitro);
52
+ }
53
+
54
+ //#endregion
55
+ export { generateResolversModule, virtualResolvers };
@@ -0,0 +1,14 @@
1
+ import { Nitro } from "nitro/types";
2
+
3
+ //#region src/virtual/generators/schemas.d.ts
4
+
5
+ /**
6
+ * Generate virtual module code for server schemas
7
+ */
8
+ declare function generateSchemasModule(nitro: Nitro): string;
9
+ /**
10
+ * Register the schemas virtual module with Nitro
11
+ */
12
+ declare function virtualSchemas(nitro: Nitro): void;
13
+ //#endregion
14
+ export { generateSchemasModule, virtualSchemas };
@@ -0,0 +1,43 @@
1
+ import { getImportId } from "../../utils/imports.mjs";
2
+
3
+ //#region src/virtual/generators/schemas.ts
4
+ /**
5
+ * Get all schemas from scanned files and config
6
+ */
7
+ function getSchemas(nitro) {
8
+ return [...nitro.scanSchemas, ...nitro.options.graphql?.typedefs ?? []];
9
+ }
10
+ /**
11
+ * Generate virtual module code for server schemas
12
+ */
13
+ function generateSchemasModule(nitro) {
14
+ try {
15
+ const imports = getSchemas(nitro);
16
+ if (imports.length === 0) {
17
+ if (nitro.options.dev) nitro.logger.warn("[nitro-graphql] No schemas found. Virtual module will export empty array.");
18
+ return "export const schemas = []";
19
+ }
20
+ const importStatements = imports.map((handler) => `import ${getImportId(handler)} from '${handler}';`);
21
+ const schemaArray = imports.map((h) => `{ def: ${getImportId(h)} }`);
22
+ return `
23
+ ${importStatements.join("\n")}
24
+
25
+ export const schemas = [
26
+ ${schemaArray.join(",\n")}
27
+ ];
28
+ `;
29
+ } catch (error) {
30
+ nitro.logger.error("[nitro-graphql] Failed to generate virtual schema module:", error);
31
+ return "export const schemas = []";
32
+ }
33
+ }
34
+ /**
35
+ * Register the schemas virtual module with Nitro
36
+ */
37
+ function virtualSchemas(nitro) {
38
+ nitro.options.virtual ??= {};
39
+ nitro.options.virtual["#nitro-graphql/server-schemas"] = () => generateSchemasModule(nitro);
40
+ }
41
+
42
+ //#endregion
43
+ export { generateSchemasModule, virtualSchemas };
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "nitro-graphql",
3
3
  "type": "module",
4
- "version": "2.0.0-beta.31",
4
+ "version": "2.0.0-beta.33",
5
+ "packageManager": "pnpm@10.24.0",
5
6
  "description": "GraphQL integration for Nitro",
6
7
  "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/productdevbook/nitro-graphql"
11
+ },
7
12
  "sideEffects": false,
8
13
  "imports": {
9
14
  "#graphql/server": {
@@ -70,6 +75,26 @@
70
75
  "files": [
71
76
  "dist"
72
77
  ],
78
+ "scripts": {
79
+ "prepack": "pnpm build",
80
+ "build": "tsdown",
81
+ "dev": "tsdown --watch",
82
+ "bumpp": "bumpp package.json",
83
+ "release": "pnpm build && pnpm bumpp && pnpm publish --no-git-checks --access public",
84
+ "playground:nitro": "cd playgrounds/nitro && pnpm install && pnpm dev",
85
+ "playground:nuxt": "cd playgrounds/nuxt && pnpm install && pnpm dev",
86
+ "playground:federation": "cd playgrounds/federation && pnpm install && pnpm dev",
87
+ "docs:dev": "cd .docs && pnpm install && pnpm update:metadata && pnpm dev",
88
+ "docs:build": "cd .docs && pnpm install && pnpm update:metadata && pnpm build",
89
+ "docs:preview": "cd .docs && pnpm preview",
90
+ "lint": "eslint .",
91
+ "lint:fix": "eslint . --fix",
92
+ "test": "vitest",
93
+ "test:ui": "vitest --ui",
94
+ "test:run": "vitest run",
95
+ "test:coverage": "vitest run --coverage",
96
+ "test:types": "tsc --noEmit"
97
+ },
73
98
  "peerDependencies": {
74
99
  "@apollo/server": "^5.0.0",
75
100
  "graphql": "^16.11.0",
@@ -81,65 +106,58 @@
81
106
  }
82
107
  },
83
108
  "dependencies": {
84
- "@apollo/subgraph": "^2.12.1",
85
- "@graphql-codegen/core": "^5.0.0",
86
- "@graphql-codegen/import-types-preset": "^3.0.1",
87
- "@graphql-codegen/typescript": "^5.0.4",
88
- "@graphql-codegen/typescript-generic-sdk": "^4.0.2",
89
- "@graphql-codegen/typescript-operations": "^5.0.4",
90
- "@graphql-codegen/typescript-resolvers": "^5.1.2",
91
- "@graphql-tools/graphql-file-loader": "^8.1.6",
92
- "@graphql-tools/load": "^8.1.6",
93
- "@graphql-tools/load-files": "^7.0.1",
94
- "@graphql-tools/merge": "^9.1.5",
95
- "@graphql-tools/schema": "^10.0.29",
96
- "@graphql-tools/url-loader": "^9.0.4",
97
- "@graphql-tools/utils": "^10.10.3",
98
- "chokidar": "^4.0.3",
99
- "consola": "^3.4.2",
100
- "defu": "^6.1.4",
101
- "graphql-config": "^5.1.5",
102
- "graphql-scalars": "^1.25.0",
103
- "knitwork": "^1.3.0",
104
- "ohash": "^2.0.11",
105
- "oxc-parser": "^0.98.0",
106
- "pathe": "^2.0.3",
107
- "tinyglobby": "^0.2.15"
109
+ "@apollo/subgraph": "catalog:",
110
+ "@graphql-codegen/core": "catalog:",
111
+ "@graphql-codegen/import-types-preset": "catalog:",
112
+ "@graphql-codegen/typescript": "catalog:",
113
+ "@graphql-codegen/typescript-generic-sdk": "catalog:",
114
+ "@graphql-codegen/typescript-operations": "catalog:",
115
+ "@graphql-codegen/typescript-resolvers": "catalog:",
116
+ "@graphql-tools/graphql-file-loader": "catalog:",
117
+ "@graphql-tools/load": "catalog:",
118
+ "@graphql-tools/load-files": "catalog:",
119
+ "@graphql-tools/merge": "catalog:",
120
+ "@graphql-tools/schema": "catalog:",
121
+ "@graphql-tools/url-loader": "catalog:",
122
+ "@graphql-tools/utils": "catalog:",
123
+ "chokidar": "catalog:",
124
+ "consola": "catalog:",
125
+ "defu": "catalog:",
126
+ "graphql-config": "catalog:",
127
+ "graphql-scalars": "catalog:",
128
+ "knitwork": "catalog:",
129
+ "ohash": "catalog:",
130
+ "oxc-parser": "catalog:",
131
+ "pathe": "catalog:",
132
+ "tinyglobby": "catalog:"
108
133
  },
109
134
  "devDependencies": {
110
- "@antfu/eslint-config": "^6.2.0",
111
- "@nuxt/kit": "^4.2.1",
112
- "@nuxt/schema": "^4.2.1",
113
- "@types/node": "^24.10.1",
114
- "@vitejs/devtools": "^0.0.0-alpha.16",
115
- "bumpp": "^10.3.1",
116
- "changelogen": "^0.6.2",
117
- "crossws": "^0.4.1",
118
- "eslint": "^9.39.1",
119
- "graphql": "16.12.0",
120
- "graphql-yoga": "5.16.2",
121
- "nitro": "npm:nitro-nightly@latest",
122
- "tsdown": "^0.16.6",
123
- "typescript": "^5.9.3",
124
- "vite": "npm:rolldown-vite@latest",
125
- "vitepress-plugin-llms": "^1.9.3"
135
+ "@antfu/eslint-config": "catalog:",
136
+ "@nuxt/kit": "catalog:",
137
+ "@nuxt/schema": "catalog:",
138
+ "@types/node": "catalog:",
139
+ "@vitejs/devtools": "catalog:",
140
+ "@vitest/ui": "catalog:",
141
+ "bumpp": "catalog:",
142
+ "changelogen": "catalog:",
143
+ "crossws": "catalog:",
144
+ "eslint": "catalog:",
145
+ "graphql": "catalog:",
146
+ "graphql-yoga": "catalog:",
147
+ "nitro": "catalog:",
148
+ "tsdown": "catalog:",
149
+ "typescript": "catalog:",
150
+ "vite": "catalog:",
151
+ "vitepress-plugin-llms": "catalog:",
152
+ "vitest": "catalog:"
153
+ },
154
+ "pnpm": {
155
+ "overrides": {
156
+ "nitro": "npm:nitro-nightly@latest",
157
+ "vite": "npm:rolldown-vite@latest"
158
+ }
126
159
  },
127
160
  "resolutions": {
128
161
  "nitro-graphql": "link:."
129
- },
130
- "scripts": {
131
- "build": "tsdown",
132
- "dev": "tsdown --watch",
133
- "bumpp": "bumpp package.json",
134
- "release": "pnpm build && pnpm bumpp && pnpm publish --no-git-checks --access public",
135
- "playground:nitro": "cd playgrounds/nitro && pnpm install && pnpm dev",
136
- "playground:nuxt": "cd playgrounds/nuxt && pnpm install && pnpm dev",
137
- "playground:federation": "cd playgrounds/federation && pnpm install && pnpm dev",
138
- "docs:dev": "cd .docs && pnpm install && pnpm update:metadata && pnpm dev",
139
- "docs:build": "cd .docs && pnpm install && pnpm update:metadata && pnpm build",
140
- "docs:preview": "cd .docs && pnpm preview",
141
- "lint": "eslint .",
142
- "lint:fix": "eslint . --fix",
143
- "test:types": "tsc --noEmit"
144
162
  }
145
- }
163
+ }