{"version":3,"sources":["../../../src/utilities/parseParams/index.ts"],"sourcesContent":["import type { JoinQuery, PopulateType, SelectType, Where } from '../../types/index.js'\nimport type { JoinParams } from '../sanitizeJoinParams.js'\n\nimport { isNumber } from '../isNumber.js'\nimport { parseBooleanString } from '../parseBooleanString.js'\nimport { sanitizeJoinParams } from '../sanitizeJoinParams.js'\nimport { sanitizePopulateParam } from '../sanitizePopulateParam.js'\nimport { sanitizeSelectParam } from '../sanitizeSelectParam.js'\nimport { sanitizeSortParams } from '../sanitizeSortParams.js'\n\ntype RawParams = {\n  [key: string]: unknown\n  autosave?: string\n  data?: string\n  depth?: string\n  draft?: string\n  field?: string\n  flattenLocales?: string\n  joins?: JoinParams\n  limit?: string\n  overrideLock?: string\n  page?: string\n  pagination?: string\n  populate?: unknown\n  publishAllLocales?: string\n  publishSpecificLocale?: string\n  select?: unknown\n  selectedLocales?: string\n  sort?: string | string[]\n  trash?: string\n  unpublishAllLocales?: string\n  where?: string | Where\n}\n\ntype ParsedParams = {\n  autosave?: boolean\n  data?: Record<string, unknown>\n  depth?: number\n  draft?: boolean\n  field?: string\n  flattenLocales?: boolean\n  joins?: JoinQuery\n  limit?: number\n  overrideLock?: boolean\n  page?: number\n  pagination?: boolean\n  populate?: PopulateType\n  publishAllLocales?: boolean\n  publishSpecificLocale?: string\n  select?: SelectType\n  selectedLocales?: string[]\n  sort?: string[]\n  trash?: boolean\n  unpublishAllLocales?: boolean\n  where?: Where\n} & Record<string, unknown>\n\nexport const booleanParams = [\n  'autosave',\n  'draft',\n  'trash',\n  'overrideLock',\n  'pagination',\n  'flattenLocales',\n]\n\nexport const numberParams = ['depth', 'limit', 'page']\n\n/**\n * Takes raw query parameters and parses them into the correct types that Payload expects.\n * Examples:\n *   a. `draft` provided as a string of \"true\" is converted to a boolean\n *   b. `depth` provided as a string of \"0\" is converted to a number\n *   c. `sort` provided as a comma-separated string or array is converted to an array of strings\n */\nexport const parseParams = (params: RawParams): ParsedParams => {\n  const parsedParams = (params || {}) as ParsedParams\n\n  // iterate through known params to make this very fast\n  for (const key of booleanParams) {\n    if (key in params) {\n      parsedParams[key] = parseBooleanString(params[key] as boolean | string)\n    }\n  }\n\n  for (const key of numberParams) {\n    if (key in params) {\n      if (isNumber(params[key])) {\n        parsedParams[key] = Number(params[key])\n      }\n    }\n  }\n\n  if ('populate' in params) {\n    parsedParams.populate = sanitizePopulateParam(params.populate)\n  }\n\n  if ('select' in params) {\n    parsedParams.select = sanitizeSelectParam(params.select)\n  }\n\n  if ('joins' in params) {\n    parsedParams.joins = sanitizeJoinParams(params.joins as JoinParams)\n  }\n\n  if ('sort' in params) {\n    parsedParams.sort = sanitizeSortParams(params.sort)\n  }\n\n  if ('data' in params && typeof params.data === 'string' && params.data.length > 0) {\n    parsedParams.data = JSON.parse(params.data)\n  }\n\n  if ('where' in params && typeof params.where === 'string' && params.where.length > 0) {\n    parsedParams.where = JSON.parse(params.where) as Where\n  }\n\n  return parsedParams\n}\n"],"names":["isNumber","parseBooleanString","sanitizeJoinParams","sanitizePopulateParam","sanitizeSelectParam","sanitizeSortParams","booleanParams","numberParams","parseParams","params","parsedParams","key","Number","populate","select","joins","sort","data","length","JSON","parse","where"],"mappings":"AAGA,SAASA,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,kBAAkB,QAAQ,2BAA0B;AAC7D,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,mBAAmB,QAAQ,4BAA2B;AAC/D,SAASC,kBAAkB,QAAQ,2BAA0B;AAiD7D,OAAO,MAAMC,gBAAgB;IAC3B;IACA;IACA;IACA;IACA;IACA;CACD,CAAA;AAED,OAAO,MAAMC,eAAe;IAAC;IAAS;IAAS;CAAO,CAAA;AAEtD;;;;;;CAMC,GACD,OAAO,MAAMC,cAAc,CAACC;IAC1B,MAAMC,eAAgBD,UAAU,CAAC;IAEjC,sDAAsD;IACtD,KAAK,MAAME,OAAOL,cAAe;QAC/B,IAAIK,OAAOF,QAAQ;YACjBC,YAAY,CAACC,IAAI,GAAGV,mBAAmBQ,MAAM,CAACE,IAAI;QACpD;IACF;IAEA,KAAK,MAAMA,OAAOJ,aAAc;QAC9B,IAAII,OAAOF,QAAQ;YACjB,IAAIT,SAASS,MAAM,CAACE,IAAI,GAAG;gBACzBD,YAAY,CAACC,IAAI,GAAGC,OAAOH,MAAM,CAACE,IAAI;YACxC;QACF;IACF;IAEA,IAAI,cAAcF,QAAQ;QACxBC,aAAaG,QAAQ,GAAGV,sBAAsBM,OAAOI,QAAQ;IAC/D;IAEA,IAAI,YAAYJ,QAAQ;QACtBC,aAAaI,MAAM,GAAGV,oBAAoBK,OAAOK,MAAM;IACzD;IAEA,IAAI,WAAWL,QAAQ;QACrBC,aAAaK,KAAK,GAAGb,mBAAmBO,OAAOM,KAAK;IACtD;IAEA,IAAI,UAAUN,QAAQ;QACpBC,aAAaM,IAAI,GAAGX,mBAAmBI,OAAOO,IAAI;IACpD;IAEA,IAAI,UAAUP,UAAU,OAAOA,OAAOQ,IAAI,KAAK,YAAYR,OAAOQ,IAAI,CAACC,MAAM,GAAG,GAAG;QACjFR,aAAaO,IAAI,GAAGE,KAAKC,KAAK,CAACX,OAAOQ,IAAI;IAC5C;IAEA,IAAI,WAAWR,UAAU,OAAOA,OAAOY,KAAK,KAAK,YAAYZ,OAAOY,KAAK,CAACH,MAAM,GAAG,GAAG;QACpFR,aAAaW,KAAK,GAAGF,KAAKC,KAAK,CAACX,OAAOY,KAAK;IAC9C;IAEA,OAAOX;AACT,EAAC"}