import type { CodegenConfig } from "@graphql-codegen/cli";

const DATOCMS_API_TOKEN =
  process.env.DATOCMS_READ_ONLY_API_TOKEN ??
  process.env.NEXT_PUBLIC_DATOCMS_READ_ONLY_API_TOKEN ??
  "";
const DATOCMS_ENV = process.env.NEXT_PUBLIC_DATOCMS_ENV ?? "main";

const config: CodegenConfig = {
  overwrite: true,
  schema: [
    {
      "https://graphql.datocms.com": {
        headers: {
          Authorization: `Bearer ${DATOCMS_API_TOKEN}`,
          "X-Exclude-Invalid": "true",
          "X-Environment": DATOCMS_ENV,
        },
      },
    },
  ],
  documents: "src/**/*.graphql",
  // generates: {
  //   "src/generated/": {
  //     preset: "client",
  //   },
  // },
  generates: {
    "src/generated/graphql.ts": {
      plugins: [
        "typescript",
        {
          "typescript-operations": {
            strictScalars: true,
            scalars: {
              BooleanType: "boolean",
              CustomData: "Record<string, unknown>",
              Date: "string",
              DateTime: "string",
              FloatType: "number",
              IntType: "number",
              ItemId: "string",
              JsonField: "unknown",
              MetaTagAttributes: "Record<string, string>",
              UploadId: "string",
            },
          },
        },
        "typed-document-node",
      ],
    },
  },
};

export default config;
