{"version":3,"file":"command.mjs","sources":["../../../../../src/cli/commands/import/command.ts"],"sourcesContent":["import path from 'path';\nimport { createCommand, Option } from 'commander';\nimport inquirer from 'inquirer';\nimport {\n  excludeOption,\n  onlyOption,\n  throttleOption,\n  validateExcludeOnly,\n} from '../../utils/data-transfer';\nimport { getCommanderConfirmMessage, forceOption } from '../../utils/commander';\nimport { exitWith } from '../../utils/helpers';\nimport action from './action';\n\n/**\n * `$ strapi import`\n */\nconst command = () => {\n  return (\n    createCommand('import')\n      .description('Import data from file to Strapi')\n      .allowExcessArguments(false)\n      .requiredOption(\n        '-f, --file <file>',\n        'path and filename for the Strapi export file you want to import'\n      )\n      .addOption(\n        new Option(\n          '-k, --key <string>',\n          'Provide encryption key in command instead of using the prompt'\n        )\n      )\n      .addOption(new Option('--verbose', 'Enable verbose logs'))\n      .addOption(forceOption)\n      .addOption(excludeOption)\n      .addOption(onlyOption)\n      .addOption(throttleOption)\n      .hook('preAction', validateExcludeOnly)\n      .hook('preAction', async (thisCommand) => {\n        const opts = thisCommand.opts();\n        const ext = path.extname(String(opts.file));\n\n        // check extension to guess if we should prompt for key\n        if (ext === '.enc') {\n          if (!opts.key) {\n            const answers = await inquirer.prompt([\n              {\n                type: 'password',\n                message: 'Please enter your decryption key',\n                name: 'key',\n              },\n            ]);\n            if (!answers.key?.length) {\n              exitWith(1, 'No key entered, aborting import.');\n            }\n            opts.key = answers.key;\n          }\n        }\n      })\n      // set decrypt and decompress options based on filename\n      .hook('preAction', (thisCommand) => {\n        const opts = thisCommand.opts();\n\n        const { extname, parse } = path;\n\n        let file = opts.file;\n\n        if (extname(file) === '.enc') {\n          file = parse(file).name; // trim the .enc extension\n          thisCommand.opts().decrypt = true;\n        } else {\n          thisCommand.opts().decrypt = false;\n        }\n\n        if (extname(file) === '.gz') {\n          file = parse(file).name; // trim the .gz extension\n          thisCommand.opts().decompress = true;\n        } else {\n          thisCommand.opts().decompress = false;\n        }\n\n        if (extname(file) !== '.tar') {\n          exitWith(\n            1,\n            `The file '${opts.file}' does not appear to be a valid Strapi data file. It must have an extension ending in .tar[.gz][.enc]`\n          );\n        }\n      })\n      .hook(\n        'preAction',\n        getCommanderConfirmMessage(\n          'The import will delete your existing data! Are you sure you want to proceed?',\n          { failMessage: 'Import process aborted' }\n        )\n      )\n      .action(action)\n  );\n};\n\nexport default command;\n"],"names":["command","createCommand","description","allowExcessArguments","requiredOption","addOption","Option","forceOption","excludeOption","onlyOption","throttleOption","hook","validateExcludeOnly","thisCommand","opts","ext","path","extname","String","file","key","answers","inquirer","prompt","type","message","name","length","exitWith","parse","decrypt","decompress","getCommanderConfirmMessage","failMessage","action"],"mappings":";;;;;;;;AAaA;;AAEC,UACKA,OAAU,GAAA,IAAA;AACd,IAAA,OACEC,cAAc,QACXC,CAAAA,CAAAA,WAAW,CAAC,iCACZC,CAAAA,CAAAA,oBAAoB,CAAC,KACrBC,CAAAA,CAAAA,cAAc,CACb,mBACA,EAAA,iEAAA,CAAA,CAEDC,SAAS,CACR,IAAIC,OACF,oBACA,EAAA,+DAAA,CAAA,CAAA,CAGHD,SAAS,CAAC,IAAIC,OAAO,WAAa,EAAA,qBAAA,CAAA,CAAA,CAClCD,SAAS,CAACE,WAAAA,CAAAA,CACVF,SAAS,CAACG,aAAAA,CAAAA,CACVH,SAAS,CAACI,UAAAA,CAAAA,CACVJ,SAAS,CAACK,cAAAA,CAAAA,CACVC,IAAI,CAAC,WAAA,EAAaC,qBAClBD,IAAI,CAAC,aAAa,OAAOE,WAAAA,GAAAA;QACxB,MAAMC,IAAAA,GAAOD,YAAYC,IAAI,EAAA;AAC7B,QAAA,MAAMC,MAAMC,IAAKC,CAAAA,OAAO,CAACC,MAAAA,CAAOJ,KAAKK,IAAI,CAAA,CAAA;;AAGzC,QAAA,IAAIJ,QAAQ,MAAQ,EAAA;YAClB,IAAI,CAACD,IAAKM,CAAAA,GAAG,EAAE;AACb,gBAAA,MAAMC,OAAU,GAAA,MAAMC,QAASC,CAAAA,MAAM,CAAC;AACpC,oBAAA;wBACEC,IAAM,EAAA,UAAA;wBACNC,OAAS,EAAA,kCAAA;wBACTC,IAAM,EAAA;AACR;AACD,iBAAA,CAAA;AACD,gBAAA,IAAI,CAACL,OAAAA,CAAQD,GAAG,EAAEO,MAAQ,EAAA;AACxBC,oBAAAA,QAAAA,CAAS,CAAG,EAAA,kCAAA,CAAA;AACd;gBACAd,IAAKM,CAAAA,GAAG,GAAGC,OAAAA,CAAQD,GAAG;AACxB;AACF;AACF,KAAA,CACA;KACCT,IAAI,CAAC,aAAa,CAACE,WAAAA,GAAAA;QAClB,MAAMC,IAAAA,GAAOD,YAAYC,IAAI,EAAA;AAE7B,QAAA,MAAM,EAAEG,OAAO,EAAEY,KAAK,EAAE,GAAGb,IAAAA;QAE3B,IAAIG,IAAAA,GAAOL,KAAKK,IAAI;QAEpB,IAAIF,OAAAA,CAAQE,UAAU,MAAQ,EAAA;AAC5BA,YAAAA,IAAAA,GAAOU,KAAMV,CAAAA,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAYC,CAAAA,IAAI,EAAGgB,CAAAA,OAAO,GAAG,IAAA;SACxB,MAAA;YACLjB,WAAYC,CAAAA,IAAI,EAAGgB,CAAAA,OAAO,GAAG,KAAA;AAC/B;QAEA,IAAIb,OAAAA,CAAQE,UAAU,KAAO,EAAA;AAC3BA,YAAAA,IAAAA,GAAOU,KAAMV,CAAAA,IAAAA,CAAAA,CAAMO,IAAI,CAAA;YACvBb,WAAYC,CAAAA,IAAI,EAAGiB,CAAAA,UAAU,GAAG,IAAA;SAC3B,MAAA;YACLlB,WAAYC,CAAAA,IAAI,EAAGiB,CAAAA,UAAU,GAAG,KAAA;AAClC;QAEA,IAAId,OAAAA,CAAQE,UAAU,MAAQ,EAAA;YAC5BS,QACE,CAAA,CAAA,EACA,CAAC,UAAU,EAAEd,KAAKK,IAAI,CAAC,qGAAqG,CAAC,CAAA;AAEjI;AACF,KAAA,CAAA,CACCR,IAAI,CACH,WACAqB,EAAAA,0BAAAA,CACE,8EACA,EAAA;QAAEC,WAAa,EAAA;AAAyB,KAAA,CAAA,CAAA,CAG3CC,MAAM,CAACA,MAAAA,CAAAA;AAEd;;;;"}