nitro-graphql 0.0.1 → 0.0.2

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 (44) hide show
  1. package/README.md +14 -14
  2. package/dist/client-watcher-DpYM5JpN.js +101 -0
  3. package/dist/client-watcher-DpYM5JpN.js.map +1 -0
  4. package/dist/client-watcher.d.ts +1 -1
  5. package/dist/client-watcher.d.ts.map +1 -1
  6. package/dist/client-watcher.js +4 -91
  7. package/dist/{codegen-Dbw6gEZt.js → codegen-JCUglvgC.js} +1 -1
  8. package/dist/{codegen-Dbw6gEZt.js.map → codegen-JCUglvgC.js.map} +1 -1
  9. package/dist/codegen.d.ts +16 -2
  10. package/dist/codegen.d.ts.map +1 -0
  11. package/dist/codegen.js +1 -1
  12. package/dist/context.d.ts +13 -2
  13. package/dist/context.d.ts.map +1 -0
  14. package/dist/context.js +0 -1
  15. package/dist/index.d.ts +1 -5
  16. package/dist/index.js +158 -323
  17. package/dist/index.js.map +1 -1
  18. package/dist/prerender-BWFqvlWv.js +280 -0
  19. package/dist/prerender-BWFqvlWv.js.map +1 -0
  20. package/dist/{scanner-BdcKEPQk.js → scanner-DA9Zg-ri.js} +4 -4
  21. package/dist/scanner-DA9Zg-ri.js.map +1 -0
  22. package/dist/{types-D_NqyCcy.d.ts → types-BLYuSc3f.d.ts} +3 -2
  23. package/dist/{types-D_NqyCcy.d.ts.map → types-BLYuSc3f.d.ts.map} +1 -1
  24. package/dist/utils-C7-cM2zI.js +24 -0
  25. package/dist/utils-C7-cM2zI.js.map +1 -0
  26. package/dist/utils.d.ts +16 -3
  27. package/dist/utils.d.ts.map +1 -0
  28. package/dist/utils.js +2 -2
  29. package/package.json +4 -4
  30. package/dist/client-watcher.js.map +0 -1
  31. package/dist/codegen-DWJuLowd.d.ts +0 -16
  32. package/dist/codegen-DWJuLowd.d.ts.map +0 -1
  33. package/dist/context-BgqNJFCT.d.ts +0 -13
  34. package/dist/context-BgqNJFCT.d.ts.map +0 -1
  35. package/dist/context-CZdhkJYD.js +0 -0
  36. package/dist/scanner-BdcKEPQk.js.map +0 -1
  37. package/dist/utils-87_22aIA.js +0 -41
  38. package/dist/utils-87_22aIA.js.map +0 -1
  39. package/dist/utils-BuYDOLIi.d.ts +0 -22
  40. package/dist/utils-BuYDOLIi.d.ts.map +0 -1
  41. package/dist/watcher.d.ts +0 -9
  42. package/dist/watcher.d.ts.map +0 -1
  43. package/dist/watcher.js +0 -96
  44. package/dist/watcher.js.map +0 -1
