{
  "version": 3,
  "sources": ["../src/plugin.ts", "../src/compile.ts", "../src/codegen.ts"],
  "sourcesContent": ["import * as path from 'node:path';\n\nimport kleur from 'kleur';\nimport { type Plugin } from 'vite';\nimport { cosmiconfigSync, defaultLoaders } from 'cosmiconfig';\n\nimport { compile } from './compile';\nimport { launchProcess } from './codegen';\n\ntype AnyObject = Record<string, unknown>;\n\ntype Config = {\n  codegen?: boolean,\n  relayConfig?: string | AnyObject,\n  module?: 'esmodule' | 'commonjs',\n};\n\nconst configExplorer = cosmiconfigSync('relay', {\n  searchPlaces: [\n    'relay.config.js',\n    'relay.config.json',\n    'package.json',\n  ],\n  loaders: {\n    '.json': defaultLoaders['.json'],\n    '.js': defaultLoaders['.js'],\n    noExt: defaultLoaders['.yaml'],\n  },\n});\n\nexport default function makePlugin(config: Config = {}): Plugin {\n  const cwd = process.cwd();\n\n  let relayConfig: AnyObject = {};\n  if (config.relayConfig && typeof config.relayConfig === 'object') {\n    relayConfig = config.relayConfig;\n  } else {\n    try {\n      const result = typeof config.relayConfig === 'string'\n        ? configExplorer.load(config.relayConfig)\n        : configExplorer.search(cwd);\n      if (result) {\n        relayConfig = result.config;\n      }\n    } catch (_err) {\n      // config not found\n    }\n  }\n\n  const sourceDirectory = path.resolve(cwd, (relayConfig['src'] as string) || './src').split(path.sep).join(path.posix.sep);\n  const artifactDirectory = relayConfig['artifactDirectory'];\n  const codegenCommand = (relayConfig['codegenCommand'] as string) || 'relay-compiler';\n  const module = config.module || ((relayConfig['eagerESModules'] || relayConfig['eagerEsModules']) ? 'esmodule' : 'commonjs');\n\n  if (module !== 'esmodule') {\n    console.warn(\n      kleur.yellow(\n        'Using CommonJS may not works.\\n' +\n        'Consider to set `eagerEsModules` to `true` in your Relay config',\n      ),\n    );\n  }\n\n  return {\n    name: 'vite-plugin-relay-lite',\n    enforce: 'pre',\n    async configResolved({ build, command, mode }) {\n      if (config.codegen === false) {\n        return;\n      }\n\n      const willGenerate = (command === 'serve' && mode === 'development') || command === 'build';\n      const watch = command === 'serve' || Boolean(build.watch);\n      if (willGenerate) {\n        await launchProcess({\n          codegenCommand,\n          watch,\n        });\n      }\n    },\n    transform(src, id) {\n      if (id.includes('node_modules') || id.includes('.yarn')) {\n        return;\n      }\n\n      if (!id.startsWith(sourceDirectory)) {\n        return;\n      }\n\n      if (!/\\.(c|m)?(j|t)sx?$/.test(id)) {\n        return;\n      }\n\n      if (!src.includes('graphql`')) {\n        return;\n      }\n\n      // avoid pre-compilation\n      const env = process.env;\n      const result = compile(id, src, {\n        module,\n        codegenCommand,\n        isDevelopment: env.NODE_ENV !== 'production',\n        ...typeof artifactDirectory === 'string' && { artifactDirectory },\n      });\n\n      return result;\n    },\n  };\n}\n", "import * as crypto from 'node:crypto';\nimport * as path from 'node:path';\nimport MagicString, { type SourceMap } from 'magic-string';\n\nimport { print, parse, Kind } from 'graphql';\n\nexport type CompileOptions = {\n  module: 'esmodule' | 'commonjs';\n  codegenCommand: string;\n  isDevelopment: boolean;\n  artifactDirectory?: string;\n};\n\nexport type CompileResult = {\n  code: string,\n  map: SourceMap,\n};\n\nexport function compile(\n  file: string,\n  source: string,\n  options: CompileOptions,\n): CompileResult {\n  const content = new MagicString(source);\n  const imports: string[] = [];\n\n  content.replace(/graphql`([\\s\\S]*?)`/gm, (match, query) => {\n    if (match.includes('//')) {\n      return match;\n    }\n\n    const ast = parse(query);\n\n    if (ast.definitions.length === 0) {\n      throw new Error('Unexpected empty graphql tag.');\n    }\n\n    const definition = ast.definitions[0];\n    if (\n      definition.kind !== Kind.FRAGMENT_DEFINITION &&\n      definition.kind !== Kind.OPERATION_DEFINITION\n    ) {\n      throw new Error(\n        'Expected a fragment, mutation, query, or ' +\n          'subscription, got `' +\n          definition.kind +\n          '`.',\n      );\n    }\n\n    const name = definition.name?.value;\n    if (!name) {\n      throw new Error('GraphQL operations and fragments must contain names');\n    }\n\n    const hash = crypto\n      .createHash('md5')\n      .update(print(definition), 'utf8')\n      .digest('hex');\n\n    const id = `graphql__${hash}`;\n    const importFile = `${name}.graphql`;\n    const importPath = options.artifactDirectory\n      ? getRelativeImportPath(file, importFile, options.artifactDirectory)\n      : `./__generated__/${importFile}`;\n\n    let result = id;\n\n    switch (options.module) {\n      case 'esmodule': {\n        imports.push(`import ${id} from \"${importPath}\";`);\n        break;\n      }\n      case 'commonjs': {\n        result = `require(\"${importPath}\")`;\n        break;\n      }\n    }\n\n    if (options.isDevelopment) {\n      const error = getErrorMessage(name, options.codegenCommand);\n      switch (options.module) {\n        case 'esmodule': {\n          result =\n            `(${id}.hash && ${id}.hash !== \"${hash}\" && ` +\n            `console.error(\"${error}\"), ${id})`;\n          break;\n        }\n        case 'commonjs': {\n          result =\n            `${id} !== void 0 ? ${id} : (${id} = ${result}, ${id}.hash && ` +\n            `${id}.hash !== \"${hash}\" && console.error(\"${error}\"), ${id})`;\n          break;\n        }\n      }\n    }\n\n    return result;\n  });\n\n  content.prepend(imports.join('\\n'));\n\n  return {\n    code: content.toString(),\n    map: content.generateMap({ hires: true }),\n  };\n}\n\nfunction getErrorMessage(name: string, codegenCommand: string) {\n  return (\n    `The definition of '${name}' appears to have changed. Run \\`${codegenCommand}\\` to ` +\n    `update the generated files to receive the expected data.`\n  );\n}\n\nfunction getRelativeImportPath(\n  file: string,\n  fileToRequire: string,\n  artifactDirectory: string,\n): string {\n  const relativePath = path.relative(\n    path.dirname(file),\n    path.resolve(artifactDirectory),\n  );\n\n  const relativeReference =\n    relativePath.length === 0 || !relativePath.startsWith('.') ? './' : '';\n\n  return relativeReference + path.join(relativePath, fileToRequire);\n}\n", "import { spawn } from 'node:child_process';\nimport kleur from 'kleur';\n\ntype Options = {\n  codegenCommand: string,\n  watch: boolean,\n};\n\nexport async function launchProcess(options: Options): Promise<void> {\n  const cmd = options.codegenCommand;\n  const args: string[] = [];\n\n  if (options.watch) {\n    args.push('--watch');\n  }\n\n  const child = spawn(cmd, args, {\n    cwd: process.cwd(),\n    env: process.env,\n    shell: true,\n    windowsHide: false,\n  });\n\n  let compileOnce = (_value: unknown) => {};\n\n  child.stdout.on('data', (chunk: string) => {\n    const prefix = kleur.green(`[${cmd}]`);\n    const output = chunk.toString().trimEnd();\n    console.log(prefix, output);\n\n    const watchingMessages = [\n      'Compilation completed',\n      'Watching for changes to graphql',\n    ];\n    if (options.watch && watchingMessages.some(message => output.includes(message))) {\n      compileOnce(true);\n    }\n  });\n\n  child.stderr.on('data', (chunk: string) => {\n    const prefix = kleur.red(`[${cmd}]`);\n    const output = chunk.toString().trimEnd();\n    console.error(prefix, output);\n  });\n\n  if (options.watch) {\n    await new Promise(resolve => {\n      compileOnce = resolve;\n    });\n  } else {\n    await new Promise((resolve, reject) => {\n      child.on('close', code => {\n        if (code === 0) {\n          resolve(code);\n        } else {\n          reject(code);\n        }\n      });\n    });\n  }\n}\n"],
  "mappings": "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",
  "names": ["path", "kleur", "resolve", "kleur"]
}
