@soda-gql/config 0.11.0 → 0.11.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.
package/dist/index.cjs CHANGED
@@ -213,6 +213,16 @@ function normalizeInject(inject, configDir) {
213
213
  };
214
214
  }
215
215
  /**
216
+ * Resolve a glob pattern relative to the config directory.
217
+ * Handles negation patterns (e.g., "!./path/to/exclude") by preserving the "!" prefix.
218
+ */
219
+ function resolvePattern(pattern, configDir) {
220
+ if (pattern.startsWith("!")) {
221
+ return `!${(0, node_path.resolve)(configDir, pattern.slice(1))}`;
222
+ }
223
+ return (0, node_path.resolve)(configDir, pattern);
224
+ }
225
+ /**
216
226
  * Normalize artifact config to resolved form.
217
227
  * Returns undefined if no path is specified.
218
228
  */
@@ -247,8 +257,8 @@ function normalizeConfig(config, configPath) {
247
257
  analyzer,
248
258
  outdir: (0, node_path.resolve)(configDir, config.outdir),
249
259
  graphqlSystemAliases,
250
- include: config.include.map((pattern) => (0, node_path.resolve)(configDir, pattern)),
251
- exclude: exclude.map((pattern) => (0, node_path.resolve)(configDir, pattern)),
260
+ include: config.include.map((pattern) => resolvePattern(pattern, configDir)),
261
+ exclude: exclude.map((pattern) => resolvePattern(pattern, configDir)),
252
262
  schemas: normalizedSchemas,
253
263
  styles: { importExtension: config.styles?.importExtension ?? false },
254
264
  plugins: config.plugins ?? {},
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["config: SodaGqlConfig","InjectConfigSchema: z.ZodType<InjectConfig>","z","SchemaInputSchema: z.ZodType<SchemaInput>","mod: { exports: unknown }","require","configModule","Script","Result","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/index.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { ArtifactConfig, InjectConfig, SchemaConfig, SchemaInput, SodaGqlConfig, StylesConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config with object inject\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: { scalars: \"./scalars.ts\" },\n * },\n * },\n * });\n * ```\n *\n * @example Static config with string inject (single file)\n * ```ts\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: \"./inject.ts\", // exports scalar, adapter?\n * },\n * },\n * });\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\n// InjectConfig is a union type (string | object), so we define the schema directly\n// rather than using defineSchemaFor which requires object types\nconst InjectConfigSchema: z.ZodType<InjectConfig> = z.union([\n z.string().min(1),\n z.object({\n scalars: z.string().min(1),\n adapter: z.string().min(1).optional(),\n }),\n]);\n\n// SchemaInput supports string, array of strings, or function returning array of strings\n// Function return value validation is deferred to normalize time\nconst SchemaInputSchema: z.ZodType<SchemaInput> = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1),\n z.custom<() => readonly string[]>((val) => typeof val === \"function\"),\n]);\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: SchemaInputSchema,\n inject: InjectConfigSchema,\n defaultInputDepth: z.number().int().positive().max(10).optional(),\n inputDepthOverrides: z.record(z.string(), z.number().int().positive()).optional(),\n});\n\nconst StylesConfigSchema = defineSchemaFor<StylesConfig>()({\n importExtension: z.boolean().optional(),\n});\n\nconst ArtifactConfigSchema = defineSchemaFor<ArtifactConfig>()({\n path: z.string().min(1).optional(),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n styles: StylesConfigSchema.optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n artifact: ArtifactConfigSchema.optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\n// TODO: split config package into definition and evaluation parts\nimport * as configModule from \"./index\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): Result<SodaGqlConfig, ConfigError> {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n if (specifier === \"@soda-gql/config\") {\n return configModule;\n }\n\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return ok(config);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n }),\n );\n }\n}\n","import { dirname, resolve } from \"node:path\";\nimport { err, ok, Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type {\n InjectConfig,\n ResolvedArtifactConfig,\n ResolvedInjectConfig,\n ResolvedSodaGqlConfig,\n SchemaInput,\n SodaGqlConfig,\n} from \"./types\";\n\n/**\n * Normalize schema input to resolved array form.\n * String is converted to single-element array.\n * Function is executed to get the array.\n * All paths are resolved relative to config directory.\n */\nfunction normalizeSchemaInput(schema: SchemaInput, configDir: string): Result<readonly string[], ConfigError> {\n // Execute function if provided\n const paths = typeof schema === \"function\" ? schema() : schema;\n // Normalize single string to array\n const pathArray = typeof paths === \"string\" ? [paths] : paths;\n\n // Runtime validation: empty array check\n if (pathArray.length === 0) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: \"Schema paths cannot be empty\",\n }),\n );\n }\n\n return ok(pathArray.map((p) => resolve(configDir, p)));\n}\n\n/**\n * Normalize inject config to resolved object form.\n * String form is converted to object with same path for all fields.\n */\nfunction normalizeInject(inject: InjectConfig, configDir: string): ResolvedInjectConfig {\n if (typeof inject === \"string\") {\n const resolvedPath = resolve(configDir, inject);\n return {\n scalars: resolvedPath,\n adapter: resolvedPath,\n };\n }\n return {\n scalars: resolve(configDir, inject.scalars),\n ...(inject.adapter ? { adapter: resolve(configDir, inject.adapter) } : {}),\n };\n}\n\n/**\n * Normalize artifact config to resolved form.\n * Returns undefined if no path is specified.\n */\nfunction normalizeArtifact(artifact: SodaGqlConfig[\"artifact\"], configDir: string): ResolvedArtifactConfig | undefined {\n if (!artifact?.path) {\n return undefined;\n }\n return {\n path: resolve(configDir, artifact.path),\n };\n}\n\n/**\n * Resolve and normalize config with defaults.\n * Paths in the config are resolved relative to the config file's directory.\n */\nexport function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configDir = dirname(configPath);\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n // Normalize artifact config (only if path is specified)\n const artifact = normalizeArtifact(config.artifact, configDir);\n\n // Normalize schemas with error handling\n const schemaEntries = Object.entries(config.schemas).map(([name, schemaConfig]) =>\n normalizeSchemaInput(schemaConfig.schema, configDir).map(\n (schema) =>\n [\n name,\n {\n schema,\n inject: normalizeInject(schemaConfig.inject, configDir),\n defaultInputDepth: schemaConfig.defaultInputDepth ?? 3,\n inputDepthOverrides: schemaConfig.inputDepthOverrides ?? {},\n },\n ] as const,\n ),\n );\n\n const combinedResult = Result.combine(schemaEntries);\n if (combinedResult.isErr()) {\n return err(combinedResult.error);\n }\n const normalizedSchemas = Object.fromEntries(combinedResult.value);\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(configDir, config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolve(configDir, pattern)),\n exclude: exclude.map((pattern) => resolve(configDir, pattern)),\n schemas: normalizedSchemas,\n styles: {\n importExtension: config.styles?.importExtension ?? false,\n },\n plugins: config.plugins ?? {},\n ...(artifact ? { artifact } : {}),\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n const result = executeConfigFile(resolvedPath);\n if (result.isErr()) {\n return err(result.error);\n }\n return normalizeConfig(result.value, resolvedPath);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","export type { ConfigError, ConfigErrorCode } from \"./errors\";\nexport { configError } from \"./errors\";\nexport {\n defineConfig,\n type SodaGqlConfigContainer,\n validateConfig,\n} from \"./helper\";\nexport { findConfigFile, loadConfig, loadConfigFrom } from \"./loader\";\nexport { normalizeConfig } from \"./normalize\";\nexport type {\n ArtifactConfig,\n PluginConfig,\n ResolvedArtifactConfig,\n ResolvedSodaGqlConfig,\n SchemaConfig,\n SodaGqlConfig,\n} from \"./types\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["config: SodaGqlConfig","InjectConfigSchema: z.ZodType<InjectConfig>","z","SchemaInputSchema: z.ZodType<SchemaInput>","mod: { exports: unknown }","require","configModule","Script","Result","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/index.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { ArtifactConfig, InjectConfig, SchemaConfig, SchemaInput, SodaGqlConfig, StylesConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config with object inject\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: { scalars: \"./scalars.ts\" },\n * },\n * },\n * });\n * ```\n *\n * @example Static config with string inject (single file)\n * ```ts\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: \"./inject.ts\", // exports scalar, adapter?\n * },\n * },\n * });\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\n// InjectConfig is a union type (string | object), so we define the schema directly\n// rather than using defineSchemaFor which requires object types\nconst InjectConfigSchema: z.ZodType<InjectConfig> = z.union([\n z.string().min(1),\n z.object({\n scalars: z.string().min(1),\n adapter: z.string().min(1).optional(),\n }),\n]);\n\n// SchemaInput supports string, array of strings, or function returning array of strings\n// Function return value validation is deferred to normalize time\nconst SchemaInputSchema: z.ZodType<SchemaInput> = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1),\n z.custom<() => readonly string[]>((val) => typeof val === \"function\"),\n]);\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: SchemaInputSchema,\n inject: InjectConfigSchema,\n defaultInputDepth: z.number().int().positive().max(10).optional(),\n inputDepthOverrides: z.record(z.string(), z.number().int().positive()).optional(),\n});\n\nconst StylesConfigSchema = defineSchemaFor<StylesConfig>()({\n importExtension: z.boolean().optional(),\n});\n\nconst ArtifactConfigSchema = defineSchemaFor<ArtifactConfig>()({\n path: z.string().min(1).optional(),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n styles: StylesConfigSchema.optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n artifact: ArtifactConfigSchema.optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\n// TODO: split config package into definition and evaluation parts\nimport * as configModule from \"./index\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): Result<SodaGqlConfig, ConfigError> {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n if (specifier === \"@soda-gql/config\") {\n return configModule;\n }\n\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return ok(config);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n }),\n );\n }\n}\n","import { dirname, resolve } from \"node:path\";\nimport { err, ok, Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type {\n InjectConfig,\n ResolvedArtifactConfig,\n ResolvedInjectConfig,\n ResolvedSodaGqlConfig,\n SchemaInput,\n SodaGqlConfig,\n} from \"./types\";\n\n/**\n * Normalize schema input to resolved array form.\n * String is converted to single-element array.\n * Function is executed to get the array.\n * All paths are resolved relative to config directory.\n */\nfunction normalizeSchemaInput(schema: SchemaInput, configDir: string): Result<readonly string[], ConfigError> {\n // Execute function if provided\n const paths = typeof schema === \"function\" ? schema() : schema;\n // Normalize single string to array\n const pathArray = typeof paths === \"string\" ? [paths] : paths;\n\n // Runtime validation: empty array check\n if (pathArray.length === 0) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: \"Schema paths cannot be empty\",\n }),\n );\n }\n\n return ok(pathArray.map((p) => resolve(configDir, p)));\n}\n\n/**\n * Normalize inject config to resolved object form.\n * String form is converted to object with same path for all fields.\n */\nfunction normalizeInject(inject: InjectConfig, configDir: string): ResolvedInjectConfig {\n if (typeof inject === \"string\") {\n const resolvedPath = resolve(configDir, inject);\n return {\n scalars: resolvedPath,\n adapter: resolvedPath,\n };\n }\n return {\n scalars: resolve(configDir, inject.scalars),\n ...(inject.adapter ? { adapter: resolve(configDir, inject.adapter) } : {}),\n };\n}\n\n/**\n * Resolve a glob pattern relative to the config directory.\n * Handles negation patterns (e.g., \"!./path/to/exclude\") by preserving the \"!\" prefix.\n */\nfunction resolvePattern(pattern: string, configDir: string): string {\n if (pattern.startsWith(\"!\")) {\n // Preserve the negation prefix, resolve the rest\n return `!${resolve(configDir, pattern.slice(1))}`;\n }\n return resolve(configDir, pattern);\n}\n\n/**\n * Normalize artifact config to resolved form.\n * Returns undefined if no path is specified.\n */\nfunction normalizeArtifact(artifact: SodaGqlConfig[\"artifact\"], configDir: string): ResolvedArtifactConfig | undefined {\n if (!artifact?.path) {\n return undefined;\n }\n return {\n path: resolve(configDir, artifact.path),\n };\n}\n\n/**\n * Resolve and normalize config with defaults.\n * Paths in the config are resolved relative to the config file's directory.\n */\nexport function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configDir = dirname(configPath);\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n // Normalize artifact config (only if path is specified)\n const artifact = normalizeArtifact(config.artifact, configDir);\n\n // Normalize schemas with error handling\n const schemaEntries = Object.entries(config.schemas).map(([name, schemaConfig]) =>\n normalizeSchemaInput(schemaConfig.schema, configDir).map(\n (schema) =>\n [\n name,\n {\n schema,\n inject: normalizeInject(schemaConfig.inject, configDir),\n defaultInputDepth: schemaConfig.defaultInputDepth ?? 3,\n inputDepthOverrides: schemaConfig.inputDepthOverrides ?? {},\n },\n ] as const,\n ),\n );\n\n const combinedResult = Result.combine(schemaEntries);\n if (combinedResult.isErr()) {\n return err(combinedResult.error);\n }\n const normalizedSchemas = Object.fromEntries(combinedResult.value);\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(configDir, config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolvePattern(pattern, configDir)),\n exclude: exclude.map((pattern) => resolvePattern(pattern, configDir)),\n schemas: normalizedSchemas,\n styles: {\n importExtension: config.styles?.importExtension ?? false,\n },\n plugins: config.plugins ?? {},\n ...(artifact ? { artifact } : {}),\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n const result = executeConfigFile(resolvedPath);\n if (result.isErr()) {\n return err(result.error);\n }\n return normalizeConfig(result.value, resolvedPath);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","export type { ConfigError, ConfigErrorCode } from \"./errors\";\nexport { configError } from \"./errors\";\nexport {\n defineConfig,\n type SodaGqlConfigContainer,\n validateConfig,\n} from \"./helper\";\nexport { findConfigFile, loadConfig, loadConfigFrom } from \"./loader\";\nexport { normalizeConfig } from \"./normalize\";\nexport type {\n ArtifactConfig,\n PluginConfig,\n ResolvedArtifactConfig,\n ResolvedSodaGqlConfig,\n SchemaConfig,\n SodaGqlConfig,\n} from \"./types\";\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/errors.ts","../src/types.ts","../src/helper.ts","../src/loader.ts","../src/normalize.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -189,6 +189,16 @@ function normalizeInject(inject, configDir) {
189
189
  };
190
190
  }
191
191
  /**
192
+ * Resolve a glob pattern relative to the config directory.
193
+ * Handles negation patterns (e.g., "!./path/to/exclude") by preserving the "!" prefix.
194
+ */
195
+ function resolvePattern(pattern, configDir) {
196
+ if (pattern.startsWith("!")) {
197
+ return `!${resolve(configDir, pattern.slice(1))}`;
198
+ }
199
+ return resolve(configDir, pattern);
200
+ }
201
+ /**
192
202
  * Normalize artifact config to resolved form.
193
203
  * Returns undefined if no path is specified.
194
204
  */
@@ -223,8 +233,8 @@ function normalizeConfig(config, configPath) {
223
233
  analyzer,
224
234
  outdir: resolve(configDir, config.outdir),
225
235
  graphqlSystemAliases,
226
- include: config.include.map((pattern) => resolve(configDir, pattern)),
227
- exclude: exclude.map((pattern) => resolve(configDir, pattern)),
236
+ include: config.include.map((pattern) => resolvePattern(pattern, configDir)),
237
+ exclude: exclude.map((pattern) => resolvePattern(pattern, configDir)),
228
238
  schemas: normalizedSchemas,
229
239
  styles: { importExtension: config.styles?.importExtension ?? false },
230
240
  plugins: config.plugins ?? {},
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["config: SodaGqlConfig","InjectConfigSchema: z.ZodType<InjectConfig>","SchemaInputSchema: z.ZodType<SchemaInput>","resolve","mod: { exports: unknown }","configModule","dirname","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/index.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { ArtifactConfig, InjectConfig, SchemaConfig, SchemaInput, SodaGqlConfig, StylesConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config with object inject\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: { scalars: \"./scalars.ts\" },\n * },\n * },\n * });\n * ```\n *\n * @example Static config with string inject (single file)\n * ```ts\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: \"./inject.ts\", // exports scalar, adapter?\n * },\n * },\n * });\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\n// InjectConfig is a union type (string | object), so we define the schema directly\n// rather than using defineSchemaFor which requires object types\nconst InjectConfigSchema: z.ZodType<InjectConfig> = z.union([\n z.string().min(1),\n z.object({\n scalars: z.string().min(1),\n adapter: z.string().min(1).optional(),\n }),\n]);\n\n// SchemaInput supports string, array of strings, or function returning array of strings\n// Function return value validation is deferred to normalize time\nconst SchemaInputSchema: z.ZodType<SchemaInput> = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1),\n z.custom<() => readonly string[]>((val) => typeof val === \"function\"),\n]);\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: SchemaInputSchema,\n inject: InjectConfigSchema,\n defaultInputDepth: z.number().int().positive().max(10).optional(),\n inputDepthOverrides: z.record(z.string(), z.number().int().positive()).optional(),\n});\n\nconst StylesConfigSchema = defineSchemaFor<StylesConfig>()({\n importExtension: z.boolean().optional(),\n});\n\nconst ArtifactConfigSchema = defineSchemaFor<ArtifactConfig>()({\n path: z.string().min(1).optional(),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n styles: StylesConfigSchema.optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n artifact: ArtifactConfigSchema.optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\n// TODO: split config package into definition and evaluation parts\nimport * as configModule from \"./index\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): Result<SodaGqlConfig, ConfigError> {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n if (specifier === \"@soda-gql/config\") {\n return configModule;\n }\n\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return ok(config);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n }),\n );\n }\n}\n","import { dirname, resolve } from \"node:path\";\nimport { err, ok, Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type {\n InjectConfig,\n ResolvedArtifactConfig,\n ResolvedInjectConfig,\n ResolvedSodaGqlConfig,\n SchemaInput,\n SodaGqlConfig,\n} from \"./types\";\n\n/**\n * Normalize schema input to resolved array form.\n * String is converted to single-element array.\n * Function is executed to get the array.\n * All paths are resolved relative to config directory.\n */\nfunction normalizeSchemaInput(schema: SchemaInput, configDir: string): Result<readonly string[], ConfigError> {\n // Execute function if provided\n const paths = typeof schema === \"function\" ? schema() : schema;\n // Normalize single string to array\n const pathArray = typeof paths === \"string\" ? [paths] : paths;\n\n // Runtime validation: empty array check\n if (pathArray.length === 0) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: \"Schema paths cannot be empty\",\n }),\n );\n }\n\n return ok(pathArray.map((p) => resolve(configDir, p)));\n}\n\n/**\n * Normalize inject config to resolved object form.\n * String form is converted to object with same path for all fields.\n */\nfunction normalizeInject(inject: InjectConfig, configDir: string): ResolvedInjectConfig {\n if (typeof inject === \"string\") {\n const resolvedPath = resolve(configDir, inject);\n return {\n scalars: resolvedPath,\n adapter: resolvedPath,\n };\n }\n return {\n scalars: resolve(configDir, inject.scalars),\n ...(inject.adapter ? { adapter: resolve(configDir, inject.adapter) } : {}),\n };\n}\n\n/**\n * Normalize artifact config to resolved form.\n * Returns undefined if no path is specified.\n */\nfunction normalizeArtifact(artifact: SodaGqlConfig[\"artifact\"], configDir: string): ResolvedArtifactConfig | undefined {\n if (!artifact?.path) {\n return undefined;\n }\n return {\n path: resolve(configDir, artifact.path),\n };\n}\n\n/**\n * Resolve and normalize config with defaults.\n * Paths in the config are resolved relative to the config file's directory.\n */\nexport function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configDir = dirname(configPath);\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n // Normalize artifact config (only if path is specified)\n const artifact = normalizeArtifact(config.artifact, configDir);\n\n // Normalize schemas with error handling\n const schemaEntries = Object.entries(config.schemas).map(([name, schemaConfig]) =>\n normalizeSchemaInput(schemaConfig.schema, configDir).map(\n (schema) =>\n [\n name,\n {\n schema,\n inject: normalizeInject(schemaConfig.inject, configDir),\n defaultInputDepth: schemaConfig.defaultInputDepth ?? 3,\n inputDepthOverrides: schemaConfig.inputDepthOverrides ?? {},\n },\n ] as const,\n ),\n );\n\n const combinedResult = Result.combine(schemaEntries);\n if (combinedResult.isErr()) {\n return err(combinedResult.error);\n }\n const normalizedSchemas = Object.fromEntries(combinedResult.value);\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(configDir, config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolve(configDir, pattern)),\n exclude: exclude.map((pattern) => resolve(configDir, pattern)),\n schemas: normalizedSchemas,\n styles: {\n importExtension: config.styles?.importExtension ?? false,\n },\n plugins: config.plugins ?? {},\n ...(artifact ? { artifact } : {}),\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n const result = executeConfigFile(resolvedPath);\n if (result.isErr()) {\n return err(result.error);\n }\n return normalizeConfig(result.value, resolvedPath);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","export type { ConfigError, ConfigErrorCode } from \"./errors\";\nexport { configError } from \"./errors\";\nexport {\n defineConfig,\n type SodaGqlConfigContainer,\n validateConfig,\n} from \"./helper\";\nexport { findConfigFile, loadConfig, loadConfigFrom } from \"./loader\";\nexport { normalizeConfig } from \"./normalize\";\nexport type {\n ArtifactConfig,\n PluginConfig,\n ResolvedArtifactConfig,\n ResolvedSodaGqlConfig,\n SchemaConfig,\n SodaGqlConfig,\n} from \"./types\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["config: SodaGqlConfig","InjectConfigSchema: z.ZodType<InjectConfig>","SchemaInputSchema: z.ZodType<SchemaInput>","resolve","mod: { exports: unknown }","configModule","dirname","resolved: ResolvedSodaGqlConfig"],"sources":["../src/errors.ts","../src/helper.ts","../src/evaluation.ts","../src/normalize.ts","../src/loader.ts","../src/index.ts"],"sourcesContent":["export type ConfigErrorCode = \"CONFIG_NOT_FOUND\" | \"CONFIG_LOAD_FAILED\" | \"CONFIG_VALIDATION_FAILED\" | \"CONFIG_INVALID_PATH\";\n\nexport type ConfigError = {\n readonly code: ConfigErrorCode;\n readonly message: string;\n readonly filePath?: string;\n readonly cause?: unknown;\n};\n\nexport const configError = ({\n code,\n message,\n filePath,\n cause,\n}: {\n code: ConfigErrorCode;\n message: string;\n filePath?: string;\n cause?: unknown;\n}): ConfigError => ({\n code,\n message,\n filePath,\n cause,\n});\n","import { defineSchemaFor } from \"@soda-gql/common\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport z from \"zod\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type { ArtifactConfig, InjectConfig, SchemaConfig, SchemaInput, SodaGqlConfig, StylesConfig } from \"./types\";\n\n/**\n * Thin wrapper class to simplify the validation of exported value from config file.\n * As we use SWC + VM to execute the config file, the exported value is not typed.\n * This wrapper class ensures the exported value is a valid soda-gql config object.\n */\nexport class SodaGqlConfigContainer {\n private constructor(public readonly config: SodaGqlConfig) {}\n\n public static create(config: SodaGqlConfig): SodaGqlConfigContainer {\n return new SodaGqlConfigContainer(config);\n }\n}\n\n/**\n * Type-safe helper for defining soda-gql configuration.\n * Supports both static and dynamic (async) configs.\n *\n * @example Static config with object inject\n * ```ts\n * import { defineConfig } from \"@soda-gql/config\";\n *\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: { scalars: \"./scalars.ts\" },\n * },\n * },\n * });\n * ```\n *\n * @example Static config with string inject (single file)\n * ```ts\n * export default defineConfig({\n * outdir: \"./graphql-system\",\n * include: [\"./src/**\\/*.ts\"],\n * schemas: {\n * default: {\n * schema: \"./schema.graphql\",\n * inject: \"./inject.ts\", // exports scalar, adapter?\n * },\n * },\n * });\n * ```\n */\nexport function defineConfig(config: SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: () => SodaGqlConfig): SodaGqlConfigContainer;\nexport function defineConfig(config: SodaGqlConfig | (() => SodaGqlConfig)): SodaGqlConfigContainer {\n const validated = validateConfig(typeof config === \"function\" ? config() : config);\n if (validated.isErr()) {\n throw validated.error;\n }\n return SodaGqlConfigContainer.create(validated.value);\n}\n\n// InjectConfig is a union type (string | object), so we define the schema directly\n// rather than using defineSchemaFor which requires object types\nconst InjectConfigSchema: z.ZodType<InjectConfig> = z.union([\n z.string().min(1),\n z.object({\n scalars: z.string().min(1),\n adapter: z.string().min(1).optional(),\n }),\n]);\n\n// SchemaInput supports string, array of strings, or function returning array of strings\n// Function return value validation is deferred to normalize time\nconst SchemaInputSchema: z.ZodType<SchemaInput> = z.union([\n z.string().min(1),\n z.array(z.string().min(1)).min(1),\n z.custom<() => readonly string[]>((val) => typeof val === \"function\"),\n]);\n\nconst SchemaConfigSchema = defineSchemaFor<SchemaConfig>()({\n schema: SchemaInputSchema,\n inject: InjectConfigSchema,\n defaultInputDepth: z.number().int().positive().max(10).optional(),\n inputDepthOverrides: z.record(z.string(), z.number().int().positive()).optional(),\n});\n\nconst StylesConfigSchema = defineSchemaFor<StylesConfig>()({\n importExtension: z.boolean().optional(),\n});\n\nconst ArtifactConfigSchema = defineSchemaFor<ArtifactConfig>()({\n path: z.string().min(1).optional(),\n});\n\nconst SodaGqlConfigSchema = defineSchemaFor<SodaGqlConfig>()({\n analyzer: z.enum([\"ts\", \"swc\"]).optional(),\n outdir: z.string().min(1),\n graphqlSystemAliases: z.array(z.string()).optional(),\n include: z.array(z.string().min(1)),\n exclude: z.array(z.string().min(1)).optional(),\n schemas: z.record(z.string(), SchemaConfigSchema),\n styles: StylesConfigSchema.optional(),\n plugins: z.record(z.string(), z.unknown()).optional(),\n artifact: ArtifactConfigSchema.optional(),\n});\n\nexport function validateConfig(config: unknown): Result<SodaGqlConfig, ConfigError> {\n const result = SodaGqlConfigSchema.safeParse(config);\n\n if (!result.success) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: `Invalid config: ${result.error.message}`,\n }),\n );\n }\n\n return ok(result.data satisfies SodaGqlConfig);\n}\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, resolve } from \"node:path/posix\";\nimport { Script } from \"node:vm\";\nimport { resolveRelativeImportWithExistenceCheck } from \"@soda-gql/common\";\nimport { transformSync } from \"@swc/core\";\nimport { err, ok, type Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport { SodaGqlConfigContainer } from \"./helper\";\n// TODO: split config package into definition and evaluation parts\nimport * as configModule from \"./index\";\nimport type { SodaGqlConfig } from \"./types\";\n\n/**\n * Load and execute TypeScript config file synchronously using SWC + VM.\n */\nexport function executeConfigFile(configPath: string): Result<SodaGqlConfig, ConfigError> {\n const filePath = resolve(configPath);\n try {\n // Read the config file\n const source = readFileSync(filePath, \"utf-8\");\n\n // Transform TypeScript to CommonJS using SWC\n const result = transformSync(source, {\n filename: filePath,\n jsc: {\n parser: {\n syntax: \"typescript\",\n },\n },\n module: {\n type: \"commonjs\",\n },\n sourceMaps: false,\n minify: false,\n });\n\n // Create CommonJS context\n const mod: { exports: unknown } = { exports: {} };\n\n const requireInner = createRequire(filePath);\n const require = (specifier: string) => {\n if (specifier === \"@soda-gql/config\") {\n return configModule;\n }\n\n // Handle external modules normally\n if (!specifier.startsWith(\".\")) {\n return requireInner(specifier);\n }\n\n // Resolve relative imports with existence check\n const resolvedPath = resolveRelativeImportWithExistenceCheck({ filePath, specifier });\n if (!resolvedPath) {\n throw new Error(`Module not found: ${specifier}`);\n }\n return requireInner(resolvedPath);\n };\n\n // Execute in VM context\n new Script(result.code, { filename: filePath }).runInNewContext({\n require,\n module: mod,\n exports: mod.exports,\n __dirname: dirname(filePath),\n __filename: filePath,\n console,\n process,\n });\n\n const config =\n mod.exports &&\n typeof mod.exports === \"object\" &&\n \"default\" in mod.exports &&\n mod.exports.default instanceof SodaGqlConfigContainer\n ? mod.exports.default.config\n : null;\n\n if (!config) {\n throw new Error(\"Invalid config module\");\n }\n\n return ok(config);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: filePath,\n cause: error,\n }),\n );\n }\n}\n","import { dirname, resolve } from \"node:path\";\nimport { err, ok, Result } from \"neverthrow\";\nimport { type ConfigError, configError } from \"./errors\";\nimport type {\n InjectConfig,\n ResolvedArtifactConfig,\n ResolvedInjectConfig,\n ResolvedSodaGqlConfig,\n SchemaInput,\n SodaGqlConfig,\n} from \"./types\";\n\n/**\n * Normalize schema input to resolved array form.\n * String is converted to single-element array.\n * Function is executed to get the array.\n * All paths are resolved relative to config directory.\n */\nfunction normalizeSchemaInput(schema: SchemaInput, configDir: string): Result<readonly string[], ConfigError> {\n // Execute function if provided\n const paths = typeof schema === \"function\" ? schema() : schema;\n // Normalize single string to array\n const pathArray = typeof paths === \"string\" ? [paths] : paths;\n\n // Runtime validation: empty array check\n if (pathArray.length === 0) {\n return err(\n configError({\n code: \"CONFIG_VALIDATION_FAILED\",\n message: \"Schema paths cannot be empty\",\n }),\n );\n }\n\n return ok(pathArray.map((p) => resolve(configDir, p)));\n}\n\n/**\n * Normalize inject config to resolved object form.\n * String form is converted to object with same path for all fields.\n */\nfunction normalizeInject(inject: InjectConfig, configDir: string): ResolvedInjectConfig {\n if (typeof inject === \"string\") {\n const resolvedPath = resolve(configDir, inject);\n return {\n scalars: resolvedPath,\n adapter: resolvedPath,\n };\n }\n return {\n scalars: resolve(configDir, inject.scalars),\n ...(inject.adapter ? { adapter: resolve(configDir, inject.adapter) } : {}),\n };\n}\n\n/**\n * Resolve a glob pattern relative to the config directory.\n * Handles negation patterns (e.g., \"!./path/to/exclude\") by preserving the \"!\" prefix.\n */\nfunction resolvePattern(pattern: string, configDir: string): string {\n if (pattern.startsWith(\"!\")) {\n // Preserve the negation prefix, resolve the rest\n return `!${resolve(configDir, pattern.slice(1))}`;\n }\n return resolve(configDir, pattern);\n}\n\n/**\n * Normalize artifact config to resolved form.\n * Returns undefined if no path is specified.\n */\nfunction normalizeArtifact(artifact: SodaGqlConfig[\"artifact\"], configDir: string): ResolvedArtifactConfig | undefined {\n if (!artifact?.path) {\n return undefined;\n }\n return {\n path: resolve(configDir, artifact.path),\n };\n}\n\n/**\n * Resolve and normalize config with defaults.\n * Paths in the config are resolved relative to the config file's directory.\n */\nexport function normalizeConfig(config: SodaGqlConfig, configPath: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configDir = dirname(configPath);\n // Default analyzer to \"ts\"\n const analyzer = config.analyzer ?? \"ts\";\n\n // Default graphqlSystemAliases to [\"@/graphql-system\"]\n const graphqlSystemAliases = config.graphqlSystemAliases ?? [\"@/graphql-system\"];\n\n // Default exclude to empty array\n const exclude = config.exclude ?? [];\n\n // Normalize artifact config (only if path is specified)\n const artifact = normalizeArtifact(config.artifact, configDir);\n\n // Normalize schemas with error handling\n const schemaEntries = Object.entries(config.schemas).map(([name, schemaConfig]) =>\n normalizeSchemaInput(schemaConfig.schema, configDir).map(\n (schema) =>\n [\n name,\n {\n schema,\n inject: normalizeInject(schemaConfig.inject, configDir),\n defaultInputDepth: schemaConfig.defaultInputDepth ?? 3,\n inputDepthOverrides: schemaConfig.inputDepthOverrides ?? {},\n },\n ] as const,\n ),\n );\n\n const combinedResult = Result.combine(schemaEntries);\n if (combinedResult.isErr()) {\n return err(combinedResult.error);\n }\n const normalizedSchemas = Object.fromEntries(combinedResult.value);\n\n const resolved: ResolvedSodaGqlConfig = {\n analyzer,\n outdir: resolve(configDir, config.outdir),\n graphqlSystemAliases,\n include: config.include.map((pattern) => resolvePattern(pattern, configDir)),\n exclude: exclude.map((pattern) => resolvePattern(pattern, configDir)),\n schemas: normalizedSchemas,\n styles: {\n importExtension: config.styles?.importExtension ?? false,\n },\n plugins: config.plugins ?? {},\n ...(artifact ? { artifact } : {}),\n };\n\n return ok(resolved);\n}\n","import { existsSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Result } from \"neverthrow\";\nimport { err } from \"neverthrow\";\nimport type { ConfigError } from \"./errors\";\nimport { configError } from \"./errors\";\nimport { executeConfigFile } from \"./evaluation\";\nimport { normalizeConfig } from \"./normalize\";\nimport type { ResolvedSodaGqlConfig } from \"./types\";\n\nexport const DEFAULT_CONFIG_FILENAMES = [\n \"soda-gql.config.ts\",\n \"soda-gql.config.mts\",\n \"soda-gql.config.js\",\n \"soda-gql.config.mjs\",\n] as const;\n\n/**\n * Find config file by walking up directory tree.\n */\nexport function findConfigFile(startDir: string = process.cwd()): string | null {\n let currentDir = startDir;\n while (currentDir !== dirname(currentDir)) {\n for (const filename of DEFAULT_CONFIG_FILENAMES) {\n const configPath = join(currentDir, filename);\n if (existsSync(configPath)) {\n return configPath;\n }\n }\n currentDir = dirname(currentDir);\n }\n return null;\n}\n\n/**\n * Load config with Result type (for library use).\n */\nexport function loadConfig(configPath: string | undefined): Result<ResolvedSodaGqlConfig, ConfigError> {\n const resolvedPath = configPath ?? findConfigFile();\n\n if (!resolvedPath) {\n return err(configError({ code: \"CONFIG_NOT_FOUND\", message: \"Config file not found\" }));\n }\n\n try {\n const result = executeConfigFile(resolvedPath);\n if (result.isErr()) {\n return err(result.error);\n }\n return normalizeConfig(result.value, resolvedPath);\n } catch (error) {\n return err(\n configError({\n code: \"CONFIG_LOAD_FAILED\",\n message: `Failed to load config: ${error instanceof Error ? error.message : String(error)}`,\n filePath: resolvedPath,\n cause: error,\n }),\n );\n }\n}\n\n/**\n * Load config from specific directory.\n */\nexport function loadConfigFrom(dir: string): Result<ResolvedSodaGqlConfig, ConfigError> {\n const configPath = findConfigFile(dir);\n return loadConfig(configPath ?? undefined);\n}\n","export type { ConfigError, ConfigErrorCode } from \"./errors\";\nexport { configError } from \"./errors\";\nexport {\n defineConfig,\n type SodaGqlConfigContainer,\n validateConfig,\n} from \"./helper\";\nexport { findConfigFile, loadConfig, loadConfigFrom } from \"./loader\";\nexport { normalizeConfig } from \"./normalize\";\nexport type {\n ArtifactConfig,\n PluginConfig,\n ResolvedArtifactConfig,\n ResolvedSodaGqlConfig,\n SchemaConfig,\n SodaGqlConfig,\n} from \"./types\";\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soda-gql/config",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "Centralized configuration loader and helpers for soda-gql tooling.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -49,7 +49,7 @@
49
49
  "./package.json": "./package.json"
50
50
  },
51
51
  "dependencies": {
52
- "@soda-gql/common": "0.11.0",
52
+ "@soda-gql/common": "0.11.2",
53
53
  "@swc/core": "^1.10.0",
54
54
  "neverthrow": "^8.2.0",
55
55
  "zod": "^4.1.11"