UNPKG

apollo-subgraph-cli

Version:
1 lines 36.2 kB
{"version":3,"sources":["../src/cli/index.ts","../src/cli/constants/cliBanner.ts","../src/cli/constants/common.ts","../src/cli/tasks/index.ts","../src/cli/tasks/generateSubgraphConfig.ts","../src/cli/templates/index.ts","../src/cli/tasks/generateSubgraphSchema.ts","../src/cli/utils/buildFileWatcher.ts","../src/cli/utils/logPrefix.ts","../src/cli/utils/parseGlobPatterns.ts","../src/cli/utils/generateSubgraphSchema.ts","../src/cli/utils/loadSchema.ts","../src/cli/utils/resolveModule.ts","../src/cli/utils/loadChokidar.ts","../src/cli/utils/getSubgraphArgsFromCosmicConfigFile.ts","../src/cli/utils/getPackageJson.ts","../src/cli/utils/findFilesByFileName.ts","../src/cli/utils/isGitRepo.ts","../src/cli/tasks/checkSubgraphSchema.ts","../src/cli/tasks/updatePackageJSON.ts","../src/cli/tasks/addFilesToGitIndex.ts","../src/cli/prompts/index.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport { Command } from 'commander';\nimport { cliBanner, commands } from './constants';\nimport { tasks } from './tasks';\nimport {\n getOutputPath,\n getPrintScriptName,\n getCheckScriptName,\n getSchemaPaths,\n confirmAddFilesToGitStaging,\n} from './prompts';\nimport {\n buildFileWatcher,\n generateSubgraphSchema,\n getSubgraphArgsFromCosmicConfigFile,\n} from './utils';\n\n(async () => {\n const packageJSON = await fs.readJson('./package.json');\n\n // Main command\n const subgraph = new Command('subgraph')\n .description('A CLI for federated subgraph management')\n .version(packageJSON.version);\n\n // Schema command\n const schema = new Command('schema').description(\n 'Helpful commands for managing your subgraph schema'\n );\n\n schema\n .command(commands.check)\n .option('-c, --config <path-to-subgraph-config>', 'The path to your subgraph config file')\n .option('-s, --schema <schema-location...>', \"Location of your subgraph's typeDefs\")\n .action(async (options) => {\n cliBanner.header('schema check');\n\n const config = await getSubgraphArgsFromCosmicConfigFile(options.config);\n const gqlSchemaPath = options.schema ?? config?.schema ?? (await getSchemaPaths());\n\n try {\n await tasks.check.run({\n schema: { paths: gqlSchemaPath },\n });\n\n cliBanner.footer();\n } catch (e) {\n console.error(e);\n process.exit(1);\n }\n });\n\n schema\n .command(commands.print)\n .option('-c, --config <path-to-subgraph-config>', 'The path to your subgraph config file')\n .option('-s, --schema <schema-location...>', \"Location of your subgraph's typeDefs\")\n .option('-o, --output <output-path>', 'The path to the printed schema file')\n .option('-w, --watch', 'Watch for file changes and print the resulting schema file')\n .action(async (options) => {\n const config = await getSubgraphArgsFromCosmicConfigFile(options.config);\n const gqlSchemaPath =\n (options.schema as string[]) ?? config?.schema ?? (await getSchemaPaths());\n const outputPath = (options.output as string) ?? config?.output ?? (await getOutputPath());\n\n if (options.watch) {\n try {\n await generateSubgraphSchema({ paths: gqlSchemaPath, output: outputPath });\n } catch (e) {\n if (e instanceof Error) {\n console.error(e.message);\n }\n }\n\n await buildFileWatcher(gqlSchemaPath, outputPath);\n } else {\n cliBanner.header('schema print');\n\n try {\n await tasks.print.run({\n schema: {\n paths: gqlSchemaPath,\n output: outputPath,\n },\n });\n\n cliBanner.footer();\n } catch (e) {\n console.error(e);\n process.exit(1);\n }\n }\n });\n\n schema.command(commands.init).action(async () => {\n cliBanner.header('schema init');\n console.log(\"Let's get started by answering a few questions about your service.\\n\");\n\n const schemaPaths = await getSchemaPaths();\n const outputPath = await getOutputPath();\n const printScriptName = await getPrintScriptName();\n const checkScriptName = await getCheckScriptName();\n const git = await confirmAddFilesToGitStaging();\n\n console.log('\\n');\n\n try {\n await tasks.init.run({\n git,\n printScriptName,\n checkScriptName,\n schema: {\n paths: schemaPaths,\n output: outputPath,\n },\n });\n\n cliBanner.footer();\n } catch (e) {\n process.exit(1);\n }\n });\n\n subgraph.addCommand(schema);\n subgraph.parse();\n})();\n","import boxen from 'boxen';\nimport chalk from 'chalk';\n\nexport const cliBanner = {\n header: (command: string) => {\n console.log(\n boxen(chalk.blueBright(`subgraph: ${chalk.green(command)}`), {\n borderStyle: 'round',\n textAlignment: 'center',\n width: 40,\n })\n );\n },\n footer: () => {\n console.log(chalk.green('\\nTasks completed successfully. Happy coding!'));\n },\n};\n","export const commands = {\n init: 'init',\n print: 'print',\n check: 'check',\n} as const;\n\nexport const scripts = {\n print: `subgraph schema ${commands.print} --config subgraph.config.ts`,\n check: `subgraph schema ${commands.check} --config subgraph.config.ts`,\n} as const;\n\nexport const commonIgnoreDirs = new Set([\n 'node_modules',\n '.git',\n 'dist',\n 'build',\n 'out',\n 'bin',\n 'obj',\n '.cache',\n 'tmp',\n 'temp',\n '.idea',\n '.vscode',\n '__pycache__',\n '.venv',\n 'coverage',\n 'logs',\n 'test-output',\n '.gradle',\n 'target',\n 'vendor',\n 'migrations',\n]);\n","import { Listr, type ListrBaseClassOptions } from 'listr2';\nimport type { ListrContext, ListrInitContext } from '../types';\nimport { generateSubgraphConfig } from './generateSubgraphConfig';\nimport { generateSubgraphSchema } from './generateSubgraphSchema';\nimport { checkSubgraphSchema } from './checkSubgraphSchema';\nimport { updatePackageJSON } from './updatePackageJSON';\nimport { addFilesToGitIndex } from './addFilesToGitIndex';\n\nconst listrOptions: ListrBaseClassOptions = {\n concurrent: false,\n rendererOptions: { collapseSkips: false },\n};\n\nexport const tasks = {\n init: new Listr<ListrInitContext>(\n [generateSubgraphConfig, generateSubgraphSchema, updatePackageJSON, addFilesToGitIndex],\n listrOptions\n ),\n print: new Listr<ListrContext>([generateSubgraphSchema], listrOptions),\n check: new Listr([checkSubgraphSchema], listrOptions),\n};\n","import { join } from 'node:path';\nimport { writeFileSync } from 'node:fs';\nimport type { ListrTask } from 'listr2';\nimport type { ListrContext } from '../types';\nimport { subgraphConfigTemplate } from '../templates';\n\nconst subTaskOptions = {\n concurrent: false,\n rendererOptions: { collapse: true },\n};\n\nexport const generateSubgraphConfig: ListrTask<ListrContext> = {\n title: 'Generate subgraph config file',\n task: (_, task) =>\n task.newListr<ListrContext>(\n [\n {\n title: 'Writing subgraph config to project root...',\n task: async ({ schema: { paths, output } }) => {\n try {\n const configFilePath = join(process.cwd(), 'subgraph.config.ts');\n const configContent = subgraphConfigTemplate(paths, output);\n writeFileSync(configFilePath, configContent);\n } catch (e) {\n throw new Error(`Error generating subgraph config file: ${(e as Error).message}`);\n }\n },\n },\n ],\n subTaskOptions\n ),\n};\n","export const esBuildESMTemplate = `\nconst require = (await import(\"node:module\")).createRequire(import.meta.url);\nconst __filename = (await import(\"node:url\")).fileURLToPath(import.meta.url);\nconst __dirname = (await import(\"node:path\")).dirname(__filename);\n`;\n\nexport const subgraphConfigTemplate = (\n schemaPaths: string[],\n outputPath: string\n // moduleName?: string\n) => {\n return `import type { SubgraphConfig } from 'apollo-subgraph-cli'\n\n/**\n * @property schema - The location of your subgraph's typeDefs\n * @property output - The path to the printed schema file\n */\n\nconst config: SubgraphConfig = {\n schema: [${schemaPaths.map((path) => `'${path}'`).join(', ')}],\n output: '${outputPath}'\n}\n\nexport default config\n`;\n};\n","import { join, parse } from 'node:path';\nimport { writeFileSync } from 'node:fs';\nimport fs from 'fs-extra';\nimport type { ListrTask } from 'listr2';\nimport { printSubgraphSchema } from '@apollo/subgraph';\nimport type { ListrContext } from '../types';\nimport { loadSchema } from '../utils';\n\nconst { pathExists, mkdir } = fs;\n\nconst subTaskOptions = {\n concurrent: false,\n rendererOptions: { collapse: true },\n};\n\nexport const generateSubgraphSchema: ListrTask<ListrContext> = {\n title: 'Generate subgraph schema file',\n task: (_, task) =>\n task.newListr<ListrContext>(\n [\n {\n title: 'Printing schema file output...',\n task: async ({ schema: { paths, output } }) => {\n try {\n const schemaPaths = paths.map((path) => join(process.cwd(), path));\n const loadedSchema = await loadSchema(schemaPaths);\n\n const schemaFilePath = join(process.cwd(), output);\n const { dir } = parse(schemaFilePath);\n const exists = await pathExists(dir);\n\n if (!exists) {\n await mkdir(dir, { recursive: true });\n }\n\n writeFileSync(schemaFilePath, printSubgraphSchema(loadedSchema));\n } catch (e) {\n throw new Error(`Error generating subgraph schema file: ${(e as Error).message}`);\n }\n },\n },\n ],\n subTaskOptions\n ),\n};\n","import { parse } from 'path';\nimport chalk from 'chalk';\nimport { logPrefix } from './logPrefix';\nimport { parseGlobPatterns } from './parseGlobPatterns';\nimport { generateSubgraphSchema } from './generateSubgraphSchema';\nimport { loadChokidar } from './loadChokidar';\n\nexport const buildFileWatcher = async (gqlSchemaPath: string[], outputPath: string) => {\n const schemaPaths = await parseGlobPatterns(gqlSchemaPath, 'file');\n const chokidar = await loadChokidar();\n const watcher = chokidar.watch(schemaPaths, { persistent: true });\n\n const printedPaths = schemaPaths\n .map((path) => {\n const { name, ext } = parse(path);\n return ` - ${chalk.green(name + ext)}`;\n })\n .join('\\n');\n console.log(`${logPrefix('info', 'INFO')}: Watching for schema changes in`);\n console.log(printedPaths);\n\n watcher.on('change', async (filePath) => {\n const { name, ext } = parse(filePath);\n try {\n await generateSubgraphSchema({ paths: gqlSchemaPath, output: outputPath });\n console.info(\n `${logPrefix('success', 'CHANGE DETECTED')}:${logPrefix('success', name + ext)} Writing changes to ${chalk.green(outputPath)}`\n );\n } catch (e) {\n if (e instanceof Error) {\n console.error(e.message);\n }\n }\n });\n\n watcher.on('error', async (e) => {\n await watcher?.close();\n console.error(e);\n });\n};\n","import chalk from 'chalk';\n\nconst colorMap = {\n error: chalk.red,\n info: chalk.blue,\n success: chalk.green,\n} as const;\n\nexport const logPrefix = (type: 'info' | 'success' | 'error', message: string) =>\n `[${colorMap[type].bold(message)}]`;\n","import { resolve } from 'node:path';\nimport fg from 'fast-glob';\n\ntype PathType = 'file' | 'directory';\n\nexport async function parseGlobPatterns(\n patterns: string[],\n type: PathType = 'file'\n): Promise<string[]> {\n const entries = await fg(patterns, {\n dot: true,\n onlyFiles: type === 'file',\n onlyDirectories: type === 'directory',\n });\n return entries.map((entry) => resolve(process.cwd(), entry));\n}\n","import { join, parse } from 'node:path';\nimport { mkdirSync, writeFileSync } from 'node:fs';\nimport fs from 'fs-extra';\nimport { printSubgraphSchema } from '@apollo/subgraph';\nimport { loadSchema } from './loadSchema';\nimport { logPrefix } from './logPrefix';\nimport type { ListrContext } from '../types';\n\nconst { pathExists } = fs;\n\nexport const generateSubgraphSchema = async ({ paths, output }: ListrContext['schema']) => {\n let loadedSchema;\n let schemaFilePath;\n try {\n const schemaPaths = paths.map((path) => join(process.cwd(), path));\n loadedSchema = await loadSchema(schemaPaths);\n schemaFilePath = join(process.cwd(), output);\n\n const { dir } = parse(schemaFilePath);\n const exists = await pathExists(dir);\n if (!exists) {\n mkdirSync(dir, { recursive: true });\n }\n } catch (e: any) {\n throw new Error(`${logPrefix('error', 'ERROR DETECTED')}: ${e.message}`);\n }\n\n let schema;\n try {\n schema = printSubgraphSchema(loadedSchema);\n } catch (e: any) {\n throw new Error(`${logPrefix('error', 'SCHEMA ERROR DETECTED')}: ${e.message}`);\n }\n\n try {\n writeFileSync(schemaFilePath, schema);\n } catch (e: any) {\n throw new Error(`${logPrefix('error', 'ERROR DETECTED')}: ${e.message}`);\n }\n};\n","import type { GraphQLSchema } from 'graphql';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport type { LoadSchemaOptions } from '@graphql-tools/load/typings/schema';\nimport {\n loadSchema as loadSchemaToolkit,\n type UnnormalizedTypeDefPointer,\n} from '@graphql-tools/load';\n\nexport const defaultSchemaLoadOptions = {\n assumeValidSDL: true,\n sort: true,\n convertExtensions: true,\n includeSources: true,\n};\n\nexport async function loadSchema(\n schemaPointers: UnnormalizedTypeDefPointer | UnnormalizedTypeDefPointer[],\n config: Partial<LoadSchemaOptions> = {}\n): Promise<GraphQLSchema> {\n try {\n const loaders = [new CodeFileLoader(), new GraphQLFileLoader()];\n\n const schema = await loadSchemaToolkit(schemaPointers, {\n ...defaultSchemaLoadOptions,\n loaders,\n ...config,\n ...config.config,\n });\n return schema;\n } catch (e: any) {\n throw new Error(\n `\n Failed to load schema from ${Object.keys(schemaPointers).join(',')}:\n\n ${e.message || e}\n ${e.stack || ''}\n\n Apollo Subgraph CLI supports all extensions for:\n - GraphQL files\n - TS/JS files\n\n Try to use one of above options and run codegen again.\n\n `\n );\n }\n}\n","import { dirname, join } from 'node:path';\nimport { access } from 'node:fs/promises';\n\nexport const resolveModule = async (moduleName: string, startDir: string): Promise<string> => {\n const modulePath = join(startDir, 'node_modules', moduleName);\n try {\n await access(modulePath);\n return modulePath;\n } catch {\n const parentDir = dirname(startDir);\n if (parentDir === startDir) {\n throw new Error(`Cannot find module '${moduleName}'`);\n }\n return resolveModule(moduleName, parentDir);\n }\n};\n","import { resolveModule } from './resolveModule';\n\nexport const loadChokidar = async () => {\n try {\n await resolveModule('chokidar', process.cwd());\n return await import('chokidar');\n } catch (e) {\n throw new Error(\n 'The \"chokidar\" package is required and needs to be installed if watching for file changes.'\n );\n }\n};\n","import { cosmiconfig } from 'cosmiconfig';\nimport { TypeScriptLoader } from 'cosmiconfig-typescript-loader';\nimport type { SubgraphConfig } from '../../typings';\n\nexport const getSubgraphArgsFromCosmicConfigFile = async (\n search?: string\n): Promise<SubgraphConfig | undefined> => {\n const moduleName = 'subgraph';\n const searchPlaces = search\n ? [search]\n : [\n 'package.json',\n `.${moduleName}rc`,\n `.${moduleName}rc.json`,\n `.${moduleName}rc.yaml`,\n `.${moduleName}rc.yml`,\n `.${moduleName}rc.js`,\n `.${moduleName}rc.ts`,\n `${moduleName}.config.js`,\n `${moduleName}.config.ts`,\n ];\n\n const result = await cosmiconfig(moduleName, {\n searchPlaces,\n loaders: { '.ts': TypeScriptLoader() },\n }).search();\n\n return result?.config;\n};\n","import { join } from 'node:path';\nimport fs from 'fs-extra';\n\nconst { readJsonSync } = fs;\n\nexport const getPackageJson = () => {\n const packageJsonPath = join(process.cwd(), 'package.json');\n const packageJson = readJsonSync(packageJsonPath);\n return { output: packageJson, path: packageJsonPath };\n};\n","import { readdirSync } from 'node:fs';\nimport { join, relative } from 'node:path';\nimport type { Ignore } from 'ignore';\n\nexport const findFilesByFileName = (dir: string, fileNames: string[], ig: Ignore): string[] => {\n const results: string[] = [];\n\n function searchDir(currentDir: string) {\n const entries = readdirSync(currentDir, { withFileTypes: true });\n\n for (const entry of entries) {\n const relativePath = relative(process.cwd(), join(currentDir, entry.name));\n if (ig.ignores(relativePath)) continue;\n\n const entryPath = join(currentDir, entry.name);\n if (entry.isDirectory()) {\n searchDir(entryPath);\n } else if (fileNames.includes(entry.name)) {\n results.push(entryPath);\n }\n }\n }\n\n searchDir(dir);\n return results;\n};\n","import { execSync } from 'child_process';\n\nexport const isGitRepo = () => {\n try {\n execSync('git rev-parse --is-inside-work-tree', { stdio: 'ignore' });\n return true;\n } catch (e) {\n return false;\n }\n};\n","import { join } from 'node:path';\nimport { printSubgraphSchema } from '@apollo/subgraph';\nimport type { ListrTask } from 'listr2';\nimport type { ListrContextCheckSchema } from '../types';\nimport { loadSchema } from '../utils';\n\nconst subTaskOptions = {\n concurrent: false,\n rendererOptions: { collapse: true },\n};\n\nexport const checkSubgraphSchema: ListrTask<ListrContextCheckSchema> = {\n title: 'Check subgraph schema',\n task: (_, task) =>\n task.newListr<ListrContextCheckSchema>(\n [\n {\n title: 'Checking schema file output...',\n task: async ({ schema: { paths } }, task) => {\n try {\n const schemaPaths = paths.map((path) => join(process.cwd(), path));\n const loadedSchema = await loadSchema(schemaPaths);\n printSubgraphSchema(loadedSchema);\n\n task.output = 'No issues found with federated schema';\n } catch (e) {\n throw new Error(`Error found with federated schema: ${(e as Error).message}`);\n }\n },\n },\n ],\n subTaskOptions\n ),\n};\n","import fs from 'fs-extra';\nimport type { ListrTask } from 'listr2';\nimport type { ListrContext } from '../types';\nimport { scripts } from '../constants';\nimport { getPackageJson } from '../utils';\n\nconst { writeJSONSync } = fs;\n\nconst subTaskOptions = {\n concurrent: false,\n rendererOptions: { collapse: true },\n};\n\nexport const updatePackageJSON: ListrTask<ListrContext> = {\n title: 'Update package.json',\n task: (_, task) =>\n task.newListr<ListrContext>(\n [\n {\n title: 'Adding and updating npm scripts',\n task: async ({ printScriptName, checkScriptName }) => {\n try {\n const { output, path } = getPackageJson();\n\n output.scripts = {\n ...(output.scripts ?? {}),\n [printScriptName ?? 'schema:print']: scripts.print,\n [checkScriptName ?? 'schema:check']: scripts.check,\n };\n\n writeJSONSync(path, output, { spaces: 2 });\n } catch (e) {\n throw new Error(`Error writing to package.json: ${(e as Error).message}`);\n }\n },\n },\n ],\n subTaskOptions\n ),\n};\n","import { join, parse } from 'node:path';\nimport { execSync } from 'node:child_process';\nimport type { ListrTask } from 'listr2';\nimport type { ListrInitContext } from '../types';\nimport { findFilesByFileName, isGitRepo } from '../utils';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { commonIgnoreDirs } from '../constants';\nimport ignore from 'ignore';\n\nconst subTaskOptions = {\n concurrent: false,\n rendererOptions: { collapse: true },\n};\n\nexport const addFilesToGitIndex: ListrTask<ListrInitContext> = {\n title: 'Add files to git',\n skip: ({ git = false }) => (!git ? 'Skipping add files to git' : false),\n task: ({ schema: { output } }, task) =>\n task.newListr(\n [\n {\n title: 'Performing git add...',\n task: (_, task) => {\n const gitRepo = isGitRepo();\n if (!gitRepo) {\n task.output = 'No git repo found.';\n return;\n }\n\n const { name, ext } = parse(output);\n const generatedSchemaFileName = `${name}.${ext}`;\n const fileNames = ['subgraph.config.ts', 'package.json', generatedSchemaFileName];\n\n const gitignorePath = join(process.cwd(), '.gitignore');\n const ig = ignore();\n\n if (existsSync(gitignorePath)) {\n const gitignoreContent = readFileSync(gitignorePath, 'utf-8');\n ig.add(gitignoreContent);\n } else {\n // If there's no `.gitignore`, use the common list of ignored directories\n ig.add([...commonIgnoreDirs].map((dir) => `/${dir}/`));\n }\n\n try {\n const filesPaths = findFilesByFileName(process.cwd(), fileNames, ig);\n if (!filesPaths.length) {\n task.output = 'No files found to add to git staging.';\n return;\n } else {\n execSync(`git add ${filesPaths.map((file) => `${file}`).join(' ')}`);\n }\n } catch (e) {\n throw new Error(`Error adding files to git: ${(e as Error).message}`);\n }\n },\n },\n ],\n subTaskOptions\n ),\n};\n","import { confirm, input } from '@inquirer/prompts';\n\nexport const getSchemaPaths = async (paths: string[] = []): Promise<string[]> => {\n const path = await input({\n message: 'Enter schema path:',\n default: './src/gql/typeDefs/*.ts',\n });\n\n paths.push(path);\n\n const additionalInput = await confirm({ message: 'Do you have another path to provide?' });\n if (additionalInput) {\n await getSchemaPaths(paths);\n }\n\n return paths;\n};\n\nexport const getOutputPath = async (): Promise<string> =>\n input({\n message: 'Where would you like to write the output?',\n default: './schema.graphql',\n validate: (val) => {\n return val?.includes('.graphql') || 'The output has to use the .graphql file extension';\n },\n });\n\nexport const getPrintScriptName = async (): Promise<string> =>\n input({\n message: 'What would you like to name the npm script to print your schema?',\n default: 'schema:print',\n validate: (val) => !!val?.length,\n });\n\nexport const getCheckScriptName = async (): Promise<string> =>\n input({\n message: 'What would you like to name the npm script to check your schema?',\n default: 'schema:check',\n validate: (val) => !!val?.length,\n });\n\nexport const confirmAddFilesToGitStaging = async (): Promise<boolean> =>\n confirm({ message: 'Do you want to add the new files to the git staging area?' });\n"],"mappings":"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","names":["import_fs_extra","boxen","chalk","import_node_path","import_node_fs","import_fs_extra","import_subgraph","import_chalk","import_chalk","chalk","import_node_path","fg","import_node_path","import_node_fs","loadSchemaToolkit","fs","import_node_path","chalk","import_node_path","import_fs_extra","fs","import_node_fs","import_node_path","pathExists","fs","subTaskOptions","generateSubgraphSchema","import_node_path","import_subgraph","subTaskOptions","task","import_fs_extra","fs","subTaskOptions","import_node_path","import_node_fs","subTaskOptions","task","ignore","generateSubgraphSchema","fs"]}