{"version":3,"file":"index.mjs","sources":["../../../../server/src/services/sanitize/index.ts"],"sourcesContent":["import type { Core, Schema, Data } from '@strapi/types';\n\nimport { traverseEntity } from '@strapi/utils';\nimport { curry } from 'lodash/fp';\n\nimport { getService } from '../../utils';\n\nconst LOCALIZATION_FIELDS = ['locale', 'localizations'];\n\nconst sanitize = ({ strapi }: { strapi: Core.Strapi }) => {\n  const { isLocalizedContentType } = getService('content-types');\n\n  /**\n   * Sanitizes localization fields of a given entity based on its schema.\n   *\n   * Remove localization-related fields that are unnecessary, that is\n   * for schemas that aren't localized.\n   */\n  const sanitizeLocalizationFields = curry((schema: Schema.Schema, entity: Data.Entity) =>\n    traverseEntity(\n      ({ key, schema }, { remove }) => {\n        const isLocalized = isLocalizedContentType(schema);\n        const isLocalizationField = LOCALIZATION_FIELDS.includes(key);\n\n        if (!isLocalized && isLocalizationField) {\n          remove(key);\n        }\n      },\n      { schema, getModel: strapi.getModel.bind(strapi) },\n      entity\n    )\n  );\n\n  return {\n    sanitizeLocalizationFields,\n  };\n};\n\ntype SanitizeService = typeof sanitize;\n\nexport default sanitize;\nexport type { SanitizeService };\n"],"names":["LOCALIZATION_FIELDS","sanitize","strapi","isLocalizedContentType","getService","sanitizeLocalizationFields","curry","schema","entity","traverseEntity","key","remove","isLocalized","isLocalizationField","includes","getModel","bind"],"mappings":";;;;AAOA,MAAMA,mBAAAA,GAAsB;AAAC,IAAA,QAAA;AAAU,IAAA;AAAgB,CAAA;AAEvD,MAAMC,QAAAA,GAAW,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACnD,IAAA,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,UAAAA,CAAW,eAAA,CAAA;AAE9C;;;;;AAKC,MACD,MAAMC,0BAAAA,GAA6BC,KAAAA,CAAM,CAACC,MAAAA,EAAuBC,SAC/DC,cAAAA,CACE,CAAC,EAAEC,GAAG,EAAEH,MAAM,EAAE,EAAE,EAAEI,MAAM,EAAE,GAAA;AAC1B,YAAA,MAAMC,cAAcT,sBAAAA,CAAuBI,MAAAA,CAAAA;YAC3C,MAAMM,mBAAAA,GAAsBb,mBAAAA,CAAoBc,QAAQ,CAACJ,GAAAA,CAAAA;YAEzD,IAAI,CAACE,eAAeC,mBAAAA,EAAqB;gBACvCF,MAAAA,CAAOD,GAAAA,CAAAA;AACT,YAAA;QACF,CAAA,EACA;AAAEH,YAAAA,MAAAA;AAAQQ,YAAAA,QAAAA,EAAUb,MAAAA,CAAOa,QAAQ,CAACC,IAAI,CAACd,MAAAA;SAAQ,EACjDM,MAAAA,CAAAA,CAAAA;IAIJ,OAAO;AACLH,QAAAA;AACF,KAAA;AACF;;;;"}