nitro-graphql 2.0.0-beta.7 → 2.0.0-beta.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -1196
- package/dist/cli/adapter.d.mts +13 -0
- package/dist/cli/adapter.mjs +69 -0
- package/dist/cli/commands/build.d.mts +21 -0
- package/dist/cli/commands/build.mjs +52 -0
- package/dist/cli/commands/dev.d.mts +40 -0
- package/dist/cli/commands/dev.mjs +76 -0
- package/dist/cli/commands/generate.d.mts +25 -0
- package/dist/cli/commands/generate.mjs +198 -0
- package/dist/cli/commands/index.d.mts +5 -0
- package/dist/cli/commands/index.mjs +6 -0
- package/dist/cli/commands/init.d.mts +45 -0
- package/dist/cli/commands/init.mjs +195 -0
- package/dist/cli/commands/validate.d.mts +9 -0
- package/dist/cli/commands/validate.mjs +67 -0
- package/dist/cli/completions.d.mts +6 -0
- package/dist/cli/completions.mjs +34 -0
- package/dist/cli/config.d.mts +18 -0
- package/dist/cli/config.mjs +20 -0
- package/dist/cli/index.d.mts +26 -0
- package/dist/cli/index.mjs +317 -0
- package/dist/cli/server/debug-handler.d.mts +9 -0
- package/dist/cli/server/debug-handler.mjs +71 -0
- package/dist/cli/server/dev-server.d.mts +29 -0
- package/dist/cli/server/dev-server.mjs +64 -0
- package/dist/cli/server/graphql-handler.d.mts +21 -0
- package/dist/cli/server/graphql-handler.mjs +45 -0
- package/dist/cli/server/health-handler.d.mts +12 -0
- package/dist/cli/server/health-handler.mjs +30 -0
- package/dist/cli/server/loader.d.mts +33 -0
- package/dist/cli/server/loader.mjs +146 -0
- package/dist/cli/server/sandbox-handler.d.mts +12 -0
- package/dist/cli/server/sandbox-handler.mjs +19 -0
- package/dist/cli/server/watcher.d.mts +20 -0
- package/dist/cli/server/watcher.mjs +66 -0
- package/dist/cli/server/ws-handler.d.mts +28 -0
- package/dist/cli/server/ws-handler.mjs +50 -0
- package/dist/config.d.mts +2 -0
- package/dist/config.mjs +3 -0
- package/dist/core/codegen/client.d.mts +42 -0
- package/dist/core/codegen/client.mjs +553 -0
- package/dist/core/codegen/document-loader.d.mts +9 -0
- package/dist/core/codegen/document-loader.mjs +18 -0
- package/dist/core/codegen/index.d.mts +8 -0
- package/dist/core/codegen/index.mjs +9 -0
- package/dist/core/codegen/plugin.d.mts +19 -0
- package/dist/core/codegen/plugin.mjs +30 -0
- package/dist/core/codegen/runtime.d.mts +19 -0
- package/dist/core/codegen/runtime.mjs +60 -0
- package/dist/core/codegen/schema-loader.d.mts +27 -0
- package/dist/core/codegen/schema-loader.mjs +128 -0
- package/dist/core/codegen/server.d.mts +27 -0
- package/dist/core/codegen/server.mjs +144 -0
- package/dist/core/codegen/validation.d.mts +17 -0
- package/dist/core/codegen/validation.mjs +35 -0
- package/dist/core/config.d.mts +45 -0
- package/dist/core/config.mjs +78 -0
- package/dist/core/constants.d.mts +188 -0
- package/dist/core/constants.mjs +210 -0
- package/dist/core/debug/index.d.mts +2 -0
- package/dist/core/debug/index.mjs +3 -0
- package/dist/core/debug/template.d.mts +52 -0
- package/dist/core/debug/template.mjs +383 -0
- package/dist/core/extend/index.d.mts +2 -0
- package/dist/core/extend/index.mjs +3 -0
- package/dist/core/extend/loader.d.mts +40 -0
- package/dist/core/extend/loader.mjs +198 -0
- package/dist/core/index.d.mts +37 -0
- package/dist/core/index.mjs +29 -0
- package/dist/core/manifest.d.mts +56 -0
- package/dist/core/manifest.mjs +102 -0
- package/dist/core/pubsub/index.d.mts +109 -0
- package/dist/core/pubsub/index.mjs +148 -0
- package/dist/core/scanning/ast-scanner.d.mts +27 -0
- package/dist/core/scanning/ast-scanner.mjs +116 -0
- package/dist/core/scanning/common.d.mts +25 -0
- package/dist/core/scanning/common.mjs +59 -0
- package/dist/core/scanning/directives.d.mts +13 -0
- package/dist/core/scanning/directives.mjs +29 -0
- package/dist/core/scanning/documents.d.mts +20 -0
- package/dist/core/scanning/documents.mjs +37 -0
- package/dist/core/scanning/index.d.mts +7 -0
- package/dist/core/scanning/index.mjs +8 -0
- package/dist/core/scanning/resolvers.d.mts +14 -0
- package/dist/core/scanning/resolvers.mjs +59 -0
- package/dist/core/scanning/schemas.d.mts +13 -0
- package/dist/core/scanning/schemas.mjs +52 -0
- package/dist/core/schema/builder.d.mts +59 -0
- package/dist/core/schema/builder.mjs +78 -0
- package/dist/core/schema/federation.d.mts +33 -0
- package/dist/core/schema/federation.mjs +40 -0
- package/dist/core/schema/index.d.mts +3 -0
- package/dist/core/schema/index.mjs +4 -0
- package/dist/core/server/index.d.mts +4 -0
- package/dist/core/server/index.mjs +4 -0
- package/dist/core/server/sandbox.d.mts +18 -0
- package/dist/core/server/sandbox.mjs +39 -0
- package/dist/core/server/types.d.mts +54 -0
- package/dist/core/server/yoga.d.mts +42 -0
- package/dist/core/server/yoga.mjs +89 -0
- package/dist/core/types/adapter.d.mts +57 -0
- package/dist/core/types/codegen.d.mts +136 -0
- package/dist/core/types/codegen.mjs +1 -0
- package/dist/core/types/config.d.mts +188 -0
- package/dist/core/types/config.mjs +1 -0
- package/dist/{utils/define.d.ts → core/types/define.d.mts} +2 -30
- package/dist/core/types/define.mjs +1 -0
- package/dist/core/types/index.d.mts +5 -0
- package/dist/core/types/index.mjs +1 -0
- package/dist/core/types/scanning.d.mts +64 -0
- package/dist/core/types/scanning.mjs +1 -0
- package/dist/{utils/directive-parser.d.ts → core/utils/directive-parser.d.mts} +18 -4
- package/dist/{utils/directive-parser.js → core/utils/directive-parser.mjs} +28 -34
- package/dist/core/utils/errors.d.mts +77 -0
- package/dist/core/utils/errors.mjs +93 -0
- package/dist/core/utils/file-io.d.mts +24 -0
- package/dist/core/utils/file-io.mjs +47 -0
- package/dist/core/utils/imports.d.mts +15 -0
- package/dist/core/utils/imports.mjs +25 -0
- package/dist/core/utils/index.d.mts +7 -0
- package/dist/core/utils/index.mjs +8 -0
- package/dist/core/utils/logger.d.mts +18 -0
- package/dist/core/utils/logger.mjs +38 -0
- package/dist/core/utils/ofetch-templates.d.mts +30 -0
- package/dist/core/utils/ofetch-templates.mjs +135 -0
- package/dist/core/utils/runtime.d.mts +74 -0
- package/dist/core/utils/runtime.mjs +111 -0
- package/dist/core/utils/subscribe-templates.d.mts +8 -0
- package/dist/core/utils/subscribe-templates.mjs +59 -0
- package/dist/core/validation/external-services.d.mts +11 -0
- package/dist/core/validation/external-services.mjs +33 -0
- package/dist/core/validation/index.d.mts +2 -0
- package/dist/core/validation/index.mjs +3 -0
- package/dist/core/watcher/index.d.mts +107 -0
- package/dist/core/watcher/index.mjs +141 -0
- package/dist/define.d.mts +294 -0
- package/dist/define.mjs +325 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.mjs +6 -0
- package/dist/nitro/adapter.d.mts +29 -0
- package/dist/nitro/adapter.mjs +93 -0
- package/dist/{utils/apollo.d.ts → nitro/apollo.d.mts} +3 -3
- package/dist/nitro/apollo.mjs +59 -0
- package/dist/nitro/codegen.d.mts +18 -0
- package/dist/nitro/codegen.mjs +173 -0
- package/dist/nitro/config.d.mts +50 -0
- package/dist/nitro/config.mjs +57 -0
- package/dist/nitro/index.d.mts +45 -0
- package/dist/nitro/index.mjs +65 -0
- package/dist/{utils/path-resolver.d.ts → nitro/paths.d.mts} +8 -25
- package/dist/{utils/path-resolver.js → nitro/paths.mjs} +14 -49
- package/dist/nitro/rollup.d.mts +6 -0
- package/dist/nitro/rollup.mjs +53 -0
- package/dist/nitro/routes/apollo-sandbox-script.d.mts +6 -0
- package/dist/nitro/routes/apollo-sandbox-script.mjs +14 -0
- package/dist/nitro/routes/apollo-server-ws.d.mts +15 -0
- package/dist/nitro/routes/apollo-server-ws.mjs +53 -0
- package/dist/nitro/routes/apollo-server.d.mts +6 -0
- package/dist/nitro/routes/apollo-server.mjs +71 -0
- package/dist/{routes/debug.d.ts → nitro/routes/debug.d.mts} +12 -19
- package/dist/nitro/routes/debug.mjs +102 -0
- package/dist/nitro/routes/graphql-yoga-ws.d.mts +12 -0
- package/dist/nitro/routes/graphql-yoga-ws.mjs +53 -0
- package/dist/nitro/routes/graphql-yoga.d.mts +12 -0
- package/dist/nitro/routes/graphql-yoga.mjs +41 -0
- package/dist/nitro/routes/health.d.mts +10 -0
- package/dist/{routes/health.js → nitro/routes/health.mjs} +4 -3
- package/dist/nitro/setup/extend-loader.d.mts +16 -0
- package/dist/nitro/setup/extend-loader.mjs +82 -0
- package/dist/nitro/setup/file-watcher.d.mts +18 -0
- package/dist/nitro/setup/file-watcher.mjs +63 -0
- package/dist/nitro/setup/logging.d.mts +16 -0
- package/dist/nitro/setup/logging.mjs +66 -0
- package/dist/nitro/setup/rollup-integration.d.mts +24 -0
- package/dist/nitro/setup/rollup-integration.mjs +63 -0
- package/dist/nitro/setup/routes.d.mts +13 -0
- package/dist/nitro/setup/routes.mjs +71 -0
- package/dist/nitro/setup/scanner.d.mts +59 -0
- package/dist/nitro/setup/scanner.mjs +120 -0
- package/dist/nitro/setup/ts-config.d.mts +10 -0
- package/dist/nitro/setup/ts-config.mjs +69 -0
- package/dist/nitro/setup.d.mts +11 -0
- package/dist/nitro/setup.mjs +191 -0
- package/dist/nitro/types.d.mts +549 -0
- package/dist/nitro/types.mjs +1 -0
- package/dist/nitro/virtual/generators.d.mts +38 -0
- package/dist/nitro/virtual/generators.mjs +192 -0
- package/dist/nitro/virtual/stubs.d.mts +21 -0
- package/dist/nitro/virtual/stubs.mjs +32 -0
- package/dist/{ecosystem/nuxt.d.ts → nuxt.d.mts} +1 -1
- package/dist/nuxt.mjs +112 -0
- package/dist/{graphql/server.d.ts → stubs/index.d.mts} +5 -1
- package/dist/stubs/index.mjs +1 -0
- package/dist/subscribe/index.d.mts +78 -0
- package/dist/subscribe/index.mjs +206 -0
- package/native/index.d.ts +20 -0
- package/native/index.js +585 -0
- package/package.json +201 -111
- package/dist/ecosystem/nuxt.js +0 -67
- package/dist/graphql/index.d.ts +0 -5
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -318
- package/dist/rollup.js +0 -277
- package/dist/routes/apollo-server.d.ts +0 -6
- package/dist/routes/apollo-server.js +0 -89
- package/dist/routes/debug.js +0 -449
- package/dist/routes/graphql-yoga.d.ts +0 -6
- package/dist/routes/graphql-yoga.js +0 -91
- package/dist/routes/health.d.ts +0 -10
- package/dist/types/index.d.ts +0 -246
- package/dist/types/standard-schema.d.ts +0 -59
- package/dist/utils/apollo.js +0 -61
- package/dist/utils/client-codegen.d.ts +0 -38
- package/dist/utils/client-codegen.js +0 -290
- package/dist/utils/define.js +0 -57
- package/dist/utils/file-generator.d.ts +0 -37
- package/dist/utils/file-generator.js +0 -72
- package/dist/utils/index.d.ts +0 -39
- package/dist/utils/index.js +0 -278
- package/dist/utils/server-codegen.d.ts +0 -7
- package/dist/utils/server-codegen.js +0 -136
- package/dist/utils/type-generation.d.ts +0 -7
- package/dist/utils/type-generation.js +0 -360
- package/dist/virtual/debug-info.d.ts +0 -9
- package/dist/virtual/debug-info.js +0 -26
- package/dist/virtual/graphql-config.d.ts +0 -9
- package/dist/virtual/graphql-config.js +0 -10
- package/dist/virtual/module-config.d.ts +0 -9
- package/dist/virtual/module-config.js +0 -10
- package/dist/virtual/server-directives.d.ts +0 -11
- package/dist/virtual/server-directives.js +0 -10
- package/dist/virtual/server-resolvers.d.ts +0 -11
- package/dist/virtual/server-resolvers.js +0 -10
- package/dist/virtual/server-schemas.d.ts +0 -11
- package/dist/virtual/server-schemas.js +0 -10
- package/dist/vite.d.ts +0 -25
- package/dist/vite.js +0 -40
- /package/dist/{graphql/index.js → core/server/types.mjs} +0 -0
- /package/dist/{graphql/server.js → core/types/adapter.mjs} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { relativeWithDot } from "../../core/utils/imports.mjs";
|
|
2
|
+
import { getDefaultPaths, getTypesConfig, resolveFilePath } from "../paths.mjs";
|
|
3
|
+
import { dirname, join, resolve } from "pathe";
|
|
4
|
+
|
|
5
|
+
//#region src/nitro/setup/ts-config.ts
|
|
6
|
+
/**
|
|
7
|
+
* Setup TypeScript path aliases for GraphQL types
|
|
8
|
+
* Called via nitro:config hook to extend tsconfig.json
|
|
9
|
+
*/
|
|
10
|
+
function setupTypeScriptPaths(nitro, types) {
|
|
11
|
+
const tsconfigDir = dirname(resolve(nitro.options.buildDir, nitro.options.typescript.tsconfigPath ?? "tsconfig.json"));
|
|
12
|
+
types.tsConfig ||= {};
|
|
13
|
+
types.tsConfig.compilerOptions ??= {};
|
|
14
|
+
types.tsConfig.compilerOptions.paths ??= {};
|
|
15
|
+
types.tsConfig.include = types.tsConfig.include || [];
|
|
16
|
+
const placeholders = getDefaultPaths(nitro);
|
|
17
|
+
const typesConfig = getTypesConfig(nitro);
|
|
18
|
+
setupServerTypesPath(nitro, types, tsconfigDir, placeholders, typesConfig);
|
|
19
|
+
setupClientTypesPath(nitro, types, tsconfigDir, placeholders, typesConfig);
|
|
20
|
+
setupSchemaPath(nitro, types, tsconfigDir);
|
|
21
|
+
setupExternalServicePaths(nitro, types, tsconfigDir, placeholders, typesConfig);
|
|
22
|
+
types.tsConfig.include.push(relativeWithDot(tsconfigDir, join(placeholders.typesDir, "graphql.d.ts")));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Setup #graphql/server path alias
|
|
26
|
+
*/
|
|
27
|
+
function setupServerTypesPath(nitro, types, tsconfigDir, placeholders, typesConfig) {
|
|
28
|
+
const serverTypesPath = resolveFilePath(typesConfig.server, typesConfig.enabled, true, "{typesDir}/nitro-graphql-server.d.ts", placeholders);
|
|
29
|
+
if (serverTypesPath) {
|
|
30
|
+
types.tsConfig.compilerOptions.paths["#graphql/server"] = [relativeWithDot(tsconfigDir, serverTypesPath)];
|
|
31
|
+
types.tsConfig.include.push(relativeWithDot(tsconfigDir, serverTypesPath));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Setup #graphql/client path alias
|
|
36
|
+
*/
|
|
37
|
+
function setupClientTypesPath(nitro, types, tsconfigDir, placeholders, typesConfig) {
|
|
38
|
+
const clientTypesPath = resolveFilePath(typesConfig.client, typesConfig.enabled, true, "{typesDir}/nitro-graphql-client.d.ts", placeholders);
|
|
39
|
+
if (clientTypesPath) {
|
|
40
|
+
types.tsConfig.compilerOptions.paths["#graphql/client"] = [relativeWithDot(tsconfigDir, clientTypesPath)];
|
|
41
|
+
types.tsConfig.include.push(relativeWithDot(tsconfigDir, clientTypesPath));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Setup #graphql/schema path alias
|
|
46
|
+
*/
|
|
47
|
+
function setupSchemaPath(nitro, types, tsconfigDir) {
|
|
48
|
+
types.tsConfig.compilerOptions.paths["#graphql/schema"] = [relativeWithDot(tsconfigDir, join(nitro.graphql.serverDir, "schema.ts"))];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Setup #graphql/client/{serviceName} path aliases for external services
|
|
52
|
+
*/
|
|
53
|
+
function setupExternalServicePaths(nitro, types, tsconfigDir, placeholders, typesConfig) {
|
|
54
|
+
if (!nitro.options.graphql?.externalServices?.length) return;
|
|
55
|
+
for (const service of nitro.options.graphql.externalServices) {
|
|
56
|
+
const servicePlaceholders = {
|
|
57
|
+
...placeholders,
|
|
58
|
+
serviceName: service.name
|
|
59
|
+
};
|
|
60
|
+
const externalTypesPath = resolveFilePath(service.paths?.types ?? typesConfig.external, typesConfig.enabled, true, "{typesDir}/nitro-graphql-client-{serviceName}.d.ts", servicePlaceholders);
|
|
61
|
+
if (externalTypesPath) {
|
|
62
|
+
types.tsConfig.compilerOptions.paths[`#graphql/client/${service.name}`] = [relativeWithDot(tsconfigDir, externalTypesPath)];
|
|
63
|
+
types.tsConfig.include.push(relativeWithDot(tsconfigDir, externalTypesPath));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
export { setupTypeScriptPaths };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { resolveSecurityConfig } from "./setup/logging.mjs";
|
|
2
|
+
import { Nitro } from "nitro/types";
|
|
3
|
+
|
|
4
|
+
//#region src/nitro/setup.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Main setup function for nitro-graphql
|
|
7
|
+
* Coordinates all initialization steps for the module
|
|
8
|
+
*/
|
|
9
|
+
declare function setupNitroGraphQL(nitro: Nitro): Promise<void>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { resolveSecurityConfig, setupNitroGraphQL };
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { FRAMEWORK_NITRO, FRAMEWORK_NUXT, LOG_TAG } from "../core/constants.mjs";
|
|
2
|
+
import { validateExternalServices } from "../core/validation/external-services.mjs";
|
|
3
|
+
import { getDefaultPaths } from "./paths.mjs";
|
|
4
|
+
import { generateClientTypes, generateServerTypes } from "./codegen.mjs";
|
|
5
|
+
import { DEFAULT_RUNTIME_CONFIG, DEFAULT_TYPESCRIPT_STRICT, DEFAULT_TYPES_CONFIG } from "./config.mjs";
|
|
6
|
+
import { rollupConfig } from "./rollup.mjs";
|
|
7
|
+
import { resolveExtendDirs } from "./setup/extend-loader.mjs";
|
|
8
|
+
import { isServerEnabled, logResolverDiagnostics, performGraphQLScan } from "./setup/scanner.mjs";
|
|
9
|
+
import { getWatchDirectories, setupFileWatcher } from "./setup/file-watcher.mjs";
|
|
10
|
+
import { logStartupInfo, resolveSecurityConfig } from "./setup/logging.mjs";
|
|
11
|
+
import { setupNoExternals, setupRollupChunking, setupRollupExternals } from "./setup/rollup-integration.mjs";
|
|
12
|
+
import { registerRouteHandlers } from "./setup/routes.mjs";
|
|
13
|
+
import { setupTypeScriptPaths } from "./setup/ts-config.mjs";
|
|
14
|
+
import defu from "defu";
|
|
15
|
+
import consola from "consola";
|
|
16
|
+
import { relative, resolve } from "pathe";
|
|
17
|
+
|
|
18
|
+
//#region src/nitro/setup.ts
|
|
19
|
+
const logger = consola.withTag(LOG_TAG);
|
|
20
|
+
/**
|
|
21
|
+
* Main setup function for nitro-graphql
|
|
22
|
+
* Coordinates all initialization steps for the module
|
|
23
|
+
*/
|
|
24
|
+
async function setupNitroGraphQL(nitro) {
|
|
25
|
+
const serverEnabled = isServerEnabled(nitro);
|
|
26
|
+
initializeConfiguration(nitro, serverEnabled);
|
|
27
|
+
validateConfiguration(nitro);
|
|
28
|
+
setupBuildDirectories(nitro);
|
|
29
|
+
if (serverEnabled) {
|
|
30
|
+
setupNoExternals(nitro);
|
|
31
|
+
setupRollupExternals(nitro);
|
|
32
|
+
setupRollupChunking(nitro);
|
|
33
|
+
}
|
|
34
|
+
initializeRuntimeConfig(nitro);
|
|
35
|
+
const extendDirs = await resolveExtendDirs(nitro);
|
|
36
|
+
if (nitro.options.dev) setupFileWatching(nitro, serverEnabled, extendDirs);
|
|
37
|
+
await performGraphQLScan(nitro);
|
|
38
|
+
if (serverEnabled) setupDevHooks(nitro);
|
|
39
|
+
if (serverEnabled) await rollupConfig(nitro);
|
|
40
|
+
await generateTypes(nitro, serverEnabled);
|
|
41
|
+
setupCloseHooks(nitro, serverEnabled);
|
|
42
|
+
if (serverEnabled) registerRouteHandlers(nitro);
|
|
43
|
+
setupTypeScriptConfiguration(nitro);
|
|
44
|
+
setupNuxtIntegration(nitro);
|
|
45
|
+
logStartupInfo(nitro, serverEnabled);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Initialize default configuration values
|
|
49
|
+
*/
|
|
50
|
+
function initializeConfiguration(nitro, serverEnabled) {
|
|
51
|
+
nitro.options.graphql ||= {};
|
|
52
|
+
nitro.options.graphql.types = defu(nitro.options.graphql.types, DEFAULT_TYPES_CONFIG);
|
|
53
|
+
if (serverEnabled && !nitro.options.graphql?.framework) logger.warn("No GraphQL framework specified. Please set graphql.framework to \"graphql-yoga\" or \"apollo-server\".");
|
|
54
|
+
const defaultPaths = getDefaultPaths(nitro);
|
|
55
|
+
nitro.graphql ||= {
|
|
56
|
+
buildDir: "",
|
|
57
|
+
watchDirs: [],
|
|
58
|
+
clientDir: defaultPaths.clientDir,
|
|
59
|
+
serverDir: defaultPaths.serverDir,
|
|
60
|
+
dir: {
|
|
61
|
+
build: relative(nitro.options.rootDir, nitro.options.buildDir),
|
|
62
|
+
client: "graphql",
|
|
63
|
+
server: "server"
|
|
64
|
+
},
|
|
65
|
+
directiveSchemas: null,
|
|
66
|
+
extendConfigs: [],
|
|
67
|
+
extendSchemas: []
|
|
68
|
+
};
|
|
69
|
+
nitro.scanSchemas ||= [];
|
|
70
|
+
nitro.scanResolvers ||= [];
|
|
71
|
+
nitro.scanDirectives ||= [];
|
|
72
|
+
nitro.scanDocuments ||= [];
|
|
73
|
+
if (nitro.options.graphql?.subscriptions?.enabled) nitro.options.features = {
|
|
74
|
+
...nitro.options.features,
|
|
75
|
+
websocket: true
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validate external services configuration
|
|
80
|
+
*/
|
|
81
|
+
function validateConfiguration(nitro) {
|
|
82
|
+
if (nitro.options.graphql?.externalServices?.length) {
|
|
83
|
+
const validationErrors = validateExternalServices(nitro.options.graphql.externalServices);
|
|
84
|
+
if (validationErrors.length > 0) {
|
|
85
|
+
logger.error("External services configuration errors:");
|
|
86
|
+
for (const error of validationErrors) logger.error(` - ${error}`);
|
|
87
|
+
throw new Error("Invalid external services configuration");
|
|
88
|
+
}
|
|
89
|
+
logger.info(`Configured ${nitro.options.graphql.externalServices.length} external GraphQL services`);
|
|
90
|
+
}
|
|
91
|
+
if (nitro.options.graphql?.federation?.enabled) logger.info(`Apollo Federation enabled for service: ${nitro.options.graphql.federation.serviceName || "unnamed"}`);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Setup build directories
|
|
95
|
+
*/
|
|
96
|
+
function setupBuildDirectories(nitro) {
|
|
97
|
+
const graphqlBuildDir = resolve(nitro.options.rootDir, ".graphql");
|
|
98
|
+
nitro.graphql.buildDir = graphqlBuildDir;
|
|
99
|
+
switch (nitro.options.framework.name) {
|
|
100
|
+
case FRAMEWORK_NUXT:
|
|
101
|
+
nitro.graphql.dir.client = relative(nitro.options.rootDir, nitro.graphql.clientDir);
|
|
102
|
+
nitro.graphql.dir.server = relative(nitro.options.rootDir, nitro.graphql.serverDir);
|
|
103
|
+
break;
|
|
104
|
+
case FRAMEWORK_NITRO:
|
|
105
|
+
nitro.graphql.dir.client = relative(nitro.options.rootDir, nitro.graphql.clientDir);
|
|
106
|
+
nitro.graphql.dir.server = relative(nitro.options.rootDir, nitro.graphql.serverDir);
|
|
107
|
+
break;
|
|
108
|
+
default: break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Initialize runtime configuration
|
|
113
|
+
*/
|
|
114
|
+
function initializeRuntimeConfig(nitro) {
|
|
115
|
+
const securityConfig = resolveSecurityConfig(nitro.options.graphql?.security);
|
|
116
|
+
nitro.options.runtimeConfig.graphql = defu(nitro.options.runtimeConfig.graphql || {}, {
|
|
117
|
+
...DEFAULT_RUNTIME_CONFIG,
|
|
118
|
+
security: securityConfig
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Setup file watching for development mode
|
|
123
|
+
*/
|
|
124
|
+
function setupFileWatching(nitro, serverEnabled, extendDirs = []) {
|
|
125
|
+
const watchDirs = serverEnabled ? getWatchDirectories(nitro, extendDirs) : [nitro.graphql.clientDir].filter(Boolean);
|
|
126
|
+
nitro.graphql.watchDirs = watchDirs;
|
|
127
|
+
const watcher = setupFileWatcher(nitro, watchDirs);
|
|
128
|
+
nitro.hooks.hook("close", () => {
|
|
129
|
+
watcher.close();
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Setup dev mode hooks for rescanning files
|
|
134
|
+
*/
|
|
135
|
+
function setupDevHooks(nitro) {
|
|
136
|
+
let hasShownInitialLogs = false;
|
|
137
|
+
let lastDevStart = 0;
|
|
138
|
+
const DEBOUNCE_MS = 500;
|
|
139
|
+
nitro.hooks.hook("dev:start", async () => {
|
|
140
|
+
const now = Date.now();
|
|
141
|
+
if (now - lastDevStart < DEBOUNCE_MS) return;
|
|
142
|
+
lastDevStart = now;
|
|
143
|
+
await performGraphQLScan(nitro, {
|
|
144
|
+
isRescan: true,
|
|
145
|
+
silent: true
|
|
146
|
+
});
|
|
147
|
+
if (nitro.options.dev && !hasShownInitialLogs) {
|
|
148
|
+
hasShownInitialLogs = true;
|
|
149
|
+
logResolverDiagnostics(nitro);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Generate server and client types
|
|
155
|
+
*/
|
|
156
|
+
async function generateTypes(nitro, serverEnabled) {
|
|
157
|
+
if (serverEnabled) {
|
|
158
|
+
await generateServerTypes(nitro);
|
|
159
|
+
await generateClientTypes(nitro, { isInitial: true });
|
|
160
|
+
} else await generateClientTypes(nitro, { isInitial: true });
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Setup close hooks for final type generation
|
|
164
|
+
*/
|
|
165
|
+
function setupCloseHooks(nitro, serverEnabled) {
|
|
166
|
+
nitro.hooks.hook("close", async () => {
|
|
167
|
+
if (serverEnabled) await generateServerTypes(nitro, { silent: true });
|
|
168
|
+
await generateClientTypes(nitro, { silent: true });
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Setup TypeScript configuration and path aliases
|
|
173
|
+
*/
|
|
174
|
+
function setupTypeScriptConfiguration(nitro) {
|
|
175
|
+
nitro.options.typescript.strict = DEFAULT_TYPESCRIPT_STRICT;
|
|
176
|
+
nitro.hooks.hook("types:extend", (types) => {
|
|
177
|
+
setupTypeScriptPaths(nitro, types);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Setup Nuxt-specific integration
|
|
182
|
+
*/
|
|
183
|
+
function setupNuxtIntegration(nitro) {
|
|
184
|
+
if (nitro.options.framework?.name === FRAMEWORK_NUXT && nitro.options.graphql?.externalServices?.length) nitro.hooks.hook("build:before", () => {
|
|
185
|
+
const nuxtOptions = nitro._nuxt?.options;
|
|
186
|
+
if (nuxtOptions) nuxtOptions.nitroGraphqlExternalServices = nitro.options.graphql?.externalServices || [];
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
//#endregion
|
|
191
|
+
export { resolveSecurityConfig, setupNitroGraphQL };
|