{"version":3,"file":"fs.mjs","sources":["../../src/services/fs.ts"],"sourcesContent":["import path from 'path';\nimport fse from 'fs-extra';\n\nimport type { Core } from '@strapi/types';\n\ninterface StrapiFS {\n  writeAppFile(optPath: string | string[], data: string): Promise<void>;\n  writePluginFile(plugin: string, optPath: string | string[], data: string): Promise<void>;\n  removeAppFile(optPath: string | string[]): Promise<void>;\n  appendFile(optPath: string | string[], data: string): void;\n}\n\n/**\n * create strapi fs layer\n */\nexport default (strapi: Core.Strapi) => {\n  function normalizePath(optPath: string | string[]) {\n    const filePath = Array.isArray(optPath) ? optPath.join('/') : optPath;\n\n    const normalizedPath = path.normalize(filePath).replace(/^\\/?(\\.\\/|\\.\\.\\/)+/, '');\n\n    return path.resolve(strapi.dirs.app.root, normalizedPath);\n  }\n\n  const strapiFS: StrapiFS = {\n    /**\n     * Writes a file in a strapi app\n     * @param {Array|string} optPath - file path\n     * @param {string} data - content\n     */\n    writeAppFile(optPath, data) {\n      const writePath = normalizePath(optPath);\n      return fse.ensureFile(writePath).then(() => fse.writeFile(writePath, data));\n    },\n\n    /**\n     * Writes a file in a plugin extensions folder\n     * @param {string} plugin - plugin name\n     * @param {Array|string} optPath - path to file\n     * @param {string} data - content\n     */\n    writePluginFile(plugin, optPath, data) {\n      const newPath = ['extensions', plugin].concat(optPath).join('/');\n      return strapiFS.writeAppFile(newPath, data);\n    },\n\n    /**\n     * Removes a file in strapi app\n     */\n    removeAppFile(optPath) {\n      const removePath = normalizePath(optPath);\n      return fse.remove(removePath);\n    },\n\n    /**\n     * Appends a file in strapi app\n     */\n    appendFile(optPath, data) {\n      const writePath = normalizePath(optPath);\n      return fse.appendFileSync(writePath, data);\n    },\n  };\n\n  return strapiFS;\n};\n"],"names":["strapi","normalizePath","optPath","filePath","Array","isArray","join","normalizedPath","path","normalize","replace","resolve","dirs","app","root","strapiFS","writeAppFile","data","writePath","fse","ensureFile","then","writeFile","writePluginFile","plugin","newPath","concat","removeAppFile","removePath","remove","appendFile","appendFileSync"],"mappings":";;;AAYA;;IAGA,qBAAe,CAAA,CAACA,MAAAA,GAAAA;AACd,IAAA,SAASC,cAAcC,OAA0B,EAAA;QAC/C,MAAMC,QAAAA,GAAWC,MAAMC,OAAO,CAACH,WAAWA,OAAAA,CAAQI,IAAI,CAAC,GAAA,CAAA,GAAOJ,OAAAA;AAE9D,QAAA,MAAMK,iBAAiBC,IAAAA,CAAKC,SAAS,CAACN,QAAAA,CAAAA,CAAUO,OAAO,CAAC,oBAAA,EAAsB,EAAA,CAAA;QAE9E,OAAOF,IAAAA,CAAKG,OAAO,CAACX,MAAAA,CAAOY,IAAI,CAACC,GAAG,CAACC,IAAI,EAAEP,cAAAA,CAAAA;AAC5C,IAAA;AAEA,IAAA,MAAMQ,QAAAA,GAAqB;AACzB;;;;QAKAC,YAAAA,CAAAA,CAAad,OAAO,EAAEe,IAAI,EAAA;AACxB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIC,UAAU,CAACF,SAAAA,CAAAA,CAAWG,IAAI,CAAC,IAAMF,GAAAA,CAAIG,SAAS,CAACJ,SAAAA,EAAWD,IAAAA,CAAAA,CAAAA;AACvE,QAAA,CAAA;AAEA;;;;;AAKC,QACDM,eAAAA,CAAAA,CAAgBC,MAAM,EAAEtB,OAAO,EAAEe,IAAI,EAAA;AACnC,YAAA,MAAMQ,OAAAA,GAAU;AAAC,gBAAA,YAAA;AAAcD,gBAAAA;AAAO,aAAA,CAACE,MAAM,CAACxB,OAAAA,CAAAA,CAASI,IAAI,CAAC,GAAA,CAAA;YAC5D,OAAOS,QAAAA,CAASC,YAAY,CAACS,OAAAA,EAASR,IAAAA,CAAAA;AACxC,QAAA,CAAA;AAEA;;AAEC,QACDU,eAAczB,OAAO,EAAA;AACnB,YAAA,MAAM0B,aAAa3B,aAAAA,CAAcC,OAAAA,CAAAA;YACjC,OAAOiB,GAAAA,CAAIU,MAAM,CAACD,UAAAA,CAAAA;AACpB,QAAA,CAAA;AAEA;;QAGAE,UAAAA,CAAAA,CAAW5B,OAAO,EAAEe,IAAI,EAAA;AACtB,YAAA,MAAMC,YAAYjB,aAAAA,CAAcC,OAAAA,CAAAA;YAChC,OAAOiB,GAAAA,CAAIY,cAAc,CAACb,SAAAA,EAAWD,IAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;IAEA,OAAOF,QAAAA;AACT,CAAA;;;;"}