{"version":3,"file":"validate-locale-creation.mjs","sources":["../../../server/src/controllers/validate-locale-creation.ts"],"sourcesContent":["import { get } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst { ApplicationError } = errors;\n\n// TODO: v5 if implemented in the CM => delete this middleware\nconst validateLocaleCreation: Core.MiddlewareHandler = async (ctx, next) => {\n  const { model } = ctx.params;\n  const { query } = ctx.request;\n\n  // Prevent empty body\n  if (!ctx.request.body) {\n    ctx.request.body = {};\n  }\n\n  const body = ctx.request.body as any;\n\n  const { getValidLocale, isLocalizedContentType } = getService('content-types');\n\n  const modelDef = strapi.getModel(model) as Struct.ContentTypeSchema;\n\n  if (!isLocalizedContentType(modelDef)) {\n    return next();\n  }\n\n  // Prevent empty string locale\n  const locale = get('locale', query) || get('locale', body) || undefined;\n\n  // cleanup to avoid creating duplicates in single types\n  ctx.request.query = {};\n\n  let entityLocale;\n  try {\n    entityLocale = await getValidLocale(locale);\n  } catch {\n    throw new ApplicationError(\"This locale doesn't exist\");\n  }\n\n  body.locale = entityLocale;\n\n  if (modelDef.kind === 'singleType') {\n    const entity = await strapi.entityService.findMany(modelDef.uid, {\n      locale: entityLocale,\n    } as any); // TODO: add this type to entityService\n\n    ctx.request.query.locale = body.locale;\n\n    // updating\n    if (entity) {\n      return next();\n    }\n  }\n\n  return next();\n};\n\nexport default validateLocaleCreation;\n"],"names":["ApplicationError","errors","validateLocaleCreation","ctx","next","model","params","query","request","body","getValidLocale","isLocalizedContentType","getService","modelDef","strapi","getModel","locale","get","undefined","entityLocale","kind","entity","entityService","findMany","uid"],"mappings":";;;;AAKA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B;AACA,MAAMC,sBAAAA,GAAiD,OAAOC,GAAAA,EAAKC,IAAAA,GAAAA;AACjE,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGF,IAAIG,MAAM;AAC5B,IAAA,MAAM,EAAEC,KAAK,EAAE,GAAGJ,IAAIK,OAAO;;AAG7B,IAAA,IAAI,CAACL,GAAAA,CAAIK,OAAO,CAACC,IAAI,EAAE;AACrBN,QAAAA,GAAAA,CAAIK,OAAO,CAACC,IAAI,GAAG,EAAC;AACtB,IAAA;AAEA,IAAA,MAAMA,IAAAA,GAAON,GAAAA,CAAIK,OAAO,CAACC,IAAI;AAE7B,IAAA,MAAM,EAAEC,cAAc,EAAEC,sBAAsB,EAAE,GAAGC,UAAAA,CAAW,eAAA,CAAA;IAE9D,MAAMC,QAAAA,GAAWC,MAAAA,CAAOC,QAAQ,CAACV,KAAAA,CAAAA;IAEjC,IAAI,CAACM,uBAAuBE,QAAAA,CAAAA,EAAW;QACrC,OAAOT,IAAAA,EAAAA;AACT,IAAA;;AAGA,IAAA,MAAMY,SAASC,GAAAA,CAAI,QAAA,EAAUV,KAAAA,CAAAA,IAAUU,GAAAA,CAAI,UAAUR,IAAAA,CAAAA,IAASS,SAAAA;;AAG9Df,IAAAA,GAAAA,CAAIK,OAAO,CAACD,KAAK,GAAG,EAAC;IAErB,IAAIY,YAAAA;IACJ,IAAI;AACFA,QAAAA,YAAAA,GAAe,MAAMT,cAAAA,CAAeM,MAAAA,CAAAA;AACtC,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIhB,gBAAAA,CAAiB,2BAAA,CAAA;AAC7B,IAAA;AAEAS,IAAAA,IAAAA,CAAKO,MAAM,GAAGG,YAAAA;IAEd,IAAIN,QAAAA,CAASO,IAAI,KAAK,YAAA,EAAc;QAClC,MAAMC,MAAAA,GAAS,MAAMP,MAAAA,CAAOQ,aAAa,CAACC,QAAQ,CAACV,QAAAA,CAASW,GAAG,EAAE;YAC/DR,MAAAA,EAAQG;AACV,SAAA,CAAA,CAAA;AAEAhB,QAAAA,GAAAA,CAAIK,OAAO,CAACD,KAAK,CAACS,MAAM,GAAGP,KAAKO,MAAM;;AAGtC,QAAA,IAAIK,MAAAA,EAAQ;YACV,OAAOjB,IAAAA,EAAAA;AACT,QAAA;AACF,IAAA;IAEA,OAAOA,IAAAA,EAAAA;AACT;;;;"}