{
  "version": 3,
  "sources": ["../src/cli.ts"],
  "sourcesContent": ["#!/usr/bin/env node\n\n/* istanbul ignore file */\n\nimport * as yargs from \"yargs\";\nimport { relayCompiler } from \"relay-compiler\";\nimport { pluginFactory } from \"./relayCompilerLanguagePlugin\";\n\n// TODO: This needs to be done here to ensure we get to mutate the transforms lists that get used.\nimport { IRTransforms } from \"relay-compiler\";\nimport { IRTransform } from \"relay-compiler/lib/core/CompilerContext\";\nimport { enableNodeWatchQueryTransform } from \"./compilerTransforms/enableNodeWatchQueryTransform\";\nimport { annotateFragmentReferenceTransform } from \"./compilerTransforms/annotateFragmentReferenceTransform\";\nimport { emitApolloClientConnectionTransform } from \"./compilerTransforms/emitApolloClientConnectionTransform\";\nimport { retainConnectionDirectiveTransform } from \"./compilerTransforms/retainConnectionDirectiveTransform\";\n\nfunction wrapTransform(\n  transformName: string,\n  transforms: IRTransform[],\n  wrapperTransform: (wrappedTransform: IRTransform) => IRTransform,\n) {\n  const transformIndex = transforms.findIndex(\n    (transform) => transform.name === transformName,\n  );\n  const wrappedTransform = transforms[transformIndex];\n  transforms[transformIndex] = wrapperTransform(wrappedTransform);\n}\n\nwrapTransform(\n  \"filterDirectivesTransform\",\n  IRTransforms.printTransforms,\n  retainConnectionDirectiveTransform,\n);\n\nasync function main() {\n  const argv = await yargs\n    .scriptName(\"duct-tape-compiler\")\n    .options({\n      src: {\n        demandOption: false,\n        default: \".\",\n        type: \"string\",\n      },\n      exclude: {\n        demandOption: false,\n        type: \"string\",\n        array: true,\n      },\n      include: {\n        demandOption: false,\n        type: \"string\",\n        array: true,\n      },\n      schema: {\n        demandOption: true,\n        type: \"string\",\n      },\n      validate: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      verbose: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      watch: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      watchman: {\n        demandOption: false,\n        default: true,\n        type: \"boolean\",\n      },\n      quiet: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      emitDocuments: {\n        demandOption: false,\n        default: true,\n        type: \"boolean\",\n      },\n      emitNarrowObservables: {\n        demandOption: false,\n        default: true,\n        type: \"boolean\",\n      },\n      emitQueryDebugComments: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      emitSupermassiveDocuments: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      supermassiveDocumentNodeOutputType: {\n        demandOption: false,\n        default: \"V2\",\n        type: \"string\",\n        coerce: (value) => {\n          switch (value) {\n            case \"V2\":\n              return \"V2\";\n            case \"V3\":\n              return \"V3\";\n            case \"BOTH\":\n              return \"BOTH\";\n            default:\n              return \"V2\";\n          }\n        },\n      },\n      unstable_emitExecutionDocumentText: {\n        demandOption: false,\n        default: false,\n        type: \"boolean\",\n      },\n      transformConnectionDirective: {\n        demandOption: false,\n        default: true,\n        type: \"boolean\",\n      },\n    })\n    .help().argv;\n\n  if (!argv.emitDocuments) {\n    argv.emitNarrowObservables = false;\n    argv.emitQueryDebugComments = false;\n  }\n\n  if (argv.emitNarrowObservables) {\n    // TODO: Moving this up in the list might potentially optimize the query further\n    IRTransforms.printTransforms.push(annotateFragmentReferenceTransform);\n    IRTransforms.commonTransforms.unshift(enableNodeWatchQueryTransform);\n  }\n  wrapTransform(\n    \"connectionTransform\",\n    IRTransforms.commonTransforms,\n    emitApolloClientConnectionTransform({\n      renameFiltersArgument: argv.transformConnectionDirective,\n    }),\n  );\n\n  const ductTapeCompilerLanguagePlugin = await pluginFactory(argv);\n\n  return relayCompiler({\n    ...argv,\n    language: ductTapeCompilerLanguagePlugin,\n    extensions: [\"ts\", \"tsx\"], // FIXME: Why is this not taken from the language plugin?\n    include: argv.include || [\"**\"],\n    exclude: [\n      \"**/node_modules/**\",\n      \"**/__mocks__/**\",\n      \"**/__generated__/**\",\n      // relay-compiler will treat these as client-side schema extensions\n      \"**/*.graphql\",\n      ...(argv.exclude || []),\n    ],\n    noFutureProofEnums: true,\n    customScalars: {},\n  });\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exit(1);\n});\n"],
  "mappings": "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",
  "names": []
}
