{"version":3,"file":"index.mjs","sources":["../../../src/services/document-service/index.ts"],"sourcesContent":["import type { Core, Modules, UID } from '@strapi/types';\n\nimport { createMiddlewareManager, databaseErrorsMiddleware } from './middlewares';\nimport { createContentTypeRepository } from './repository';\nimport { transformData } from './transform/data';\n\nimport entityValidator from '../entity-validator';\n\n/**\n * Repository to :\n * - Access documents via actions (findMany, findOne, create, update, delete, ...)\n * - Execute middlewares on document actions\n * - Apply default parameters to document actions\n *\n * @param strapi\n * @param validator - validator for database entries\n * @returns DocumentService\n *\n * @example Access documents\n * const article = strapi.documents('api::article.article').create(params)\n * const allArticles = strapi.documents('api::article.article').findMany(params)\n *\n */\nexport const createDocumentService = (\n  strapi: Core.Strapi,\n  validator: Modules.EntityValidator.EntityValidator = entityValidator\n): Modules.Documents.Service => {\n  // Cache the repositories (one per content type)\n  const repositories = new Map<string, Modules.Documents.ServiceInstance>();\n\n  // Manager to handle document service middlewares\n  const middlewares = createMiddlewareManager();\n  middlewares.use(databaseErrorsMiddleware);\n\n  const factory = function factory(uid: UID.ContentType) {\n    if (repositories.has(uid)) {\n      return repositories.get(uid)!;\n    }\n\n    const contentType = strapi.contentType(uid);\n    const repository = createContentTypeRepository(uid, validator);\n\n    const instance = middlewares.wrapObject(\n      repository,\n      { uid, contentType },\n      {\n        exclude: ['updateComponents', 'omitComponentData'],\n      }\n    );\n\n    repositories.set(uid, instance);\n\n    return instance;\n  } as Modules.Documents.Service;\n\n  return Object.assign(factory, {\n    utils: {\n      transformData,\n    },\n    use: middlewares.use.bind(middlewares),\n  });\n};\n"],"names":["createDocumentService","strapi","validator","entityValidator","repositories","Map","middlewares","createMiddlewareManager","use","databaseErrorsMiddleware","factory","uid","has","get","contentType","repository","createContentTypeRepository","instance","wrapObject","exclude","set","Object","assign","utils","transformData","bind"],"mappings":";;;;;;AAQA;;;;;;;;;;;;;;AAcC,IACM,MAAMA,qBAAAA,GAAwB,CACnCC,MAAAA,EACAC,YAAqDC,eAAe,GAAA;;AAGpE,IAAA,MAAMC,eAAe,IAAIC,GAAAA,EAAAA;;AAGzB,IAAA,MAAMC,WAAAA,GAAcC,uBAAAA,EAAAA;AACpBD,IAAAA,WAAAA,CAAYE,GAAG,CAACC,wBAAAA,CAAAA;IAEhB,MAAMC,OAAAA,GAAU,SAASA,OAAAA,CAAQC,GAAoB,EAAA;QACnD,IAAIP,YAAAA,CAAaQ,GAAG,CAACD,GAAAA,CAAAA,EAAM;YACzB,OAAOP,YAAAA,CAAaS,GAAG,CAACF,GAAAA,CAAAA;AAC1B,QAAA;QAEA,MAAMG,WAAAA,GAAcb,MAAAA,CAAOa,WAAW,CAACH,GAAAA,CAAAA;QACvC,MAAMI,UAAAA,GAAaC,4BAA4BL,GAAAA,EAAKT,SAAAA,CAAAA;AAEpD,QAAA,MAAMe,QAAAA,GAAWX,WAAAA,CAAYY,UAAU,CACrCH,UAAAA,EACA;AAAEJ,YAAAA,GAAAA;AAAKG,YAAAA;SAAY,EACnB;YACEK,OAAAA,EAAS;AAAC,gBAAA,kBAAA;AAAoB,gBAAA;AAAoB;AACpD,SAAA,CAAA;QAGFf,YAAAA,CAAagB,GAAG,CAACT,GAAAA,EAAKM,QAAAA,CAAAA;QAEtB,OAAOA,QAAAA;AACT,IAAA,CAAA;IAEA,OAAOI,MAAAA,CAAOC,MAAM,CAACZ,OAAAA,EAAS;QAC5Ba,KAAAA,EAAO;AACLC,YAAAA;AACF,SAAA;AACAhB,QAAAA,GAAAA,EAAKF,WAAAA,CAAYE,GAAG,CAACiB,IAAI,CAACnB,WAAAA;AAC5B,KAAA,CAAA;AACF;;;;"}