package/README.md CHANGED
@@ -111,9 +111,9 @@ extend type Mutation {
111
111
  #### Domain-based Resolver Files
112
112
  ```ts
113
113
  // server/graphql/users/user-queries.ts
114
- import { createResolver } from 'nitro-graphql'
114
+ import { defineResolver } from 'nitro-graphql'
115
115
 
116
- export default createResolver({
116
+ export default defineResolver({
117
117
  Query: {
118
118
  users: async (_, __, { storage }) => {
119
119
  return await storage.getItem('users') || []
@@ -128,9 +128,9 @@ export default createResolver({
128
128
 
129
129
  ```ts
130
130
  // server/graphql/users/create-user.ts
131
- import { createResolver } from 'nitro-graphql'
131
+ import { defineResolver } from 'nitro-graphql'
132
132
 
133
- export default createResolver({
133
+ export default defineResolver({
134
134
  Mutation: {
135
135
  createUser: async (_, { input }, { storage }) => {
136
136
  const users = await storage.getItem('users') || []
@@ -153,9 +153,9 @@ The module provides utilities for better developer experience:
153
153
 
154
154
  ```ts
155
155
  // server/graphql/hello.ts
156
- import { createResolver } from 'nitro-graphql'
156
+ import { defineResolver } from 'nitro-graphql'
157
157
 
158
- export default createResolver({
158
+ export default defineResolver({
159
159
  Query: {
160
160
  hello: () => 'Hello World!',
161
161
  greeting: (_, { name }) => `Hello ${name}!`
@@ -175,9 +175,9 @@ These types are automatically available in your resolvers:
175
175
  ```ts
176
176
  import type { QueryResolvers } from '#build/graphql-types.generated'
177
177
  // server/graphql/users/user-queries.ts
178
- import { createResolver } from 'nitro-graphql'
178
+ import { defineResolver } from 'nitro-graphql'
179
179
 
180
- export default createResolver({
180
+ export default defineResolver({
181
181
  Query: {
182
182
  users: async (_, __, { storage }): Promise<User[]> => {
183
183
  return await storage.getItem('users') || []
@@ -222,9 +222,9 @@ The GraphQL context includes:
222
222
 
223
223
  ```ts
224
224
  // Example resolver with full context usage
225
- import { createResolver } from 'nitro-graphql'
225
+ import { defineResolver } from 'nitro-graphql'
226
226
 
227
- export default createResolver({
227
+ export default defineResolver({
228
228
  Query: {
229
229
  currentUser: async (_, __, { event, request, storage }) => {
230
230
  const token = getCookie(event, 'auth-token')
@@ -380,9 +380,9 @@ export default defineNitroConfig({
380
380
  import { GraphQLScalarType } from 'graphql'
381
381
  import { Kind } from 'graphql/language'
382
382
  // server/graphql/scalars/DateTime.ts
383
- import { createResolver } from 'nitro-graphql'
383
+ import { defineResolver } from 'nitro-graphql'
384
384
 
385
- export default createResolver({
385
+ export default defineResolver({
386
386
  DateTime: new GraphQLScalarType({
387
387
  name: 'DateTime',
388
388
  serialize: (value: Date) => value.toISOString(),
@@ -401,9 +401,9 @@ export default createResolver({
401
401
 
402
402
  ```ts
403
403
  // server/graphql/users/user-queries.ts
404
- import { createResolver } from 'nitro-graphql'
404
+ import { defineResolver } from 'nitro-graphql'
405
405
 
406
- export default createResolver({
406
+ export default defineResolver({
407
407
  Query: {
408
408
  user: async (_, { id }, { storage }) => {
409
409
  try {
@@ -0,0 +1,101 @@
1
+ import { scanGraphQLFiles } from "./scanner-DA9Zg-ri.js";
2
+ import { debounce } from "./utils-C7-cM2zI.js";
3
+ import { mkdir, writeFile } from "node:fs/promises";
4
+ import { mergeTypeDefs } from "@graphql-tools/merge";
5
+ import { makeExecutableSchema } from "@graphql-tools/schema";
6
+ import { consola } from "consola";
7
+ import { join } from "pathe";
8
+
9
+ //#region src/client-watcher.ts
10
+ const logger = consola.withTag("graphql");
11
+ async function regenerateClientTypes(nitro, options) {
12
+ try {
13
+ if (!options.client?.enabled) return;
14
+ const scanResult = await scanGraphQLFiles(nitro);
15
+ if (scanResult.typeDefs.length === 0) {
16
+ logger.warn("⚠️ No server schema found for client type generation");
17
+ return;
18
+ }
19
+ const mergedTypeDefs = mergeTypeDefs(scanResult.typeDefs);
20
+ const schema = makeExecutableSchema({
21
+ typeDefs: mergedTypeDefs,
22
+ resolvers: {}
23
+ });
24
+ const getClientPatterns = () => {
25
+ if (options.client?.watchPatterns) return options.client.watchPatterns;
26
+ const basePatterns = [
27
+ join(nitro.options.srcDir, "**/*.graphql"),
28
+ join(nitro.options.srcDir, "**/*.gql"),
29
+ `!${join(nitro.options.srcDir, "graphql/**/*")}`
30
+ ];
31
+ if (nitro.options.framework?.name === "nuxt") if (options.client?.nuxtPatterns) basePatterns.unshift(...options.client.nuxtPatterns);
32
+ else basePatterns.unshift(join(nitro.options.srcDir, "app/graphql/**/*.graphql"), join(nitro.options.srcDir, "app/graphql/**/*.gql"));
33
+ return basePatterns;
34
+ };
35
+ const clientPatterns = getClientPatterns();
36
+ const { generateClientTypes } = await import("./client-codegen-DM2n5Gt2.js");
37
+ const generatedTypes = await generateClientTypes(schema, clientPatterns, options.client.config, options.client.outputPath);
38
+ if (generatedTypes) {
39
+ const outputPath = options.client.outputPath || join(nitro.options.buildDir, "types", "graphql-client.generated.ts");
40
+ const typesDir = join(nitro.options.buildDir, "types");
41
+ await mkdir(typesDir, { recursive: true });
42
+ await writeFile(outputPath, generatedTypes);
43
+ logger.success("✨ Client types updated");
44
+ }
45
+ } catch (error) {
46
+ const errorMessage = error instanceof Error ? error.message : String(error);
47
+ logger.error("❌ Client type generation failed:", errorMessage);
48
+ }
49
+ }
50
+ async function setupClientWatcher(nitro, options) {
51
+ if (!options.client?.enabled) {
52
+ logger.info("🚫 Client type generation disabled");
53
+ return;
54
+ }
55
+ const getClientPatterns = () => {
56
+ if (options.client?.watchPatterns) return options.client.watchPatterns;
57
+ const basePatterns = [join(nitro.options.srcDir, "**/*.graphql"), join(nitro.options.srcDir, "**/*.gql")];
58
+ if (nitro.options.framework?.name === "nuxt") if (options.client?.nuxtPatterns) basePatterns.unshift(...options.client.nuxtPatterns);
59
+ else basePatterns.unshift(join(nitro.options.srcDir, "app/graphql/**/*.graphql"), join(nitro.options.srcDir, "app/graphql/**/*.gql"));
60
+ return basePatterns;
61
+ };
62
+ const clientPatterns = getClientPatterns();
63
+ const generateClientTypesDebounced = debounce(async () => {
64
+ await regenerateClientTypes(nitro, options);
65
+ }, 300);
66
+ const { watch } = await import("chokidar");
67
+ const watcher = watch(clientPatterns, {
68
+ persistent: true,
69
+ ignoreInitial: true,
70
+ ignored: [/(^|[/\\])\.\.\./, join(nitro.options.srcDir, "graphql/**/*")],
71
+ followSymlinks: false,
72
+ usePolling: true,
73
+ interval: 500,
74
+ binaryInterval: 500
75
+ });
76
+ watcher.on("add", (path) => {
77
+ logger.info(`📁 Client file added: ${path}`);
78
+ generateClientTypesDebounced();
79
+ });
80
+ watcher.on("change", (path) => {
81
+ logger.info(`📝 Client file changed: ${path}`);
82
+ generateClientTypesDebounced();
83
+ });
84
+ watcher.on("unlink", (path) => {
85
+ logger.info(`🗑️ Client file removed: ${path}`);
86
+ generateClientTypesDebounced();
87
+ });
88
+ watcher.on("error", (error) => {
89
+ logger.error("❌ Client watcher error:", error);
90
+ });
91
+ nitro.hooks.hook("close", () => {
92
+ logger.info("🔒 Closing client watcher");
93
+ watcher.close();
94
+ });
95
+ await regenerateClientTypes(nitro, options);
96
+ logger.success("✅ Client watcher ready");
97
+ }
98
+
99
+ //#endregion
100
+ export { setupClientWatcher };
101
+ //# sourceMappingURL=client-watcher-DpYM5JpN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-watcher-DpYM5JpN.js","names":["nitro: Nitro","options: NitroGraphQLOptions"],"sources":["../src/client-watcher.ts"],"sourcesContent":["import type { Nitro } from 'nitropack/types'\nimport type { NitroGraphQLOptions } from './types'\nimport { mkdir, writeFile } from 'node:fs/promises'\nimport { mergeTypeDefs } from '@graphql-tools/merge'\nimport { makeExecutableSchema } from '@graphql-tools/schema'\nimport { consola } from 'consola'\nimport { join } from 'pathe'\nimport { scanGraphQLFiles } from './scanner'\nimport { debounce } from './utils'\n\nconst logger = consola.withTag('graphql')\n\nasync function regenerateClientTypes(nitro: Nitro, options: NitroGraphQLOptions) {\n try {\n if (!options.client?.enabled)\n return\n\n // Regenerating client types silently\n\n // Get the server schema\n const scanResult = await scanGraphQLFiles(nitro)\n if (scanResult.typeDefs.length === 0) {\n logger.warn('⚠️ No server schema found for client type generation')\n return\n }\n\n const mergedTypeDefs = mergeTypeDefs(scanResult.typeDefs)\n const schema = makeExecutableSchema({\n typeDefs: mergedTypeDefs,\n resolvers: {},\n })\n\n // Simple client patterns\n const getClientPatterns = () => {\n if (options.client?.watchPatterns) {\n return options.client.watchPatterns\n }\n\n const basePatterns = [\n join(nitro.options.srcDir, '**/*.graphql'),\n join(nitro.options.srcDir, '**/*.gql'),\n `!${join(nitro.options.srcDir, 'graphql/**/*')}`, // Exclude server files\n ]\n\n // Add Nuxt-specific patterns\n if (nitro.options.framework?.name === 'nuxt') {\n if (options.client?.nuxtPatterns) {\n basePatterns.unshift(...options.client.nuxtPatterns)\n }\n else {\n basePatterns.unshift(\n join(nitro.options.srcDir, 'app/graphql/**/*.graphql'),\n join(nitro.options.srcDir, 'app/graphql/**/*.gql'),\n )\n }\n }\n\n return basePatterns\n }\n\n const clientPatterns = getClientPatterns()\n\n // Generate client types using dynamic import\n const { generateClientTypes } = await import('./client-codegen')\n const generatedTypes = await generateClientTypes(\n schema,\n clientPatterns,\n options.client.config,\n options.client.outputPath,\n )\n\n if (generatedTypes) {\n const outputPath = options.client.outputPath\n || join(nitro.options.buildDir, 'types', 'graphql-client.generated.ts')\n\n const typesDir = join(nitro.options.buildDir, 'types')\n await mkdir(typesDir, { recursive: true })\n await writeFile(outputPath, generatedTypes)\n\n logger.success('✨ Client types updated')\n }\n }\n catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n logger.error('❌ Client type generation failed:', errorMessage)\n }\n}\n\nexport async function setupClientWatcher(nitro: Nitro, options: NitroGraphQLOptions) {\n if (!options.client?.enabled) {\n logger.info('🚫 Client type generation disabled')\n return\n }\n\n // Simple client patterns\n const getClientPatterns = () => {\n if (options.client?.watchPatterns) {\n return options.client.watchPatterns\n }\n\n const basePatterns = [\n join(nitro.options.srcDir, '**/*.graphql'),\n join(nitro.options.srcDir, '**/*.gql'),\n ]\n\n // Add Nuxt-specific patterns\n if (nitro.options.framework?.name === 'nuxt') {\n if (options.client?.nuxtPatterns) {\n basePatterns.unshift(...options.client.nuxtPatterns)\n }\n else {\n basePatterns.unshift(\n join(nitro.options.srcDir, 'app/graphql/**/*.graphql'),\n join(nitro.options.srcDir, 'app/graphql/**/*.gql'),\n )\n }\n }\n\n return basePatterns\n }\n\n const clientPatterns = getClientPatterns()\n\n // Create debounced function\n const generateClientTypesDebounced = debounce(async () => {\n await regenerateClientTypes(nitro, options)\n }, 300)\n\n // Use chokidar directly\n const { watch } = await import('chokidar')\n\n const watcher = watch(clientPatterns, {\n persistent: true,\n ignoreInitial: true,\n ignored: [\n /(^|[/\\\\])\\.\\.\\./, // ignore dotfiles\n join(nitro.options.srcDir, 'graphql/**/*'), // Exclude server files\n ],\n followSymlinks: false,\n usePolling: true,\n interval: 500,\n binaryInterval: 500,\n })\n\n // Simple event handlers\n watcher.on('add', (path) => {\n logger.info(`📁 Client file added: ${path}`)\n generateClientTypesDebounced()\n })\n\n watcher.on('change', (path) => {\n logger.info(`📝 Client file changed: ${path}`)\n generateClientTypesDebounced()\n })\n\n watcher.on('unlink', (path) => {\n logger.info(`🗑️ Client file removed: ${path}`)\n generateClientTypesDebounced()\n })\n\n watcher.on('error', (error) => {\n logger.error('❌ Client watcher error:', error)\n })\n\n // Cleanup\n nitro.hooks.hook('close', () => {\n logger.info('🔒 Closing client watcher')\n watcher.close()\n })\n\n // Generate initial types\n await regenerateClientTypes(nitro, options)\n\n logger.success('✅ Client watcher ready')\n}\n"],"mappings":";;;;;;;;;AAUA,MAAM,SAAS,QAAQ,QAAQ,UAAU;AAEzC,eAAe,sBAAsBA,OAAcC,SAA8B;AAC/E,KAAI;AACF,OAAK,QAAQ,QAAQ,QACnB;EAKF,MAAM,aAAa,MAAM,iBAAiB,MAAM;AAChD,MAAI,WAAW,SAAS,WAAW,GAAG;AACpC,UAAO,KAAK,wDAAwD;AACpE;EACD;EAED,MAAM,iBAAiB,cAAc,WAAW,SAAS;EACzD,MAAM,SAAS,qBAAqB;GAClC,UAAU;GACV,WAAW,CAAE;EACd,EAAC;EAGF,MAAM,oBAAoB,MAAM;AAC9B,OAAI,QAAQ,QAAQ,cAClB,QAAO,QAAQ,OAAO;GAGxB,MAAM,eAAe;IACnB,KAAK,MAAM,QAAQ,QAAQ,eAAe;IAC1C,KAAK,MAAM,QAAQ,QAAQ,WAAW;IACtC,CAAC,CAAC,EAAE,KAAK,MAAM,QAAQ,QAAQ,eAAe,EAAE;GACjD;AAGD,OAAI,MAAM,QAAQ,WAAW,SAAS,OACpC,KAAI,QAAQ,QAAQ,aAClB,cAAa,QAAQ,GAAG,QAAQ,OAAO,aAAa;OAGpD,cAAa,QACX,KAAK,MAAM,QAAQ,QAAQ,2BAA2B,EACtD,KAAK,MAAM,QAAQ,QAAQ,uBAAuB,CACnD;AAIL,UAAO;EACR;EAED,MAAM,iBAAiB,mBAAmB;EAG1C,MAAM,EAAE,qBAAqB,GAAG,MAAM,OAAO;EAC7C,MAAM,iBAAiB,MAAM,oBAC3B,QACA,gBACA,QAAQ,OAAO,QACf,QAAQ,OAAO,WAChB;AAED,MAAI,gBAAgB;GAClB,MAAM,aAAa,QAAQ,OAAO,cAC7B,KAAK,MAAM,QAAQ,UAAU,SAAS,8BAA8B;GAEzE,MAAM,WAAW,KAAK,MAAM,QAAQ,UAAU,QAAQ;AACtD,SAAM,MAAM,UAAU,EAAE,WAAW,KAAM,EAAC;AAC1C,SAAM,UAAU,YAAY,eAAe;AAE3C,UAAO,QAAQ,yBAAyB;EACzC;CACF,SACM,OAAO;EACZ,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAC3E,SAAO,MAAM,oCAAoC,aAAa;CAC/D;AACF;AAED,eAAsB,mBAAmBD,OAAcC,SAA8B;AACnF,MAAK,QAAQ,QAAQ,SAAS;AAC5B,SAAO,KAAK,qCAAqC;AACjD;CACD;CAGD,MAAM,oBAAoB,MAAM;AAC9B,MAAI,QAAQ,QAAQ,cAClB,QAAO,QAAQ,OAAO;EAGxB,MAAM,eAAe,CACnB,KAAK,MAAM,QAAQ,QAAQ,eAAe,EAC1C,KAAK,MAAM,QAAQ,QAAQ,WAAW,AACvC;AAGD,MAAI,MAAM,QAAQ,WAAW,SAAS,OACpC,KAAI,QAAQ,QAAQ,aAClB,cAAa,QAAQ,GAAG,QAAQ,OAAO,aAAa;MAGpD,cAAa,QACX,KAAK,MAAM,QAAQ,QAAQ,2BAA2B,EACtD,KAAK,MAAM,QAAQ,QAAQ,uBAAuB,CACnD;AAIL,SAAO;CACR;CAED,MAAM,iBAAiB,mBAAmB;CAG1C,MAAM,+BAA+B,SAAS,YAAY;AACxD,QAAM,sBAAsB,OAAO,QAAQ;CAC5C,GAAE,IAAI;CAGP,MAAM,EAAE,OAAO,GAAG,MAAM,OAAO;CAE/B,MAAM,UAAU,MAAM,gBAAgB;EACpC,YAAY;EACZ,eAAe;EACf,SAAS,CACP,mBACA,KAAK,MAAM,QAAQ,QAAQ,eAAe,AAC3C;EACD,gBAAgB;EAChB,YAAY;EACZ,UAAU;EACV,gBAAgB;CACjB,EAAC;AAGF,SAAQ,GAAG,OAAO,CAAC,SAAS;AAC1B,SAAO,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC;AAC5C,gCAA8B;CAC/B,EAAC;AAEF,SAAQ,GAAG,UAAU,CAAC,SAAS;AAC7B,SAAO,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC;AAC9C,gCAA8B;CAC/B,EAAC;AAEF,SAAQ,GAAG,UAAU,CAAC,SAAS;AAC7B,SAAO,KAAK,CAAC,yBAAyB,EAAE,MAAM,CAAC;AAC/C,gCAA8B;CAC/B,EAAC;AAEF,SAAQ,GAAG,SAAS,CAAC,UAAU;AAC7B,SAAO,MAAM,2BAA2B,MAAM;CAC/C,EAAC;AAGF,OAAM,MAAM,KAAK,SAAS,MAAM;AAC9B,SAAO,KAAK,4BAA4B;AACxC,UAAQ,OAAO;CAChB,EAAC;AAGF,OAAM,sBAAsB,OAAO,QAAQ;AAE3C,QAAO,QAAQ,yBAAyB;AACzC"}
@@ -1,4 +1,4 @@
1
- import { NitroGraphQLOptions } from "./types-D_NqyCcy.js";
1
+ import { NitroGraphQLOptions } from "./types-BLYuSc3f.js";
2
2
  import { Nitro } from "nitropack/types";
3
3
 
4
4
  //#region src/client-watcher.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"client-watcher.d.ts","names":[],"sources":["../src/client-watcher.ts"],"sourcesContent":[],"mappings":";;;;iBAmEsB,kBAAA,QAA0B,gBAAgB,sBAAmB"}
1
+ {"version":3,"file":"client-watcher.d.ts","names":[],"sources":["../src/client-watcher.ts"],"sourcesContent":[],"mappings":";;;;iBAwFsB,kBAAA,QAA0B,gBAAgB,sBAAmB"}
@@ -1,92 +1,5 @@
1
- import { scanGraphQLFiles } from "./scanner-BdcKEPQk.js";
2
- import { debounce } from "./utils-87_22aIA.js";
3
- import { mkdir, writeFile } from "node:fs/promises";
4
- import { mergeTypeDefs } from "@graphql-tools/merge";
5
- import { makeExecutableSchema } from "@graphql-tools/schema";
6
- import { consola } from "consola";
7
- import { join } from "pathe";
1
+ import "./scanner-DA9Zg-ri.js";
2
+ import "./utils-C7-cM2zI.js";
3
+ import { setupClientWatcher } from "./client-watcher-DpYM5JpN.js";
8
4
 
9
- //#region src/client-watcher.ts
10
- const logger = consola.withTag("graphql");
11
- async function regenerateClientTypes(nitro, options) {
12
- try {
13
- if (!options.client?.enabled) return;
14
- const scanResult = await scanGraphQLFiles(nitro);
15
- if (scanResult.typeDefs.length === 0) {
16
- logger.warn("⚠️ No server schema found for client type generation");
17
- return;
18
- }
19
- const mergedTypeDefs = mergeTypeDefs(scanResult.typeDefs);
20
- const schema = makeExecutableSchema({
21
- typeDefs: mergedTypeDefs,
22
- resolvers: {}
23
- });
24
- const clientPatterns = options.client.watchPatterns || [
25
- join(nitro.options.srcDir, "**/*.graphql"),
26
- join(nitro.options.srcDir, "**/*.gql"),
27
- `!${join(nitro.options.srcDir, "graphql/**/*")}`
28
- ];
29
- const { generateClientTypes } = await import("./client-codegen-DM2n5Gt2.js");
30
- const generatedTypes = await generateClientTypes(schema, clientPatterns, options.client.config, options.client.outputPath);
31
- if (generatedTypes) {
32
- const outputPath = options.client.outputPath || join(nitro.options.buildDir, "types", "graphql-client.generated.ts");
33
- const typesDir = join(nitro.options.buildDir, "types");
34
- await mkdir(typesDir, { recursive: true });
35
- await writeFile(outputPath, generatedTypes);
36
- logger.success("✨ Client types updated");
37
- }
38
- } catch (error) {
39
- const errorMessage = error instanceof Error ? error.message : String(error);
40
- logger.error("❌ Client type generation failed:", errorMessage);
41
- }
42
- }
43
- async function setupClientWatcher(nitro, options) {
44
- if (!options.client?.enabled) {
45
- logger.info("🚫 Client type generation disabled");
46
- return;
47
- }
48
- const clientPatterns = options.client.watchPatterns || [join(nitro.options.srcDir, "**/*.graphql"), join(nitro.options.srcDir, "**/*.gql")];
49
- const generateClientTypesDebounced = debounce(async () => {
50
- await regenerateClientTypes(nitro, options);
51
- }, 300);
52
- const { watch } = await import("chokidar");
53
- const { globby } = await import("globby");
54
- const existingClientFiles = await globby(clientPatterns, {
55
- absolute: true,
56
- ignore: [join(nitro.options.srcDir, "graphql/**/*")]
57
- });
58
- const watchPatterns = existingClientFiles.length > 0 ? existingClientFiles : clientPatterns;
59
- const watcher = watch(watchPatterns, {
60
- persistent: true,
61
- ignoreInitial: true,
62
- ignored: /(^|[/\\])\../,
63
- followSymlinks: false,
64
- depth: 10,
65
- usePolling: true,
66
- interval: 1e3,
67
- binaryInterval: 1e3
68
- });
69
- watcher.on("change", (_path) => {
70
- generateClientTypesDebounced();
71
- });
72
- watcher.on("add", (_path) => {
73
- generateClientTypesDebounced();
74
- });
75
- watcher.on("unlink", (_path) => {
76
- generateClientTypesDebounced();
77
- });
78
- watcher.on("error", (error) => {
79
- const errorMessage = error instanceof Error ? error.message : String(error);
80
- logger.error("❌ Client watcher error:", errorMessage);
81
- });
82
- nitro.hooks.hook("close", () => {
83
- logger.info("🔒 Closing client watcher");
84
- watcher.close();
85
- });
86
- await generateClientTypesDebounced();
87
- logger.success("✅ Client watcher ready");
88
- }
89
-
90
- //#endregion
91
- export { setupClientWatcher };
92
- //# sourceMappingURL=client-watcher.js.map
5
+ export { setupClientWatcher };
@@ -107,4 +107,4 @@ type ResolverReturnTypeObject<T extends object> = {
107
107
 
108
108
  //#endregion
109
109
  export { generateTypes };
110
- //# sourceMappingURL=codegen-Dbw6gEZt.js.map
110
+ //# sourceMappingURL=codegen-JCUglvgC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-Dbw6gEZt.js","names":["_schema: any","_documents: any","_config: any","_info: any","schema: GraphQLSchema","config: CodegenServerConfig","outputPath?: string","defaultConfig: CodegenServerConfig","e: any"],"sources":["../src/codegen.ts"],"sourcesContent":["import type { GraphQLSchema } from 'graphql'\nimport { codegen } from '@graphql-codegen/core'\nimport * as typescriptPlugin from '@graphql-codegen/typescript'\nimport * as typescriptResolversPlugin from '@graphql-codegen/typescript-resolvers'\nimport { printSchemaWithDirectives } from '@graphql-tools/utils'\nimport { defu } from 'defu'\nimport { parse } from 'graphql'\nimport {\n CurrencyResolver,\n DateTimeResolver,\n JSONResolver,\n NonEmptyStringResolver,\n UUIDResolver,\n} from 'graphql-scalars'\n\nexport interface CodegenServerConfig {\n contextType?: string\n scalars?: Record<string, any>\n defaultMapper?: string\n mapperTypeSuffix?: string\n [key: string]: any\n}\n\nfunction pluginContent(_schema: any, _documents: any, _config: any, _info: any) {\n return {\n prepend: [\n '// THIS FILE IS GENERATED, DO NOT EDIT!',\n '/* eslint-disable eslint-comments/no-unlimited-disable */',\n '/* tslint:disable */',\n '/* eslint-disable */',\n '/* prettier-ignore */',\n ],\n content: '',\n }\n}\n\nexport async function generateTypes(\n schema: GraphQLSchema,\n config: CodegenServerConfig = {},\n outputPath?: string,\n) {\n const defaultConfig: CodegenServerConfig = {\n scalars: {\n Boolean: {\n input: 'boolean',\n output: 'boolean',\n },\n DateTime: DateTimeResolver.extensions.codegenScalarType as any,\n DateTimeISO: DateTimeResolver.extensions.codegenScalarType as any,\n UUID: UUIDResolver.extensions.codegenScalarType as any,\n JSON: JSONResolver.extensions.codegenScalarType as any,\n JSONObject: JSONResolver.extensions.codegenScalarType as any,\n NonEmptyString: NonEmptyStringResolver.extensions.codegenScalarType as any,\n Currency: CurrencyResolver.extensions.codegenScalarType as any,\n File: {\n input: 'File',\n output: 'File',\n },\n Cursor: {\n input: 'number',\n output: 'number',\n },\n },\n defaultScalarType: 'unknown',\n defaultMapper: `ResolverReturnType<{T}>`,\n contextType: './context#GraphQLContext',\n maybeValue: 'T | null | undefined',\n inputMaybeValue: 'T | undefined',\n enumsAsTypes: true,\n useTypeImports: true,\n strictScalars: true,\n emitLegacyCommonJSImports: false,\n }\n\n const mergedConfig = defu(config, defaultConfig)\n\n const output = await codegen({\n filename: outputPath || 'types.generated.ts',\n schema: parse(printSchemaWithDirectives(schema)),\n documents: [],\n config: mergedConfig,\n plugins: [\n { imports: {} },\n { pluginContent: {} },\n { typescript: {} },\n { typescriptResolvers: {} },\n ],\n pluginMap: {\n pluginContent: {\n plugin: pluginContent,\n },\n imports: {\n plugin: () => ({\n prepend: [\n `type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint;\n\ntype BuiltIns = Primitive | void | Date | RegExp;\n\ntype ResolverReturnType<T> = T extends BuiltIns\n ? T\n : T extends (...args: any[]) => unknown\n ? T | undefined\n : T extends object\n ? T extends Array<infer ItemType> // Test for arrays/tuples, per https://github.com/microsoft/TypeScript/issues/35156\n ? ItemType[] extends T // Test for arrays (non-tuples) specifically\n ? Array<ResolverReturnType<ItemType>>\n : ResolverReturnTypeObject<T> // Tuples behave properly\n : ResolverReturnTypeObject<T>\n : unknown;\n\ntype ResolverReturnTypeObject<T extends object> = {\n [K in keyof T]: ResolverReturnType<T[K]>\n};`,\n '',\n ],\n content: '',\n }),\n },\n typescript: typescriptPlugin,\n typescriptResolvers: typescriptResolversPlugin,\n },\n }).catch((e: any) => {\n console.warn('[nitro-graphql] Code generation error:', e)\n return ''\n })\n\n return output\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAS,cAAcA,SAAcC,YAAiBC,SAAcC,OAAY;AAC9E,QAAO;EACL,SAAS;GACP;GACA;GACA;GACA;GACA;EACD;EACD,SAAS;CACV;AACF;AAED,eAAsB,cACpBC,QACAC,SAA8B,CAAE,GAChCC,YACA;CACA,MAAMC,gBAAqC;EACzC,SAAS;GACP,SAAS;IACP,OAAO;IACP,QAAQ;GACT;GACD,UAAU,iBAAiB,WAAW;GACtC,aAAa,iBAAiB,WAAW;GACzC,MAAM,aAAa,WAAW;GAC9B,MAAM,aAAa,WAAW;GAC9B,YAAY,aAAa,WAAW;GACpC,gBAAgB,uBAAuB,WAAW;GAClD,UAAU,iBAAiB,WAAW;GACtC,MAAM;IACJ,OAAO;IACP,QAAQ;GACT;GACD,QAAQ;IACN,OAAO;IACP,QAAQ;GACT;EACF;EACD,mBAAmB;EACnB,eAAe,CAAC,uBAAuB,CAAC;EACxC,aAAa;EACb,YAAY;EACZ,iBAAiB;EACjB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,2BAA2B;CAC5B;CAED,MAAM,eAAe,KAAK,QAAQ,cAAc;CAEhD,MAAM,SAAS,MAAM,QAAQ;EAC3B,UAAU,cAAc;EACxB,QAAQ,MAAM,0BAA0B,OAAO,CAAC;EAChD,WAAW,CAAE;EACb,QAAQ;EACR,SAAS;GACP,EAAE,SAAS,CAAE,EAAE;GACf,EAAE,eAAe,CAAE,EAAE;GACrB,EAAE,YAAY,CAAE,EAAE;GAClB,EAAE,qBAAqB,CAAE,EAAE;EAC5B;EACD,WAAW;GACT,eAAe,EACb,QAAQ,cACT;GACD,SAAS,EACP,QAAQ,OAAO;IACb,SAAS,CACP,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAyBX,CAAC,EACS,EACD;IACD,SAAS;GACV,GACF;GACD,YAAY;GACZ,qBAAqB;EACtB;CACF,EAAC,CAAC,MAAM,CAACC,MAAW;AACnB,UAAQ,KAAK,0CAA0C,EAAE;AACzD,SAAO;CACR,EAAC;AAEF,QAAO;AACR"}
1
+ {"version":3,"file":"codegen-JCUglvgC.js","names":["_schema: any","_documents: any","_config: any","_info: any","schema: GraphQLSchema","config: CodegenServerConfig","outputPath?: string","defaultConfig: CodegenServerConfig","e: any"],"sources":["../src/codegen.ts"],"sourcesContent":["import type { GraphQLSchema } from 'graphql'\nimport { codegen } from '@graphql-codegen/core'\nimport * as typescriptPlugin from '@graphql-codegen/typescript'\nimport * as typescriptResolversPlugin from '@graphql-codegen/typescript-resolvers'\nimport { printSchemaWithDirectives } from '@graphql-tools/utils'\nimport { defu } from 'defu'\nimport { parse } from 'graphql'\nimport {\n CurrencyResolver,\n DateTimeResolver,\n JSONResolver,\n NonEmptyStringResolver,\n UUIDResolver,\n} from 'graphql-scalars'\n\nexport interface CodegenServerConfig {\n contextType?: string\n scalars?: Record<string, any>\n defaultMapper?: string\n mapperTypeSuffix?: string\n [key: string]: any\n}\n\nfunction pluginContent(_schema: any, _documents: any, _config: any, _info: any) {\n return {\n prepend: [\n '// THIS FILE IS GENERATED, DO NOT EDIT!',\n '/* eslint-disable eslint-comments/no-unlimited-disable */',\n '/* tslint:disable */',\n '/* eslint-disable */',\n '/* prettier-ignore */',\n ],\n content: '',\n }\n}\n\nexport async function generateTypes(\n schema: GraphQLSchema,\n config: CodegenServerConfig = {},\n outputPath?: string,\n) {\n const defaultConfig: CodegenServerConfig = {\n scalars: {\n Boolean: {\n input: 'boolean',\n output: 'boolean',\n },\n DateTime: DateTimeResolver.extensions.codegenScalarType as any,\n DateTimeISO: DateTimeResolver.extensions.codegenScalarType as any,\n UUID: UUIDResolver.extensions.codegenScalarType as any,\n JSON: JSONResolver.extensions.codegenScalarType as any,\n JSONObject: JSONResolver.extensions.codegenScalarType as any,\n NonEmptyString: NonEmptyStringResolver.extensions.codegenScalarType as any,\n Currency: CurrencyResolver.extensions.codegenScalarType as any,\n File: {\n input: 'File',\n output: 'File',\n },\n Cursor: {\n input: 'number',\n output: 'number',\n },\n },\n defaultScalarType: 'unknown',\n defaultMapper: `ResolverReturnType<{T}>`,\n contextType: './context#GraphQLContext',\n maybeValue: 'T | null | undefined',\n inputMaybeValue: 'T | undefined',\n enumsAsTypes: true,\n useTypeImports: true,\n strictScalars: true,\n emitLegacyCommonJSImports: false,\n }\n\n const mergedConfig = defu(config, defaultConfig)\n\n const output = await codegen({\n filename: outputPath || 'types.generated.ts',\n schema: parse(printSchemaWithDirectives(schema)),\n documents: [],\n config: mergedConfig,\n plugins: [\n { imports: {} },\n { pluginContent: {} },\n { typescript: {} },\n { typescriptResolvers: {} },\n ],\n pluginMap: {\n pluginContent: {\n plugin: pluginContent,\n },\n imports: {\n plugin: () => ({\n prepend: [\n `type Primitive =\n | null\n | undefined\n | string\n | number\n | boolean\n | symbol\n | bigint;\n\ntype BuiltIns = Primitive | void | Date | RegExp;\n\ntype ResolverReturnType<T> = T extends BuiltIns\n ? T\n : T extends (...args: any[]) => unknown\n ? T | undefined\n : T extends object\n ? T extends Array<infer ItemType> // Test for arrays/tuples, per https://github.com/microsoft/TypeScript/issues/35156\n ? ItemType[] extends T // Test for arrays (non-tuples) specifically\n ? Array<ResolverReturnType<ItemType>>\n : ResolverReturnTypeObject<T> // Tuples behave properly\n : ResolverReturnTypeObject<T>\n : unknown;\n\ntype ResolverReturnTypeObject<T extends object> = {\n [K in keyof T]: ResolverReturnType<T[K]>\n};`,\n '',\n ],\n content: '',\n }),\n },\n typescript: typescriptPlugin,\n typescriptResolvers: typescriptResolversPlugin,\n },\n }).catch((e: any) => {\n console.warn('[nitro-graphql] Code generation error:', e)\n return ''\n })\n\n return output\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAS,cAAcA,SAAcC,YAAiBC,SAAcC,OAAY;AAC9E,QAAO;EACL,SAAS;GACP;GACA;GACA;GACA;GACA;EACD;EACD,SAAS;CACV;AACF;AAED,eAAsB,cACpBC,QACAC,SAA8B,CAAE,GAChCC,YACA;CACA,MAAMC,gBAAqC;EACzC,SAAS;GACP,SAAS;IACP,OAAO;IACP,QAAQ;GACT;GACD,UAAU,iBAAiB,WAAW;GACtC,aAAa,iBAAiB,WAAW;GACzC,MAAM,aAAa,WAAW;GAC9B,MAAM,aAAa,WAAW;GAC9B,YAAY,aAAa,WAAW;GACpC,gBAAgB,uBAAuB,WAAW;GAClD,UAAU,iBAAiB,WAAW;GACtC,MAAM;IACJ,OAAO;IACP,QAAQ;GACT;GACD,QAAQ;IACN,OAAO;IACP,QAAQ;GACT;EACF;EACD,mBAAmB;EACnB,eAAe,CAAC,uBAAuB,CAAC;EACxC,aAAa;EACb,YAAY;EACZ,iBAAiB;EACjB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,2BAA2B;CAC5B;CAED,MAAM,eAAe,KAAK,QAAQ,cAAc;CAEhD,MAAM,SAAS,MAAM,QAAQ;EAC3B,UAAU,cAAc;EACxB,QAAQ,MAAM,0BAA0B,OAAO,CAAC;EAChD,WAAW,CAAE;EACb,QAAQ;EACR,SAAS;GACP,EAAE,SAAS,CAAE,EAAE;GACf,EAAE,eAAe,CAAE,EAAE;GACrB,EAAE,YAAY,CAAE,EAAE;GAClB,EAAE,qBAAqB,CAAE,EAAE;EAC5B;EACD,WAAW;GACT,eAAe,EACb,QAAQ,cACT;GACD,SAAS,EACP,QAAQ,OAAO;IACb,SAAS,CACP,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAyBX,CAAC,EACS,EACD;IACD,SAAS;GACV,GACF;GACD,YAAY;GACZ,qBAAqB;EACtB;CACF,EAAC,CAAC,MAAM,CAACC,MAAW;AACnB,UAAQ,KAAK,0CAA0C,EAAE;AACzD,SAAO;CACR,EAAC;AAEF,QAAO;AACR"}
package/dist/codegen.d.ts CHANGED
@@ -1,2 +1,16 @@
1
- import { CodegenServerConfig, generateTypes } from "./codegen-DWJuLowd.js";
2
- export { CodegenServerConfig, generateTypes };
1
+ import { GraphQLSchema } from "graphql";
2
+
3
+ //#region src/codegen.d.ts
4
+ interface CodegenServerConfig {
5
+ contextType?: string;
6
+ scalars?: Record<string, any>;
7
+ defaultMapper?: string;
8
+ mapperTypeSuffix?: string;
9
+ [key: string]: any;
10
+ }
11
+ declare function generateTypes(schema: GraphQLSchema, config?: CodegenServerConfig, outputPath?: string): Promise<string>;
12
+ //# sourceMappingURL=codegen.d.ts.map
13
+
14
+ //#endregion
15
+ export { CodegenServerConfig, generateTypes };
16
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.d.ts","names":[],"sources":["../src/codegen.ts"],"sourcesContent":[],"mappings":";;;UAeiB,mBAAA;;EAAA,OAAA,CAAA,EAEL,MAFK,CAAA,MAAmB,EAAA,GAAA,CAAA;EAqBd,aAAA,CAAA,EAAa,MAAA;EAAA,gBAAA,CAAA,EAAA,MAAA;EAAA,CAAA,GACzB,EAAA,MAAA,CAAA,EAAA,GAAA;;AAEW,iBAHC,aAAA,CAGD,MAAA,EAFX,aAEW,EAAA,MAAA,CAAA,EADX,mBACW,EAAA,UAAA,CAAA,EAAA,MAAA,CAAA,EAAA,OAAA,CAAA,MAAA,CAAA;AAAA"}
package/dist/codegen.js CHANGED
@@ -1,3 +1,3 @@
1
- import { generateTypes } from "./codegen-Dbw6gEZt.js";
1
+ import { generateTypes } from "./codegen-JCUglvgC.js";
2
2
 
3
3
  export { generateTypes };
package/dist/context.d.ts CHANGED
@@ -1,2 +1,13 @@
1
- import { GraphQLContext } from "./context-BgqNJFCT.js";
2
- export { GraphQLContext };
1
+ import { YogaInitialContext } from "graphql-yoga";
2
+ import { H3Event } from "h3";
3
+
4
+ //#region src/context.d.ts
5
+ interface GraphQLContext extends YogaInitialContext {
6
+ event: H3Event;
7
+ storage: any;
8
+ }
9
+ //# sourceMappingURL=context.d.ts.map
10
+
11
+ //#endregion
12
+ export { GraphQLContext };
13
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../src/context.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,cAAA,SAAuB;SAC/B;EADQ,OAAA,EAAA,GAAA"}
package/dist/context.js CHANGED
@@ -1 +0,0 @@
1
- import "./context-CZdhkJYD.js";
package/dist/index.d.ts CHANGED
@@ -1,11 +1,7 @@
1
- import { CodegenClientConfig, GraphQLSchemaConfig, NitroGraphQLOptions, Resolvers } from "./types-D_NqyCcy.js";
2
- import { CodegenServerConfig, generateTypes } from "./codegen-DWJuLowd.js";
3
- import { GraphQLContext } from "./context-BgqNJFCT.js";
4
- import { createResolver, defineGraphQLResolver, defineYogaConfig } from "./utils-BuYDOLIi.js";
5
1
  import * as nitropack0 from "nitropack";
6
2
 
7
3
  //#region src/index.d.ts
8
4
  declare const _default: nitropack0.NitroModule;
9
5
  //#endregion
10
- export { CodegenClientConfig, CodegenServerConfig, GraphQLContext, GraphQLSchemaConfig, NitroGraphQLOptions, Resolvers, createResolver, _default as default, defineGraphQLResolver, defineYogaConfig, generateTypes };
6
+ export { _default as default };
11
7
  //# sourceMappingURL=index.d.ts.map