UNPKG

@newmo/graphql-fake-server

Version:
137 lines 4.11 kB
import type { MockConfig, RawMockConfig } from "@newmo/graphql-fake-core"; import type { LogLevel } from "./logger.js"; /** * Server configuration options (user input - all fields optional). * Controls ports, request limits, and security settings. */ export type ServerConfig = { /** * The ports for the fake server and Apollo Server. */ ports?: { /** * Fake Server port. * Default is 4000. */ fakeServer?: number | undefined; /** * Apollo Server port. * It provides the GraphQL Playground. * Default is 4002. */ apolloServer?: number | undefined; } | undefined; /** * The maximum number of registered sequences. * Default is 1000. */ maxRegisteredSequences?: number | undefined; /** * The maximum number of depth of complexity of query * Default is 10 */ maxQueryDepth?: number | undefined; /** * Additional origins to allow for CORS requests. * By default, only localhost and private IP ranges are allowed. * This option allows you to specify additional origins to accept. */ allowedCORSOrigins?: string[] | undefined; /** * Allowed Host headers for the fake server to prevent DNS rebinding attacks. * - "auto" (default): Automatically generates allowed hosts from CORS origins and localhost addresses * - string[]: Explicit list of allowed Host headers (e.g., ["localhost:4000", "myapp.local:4000"]) * @default "auto" */ allowedHosts?: string[] | "auto" | undefined; }; /** * Configuration for the fake server (user input - most fields optional). * * @example * ```js * export default { * schemaFilePath: "./api.graphqls", * logLevel: "debug", * server: { * ports: { fakeServer: 4000, apolloServer: 4002 }, * maxQueryDepth: 10, * }, * mock: { * maxDepth: 9, * maxTypeRecursion: 2, * listLength: 3, * }, * }; * ``` */ export type FakeServerConfig = { /** * The path to the GraphQL schema file from cwd. * @required */ schemaFilePath: string; /** * Log level for the server. * @default "info" */ logLevel?: LogLevel | undefined; /** * Server configuration options (ports, limits, security). * @see ServerConfig */ server?: ServerConfig | undefined; /** * Mock data generation options (depth limits, default values). * @see RawMockConfig from @newmo/graphql-fake-core */ mock?: RawMockConfig | undefined; }; /** * Server configuration (normalized - all fields required). * @internal */ export type RequiredServerConfig = { ports: { fakeServer: number; apolloServer: number; }; maxRegisteredSequences: number; maxQueryDepth: number; allowedCORSOrigins: string[]; allowedHosts: string[] | "auto"; }; /** * Mock configuration (normalized - all fields required). * @internal */ export type RequiredMockConfig = MockConfig; /** * Fake server configuration (normalized - all fields required). * This is the internal config type with defaults applied. * * @see FakeServerConfig for user-facing config with optional fields * @internal */ export type RequiredFakeServerConfig = { schemaFilePath: string; logLevel: LogLevel; server: RequiredServerConfig; mock: RequiredMockConfig; }; export declare const normalizeFakeServerConfig: (config: FakeServerConfig) => RequiredFakeServerConfig; export declare const validateFakeServerConfig: (config: FakeServerConfig) => FakeServerConfig; /** * Load the fake server configuration from the file. * @param configPath */ export declare const loadConfig: (cwd: string, configPath: string) => Promise<RequiredFakeServerConfig>; /** * Load the fake server configuration from the CLI flags. * @param cliFlag */ export declare const loadFakeServerConfigFromCLI: ({ schemaFilePath, logLevel, }: { schemaFilePath?: string | undefined; logLevel?: LogLevel | undefined; }) => RequiredFakeServerConfig; //# sourceMappingURL=config.d.ts.map