{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as path from 'path'\nimport * as fs from 'fs'\n\nimport {\n  wrapper,\n  changeExtension,\n  TypeOnEveryFile,\n  TypeToolOptions,\n  TypeToolProp,\n  TypeOnBody,\n} from '@asset-toolkit/core'\nimport sharp from 'sharp'\n\nexport interface TypeProps extends TypeToolOptions {\n  mode?: 'joinChannel'\n  resize?: sharp.ResizeOptions\n  trim?: number\n  output?: {\n    format: 'png' | 'jpg' | 'webp' | string\n    png?: sharp.PngOptions\n    jpg?: sharp.JpegOptions\n    webp?: sharp.WebpOptions\n  }\n  settings?: sharp.SharpOptions\n}\n\n/**\n * A tool to Image Transform\n * @param props - { pathIn, pathOut }\n * @param options - { }\n * @returns { Promise(returns) }\n */\n\nconst imageTransform: (_props: TypeToolProp, options?: TypeProps) => Promise<unknown> = wrapper(\n  ({ pathIn, pathOut, file, options, next, log }: TypeOnEveryFile) => {\n    const opts = {\n      ...options,\n    }\n\n    const { resize, trim, output, settings } = opts\n\n    log(file)\n\n    const processor = sharp(path.resolve(pathIn || pathOut, file), settings)\n    let ext: string | undefined = undefined\n\n    if (resize) processor.resize(resize)\n    if (trim) processor.trim(trim)\n\n    if (output) {\n      if (output.format === 'webp') {\n        ext = '.webp'\n        processor.webp(output.webp || { lossless: true })\n      } else if (output.format === 'jpg') {\n        ext = '.jpg'\n        processor.jpeg(output.jpg || { mozjpeg: true })\n      } else if (output.format === 'png') {\n        ext = '.png'\n        processor.png(output.png)\n      } else {\n        processor.toFormat(output.format)\n      }\n    }\n\n    processor.toFile(path.resolve(pathOut, changeExtension(file, ext)), (err, info) => {\n      if (err) console.log(err)\n      log(JSON.stringify(info))\n      next()\n    })\n  },\n  ({ pathIn, pathOut, options, log }: TypeOnBody) => {\n    const { mode } = options\n\n    if (mode === 'joinChannel') {\n      const files: string[] = []\n      fs.readdirSync(pathOut).map((file: string) => {\n        files.push(file)\n      })\n      const [firsImage, ...nextImages] = files\n      const processor = sharp(path.resolve(pathIn || pathOut, firsImage))\n      log(firsImage)\n      return new Promise<void>(resolve => {\n        processor\n          .joinChannel(\n            nextImages\n              .map((file: string) => {\n                log(file)\n                return fs.readFileSync(path.resolve(pathIn || pathOut, file))\n              })\n              .reverse(),\n          )\n          .toFile(path.resolve(pathOut, files[0]), (err, info) => {\n            if (err) console.log(err)\n            log(JSON.stringify(info))\n            resolve()\n          })\n      })\n    }\n  },\n  { exts: ['jpeg', 'jpg', 'png', 'webp', 'avif', 'tiff'], name: 'Image Transform' },\n)\n\nexport default imageTransform\n"],"names":["imageTransform","wrapper","pathIn","pathOut","file","next","log","opts","options","resize","trim","output","settings","processor","sharp","path","resolve","ext","undefined","format","webp","lossless","jpeg","jpg","mozjpeg","png","toFormat","toFile","changeExtension","err","info","console","JSON","stringify","mode","files","fs","readdirSync","map","push","firsImage","nextImages","Promise","joinChannel","readFileSync","reverse","exts","name"],"mappings":"oVAiCMA,IAAAA,EAAkFC,EACtF,gBAAGC,IAAAA,OAAQC,IAAAA,QAASC,IAAAA,KAAeC,IAAAA,KAAMC,IAAAA,IACjCC,SADkBC,SAKhBC,EAAmCF,EAAnCE,OAAQC,EAA2BH,EAA3BG,KAAMC,EAAqBJ,EAArBI,OAAQC,EAAaL,EAAbK,SAE9BN,EAAIF,GAEJ,IAAMS,EAAYC,EAAMC,EAAKC,QAAQd,GAAUC,EAASC,GAAOQ,GAC3DK,OAA0BC,EAE1BT,GAAQI,EAAUJ,OAAOA,GACzBC,GAAMG,EAAUH,KAAKA,GAErBC,IACoB,SAAlBA,EAAOQ,QACTF,EAAM,QACNJ,EAAUO,KAAKT,EAAOS,MAAQ,CAAEC,UAAU,KACf,QAAlBV,EAAOQ,QAChBF,EAAM,OACNJ,EAAUS,KAAKX,EAAOY,KAAO,CAAEC,SAAS,KACb,QAAlBb,EAAOQ,QAChBF,EAAM,OACNJ,EAAUY,IAAId,EAAOc,MAErBZ,EAAUa,SAASf,EAAOQ,SAI9BN,EAAUc,OAAOZ,EAAKC,QAAQb,EAASyB,EAAgBxB,EAAMa,IAAO,SAACY,EAAKC,GACpED,GAAKE,QAAQzB,IAAIuB,GACrBvB,EAAI0B,KAAKC,UAAUH,IACnBzB,OAGJ,gBAAGH,IAAAA,OAAQC,IAAAA,QAAkBG,IAAAA,IAG3B,GAAa,kBAHKE,QACV0B,KAEoB,CAC1B,IAAMC,EAAkB,GACxBC,EAAGC,YAAYlC,GAASmC,IAAI,SAAClC,GAC3B+B,EAAMI,KAAKnC,KAEb,IAAOoC,EAA4BL,KAAdM,EAAcN,WAC7BtB,EAAYC,EAAMC,EAAKC,QAAQd,GAAUC,EAASqC,IAExD,OADAlC,EAAIkC,OACOE,QAAc,SAAA1B,GACvBH,EACG8B,YACCF,EACGH,IAAI,SAAClC,GAEJ,OADAE,EAAIF,GACGgC,EAAGQ,aAAa7B,EAAKC,QAAQd,GAAUC,EAASC,MAExDyC,WAEJlB,OAAOZ,EAAKC,QAAQb,EAASgC,EAAM,IAAK,SAACN,EAAKC,GACzCD,GAAKE,QAAQzB,IAAIuB,GACrBvB,EAAI0B,KAAKC,UAAUH,IACnBd,UAKV,CAAE8B,KAAM,CAAC,OAAQ,MAAO,MAAO,OAAQ,OAAQ,QAASC,KAAM"}