{"version":3,"file":"query.mjs","sources":["../../src/middlewares/query.ts"],"sourcesContent":["import qs from 'qs';\nimport type Koa from 'koa';\nimport type { Core } from '@strapi/types';\n\ntype Config = Parameters<typeof qs.parse>[1];\n\nconst defaults: Config = {\n  strictNullHandling: true,\n  arrayLimit: 100,\n  depth: 20,\n};\n\n/**\n * Body parser hook\n */\nconst addQsParser = (app: Koa, settings: Config) => {\n  Object.defineProperty(app.request, 'query', {\n    configurable: false,\n    enumerable: true,\n    /*\n     * Get parsed query-string.\n     */\n    get() {\n      const qstr = this.querystring;\n\n      this._querycache = this._querycache || {};\n      const cache = this._querycache;\n\n      if (!cache[qstr]) {\n        cache[qstr] = qs.parse(qstr, settings);\n      }\n\n      return cache[qstr];\n    },\n\n    /*\n     * Set query-string as an object.\n     */\n    set(obj) {\n      this.querystring = qs.stringify(obj);\n    },\n  } satisfies PropertyDescriptor & ThisType<Koa.BaseRequest>);\n\n  return app;\n};\n\nexport const query: Core.MiddlewareFactory = (\n  config: Partial<Config>,\n  { strapi }: { strapi: Core.Strapi }\n) => {\n  addQsParser(strapi.server.app, { ...defaults, ...config } as Config);\n};\n"],"names":["defaults","strictNullHandling","arrayLimit","depth","addQsParser","app","settings","Object","defineProperty","request","configurable","enumerable","get","qstr","querystring","_querycache","cache","qs","parse","set","obj","stringify","query","config","strapi","server"],"mappings":";;AAMA,MAAMA,QAAAA,GAAmB;IACvBC,kBAAAA,EAAoB,IAAA;IACpBC,UAAAA,EAAY,GAAA;IACZC,KAAAA,EAAO;AACT,CAAA;AAEA;;IAGA,MAAMC,WAAAA,GAAc,CAACC,GAAAA,EAAUC,QAAAA,GAAAA;AAC7BC,IAAAA,MAAAA,CAAOC,cAAc,CAACH,GAAAA,CAAII,OAAO,EAAE,OAAA,EAAS;QAC1CC,YAAAA,EAAc,KAAA;QACdC,UAAAA,EAAY,IAAA;AACZ;;QAGAC,GAAAA,CAAAA,GAAAA;YACE,MAAMC,IAAAA,GAAO,IAAI,CAACC,WAAW;AAE7B,YAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,IAAI,EAAC;YACxC,MAAMC,KAAAA,GAAQ,IAAI,CAACD,WAAW;AAE9B,YAAA,IAAI,CAACC,KAAK,CAACH,IAAAA,CAAK,EAAE;AAChBG,gBAAAA,KAAK,CAACH,IAAAA,CAAK,GAAGI,EAAAA,CAAGC,KAAK,CAACL,IAAAA,EAAMP,QAAAA,CAAAA;AAC/B,YAAA;YAEA,OAAOU,KAAK,CAACH,IAAAA,CAAK;AACpB,QAAA,CAAA;AAEA;;AAEC,QACDM,KAAIC,GAAG,EAAA;AACL,YAAA,IAAI,CAACN,WAAW,GAAGG,EAAAA,CAAGI,SAAS,CAACD,GAAAA,CAAAA;AAClC,QAAA;AACF,KAAA,CAAA;IAEA,OAAOf,GAAAA;AACT,CAAA;MAEaiB,KAAAA,GAAgC,CAC3CC,MAAAA,EACA,EAAEC,MAAM,EAA2B,GAAA;AAEnCpB,IAAAA,WAAAA,CAAYoB,MAAAA,CAAOC,MAAM,CAACpB,GAAG,EAAE;AAAE,QAAA,GAAGL,QAAQ;AAAE,QAAA,GAAGuB;AAAO,KAAA,CAAA;AAC1D;;;;"}