{"version":3,"file":"articles-Uokz5iHu.js","sources":["../../../../scripts/services/api/articles.ts"],"sourcesContent":["import { DotCMSBasicArticleResponse, DotCMSResponse } from \"interfaces/responses/dotcms-responses\";\r\nimport { BasicArticleQueryResponse } from \"interfaces/article\";\r\nimport { CmsSearchCriteria } from \"interfaces/cms\";\r\nimport { getJSON } from \"services/api/request-manager\";\r\nimport { buildSearchEndpointUrl } from \"services/cms/cms\";\r\n\r\nconst shownArticleIds = new Set<string>();\r\nexport function addToShownArticleIdList(articleIds: string[]): void {\r\n articleIds.forEach(id => shownArticleIds.add(id));\r\n}\r\n\r\n/**\r\n * Get Articles\r\n * @param articleQuery\r\n * @param addResultsToExcludeList\r\n */\r\nexport function getArticles(articleQuery: CmsSearchCriteria, addResultsToExcludeList: boolean = true, addExcludeListToQuery: boolean = true): Promise<BasicArticleQueryResponse> {\r\n\r\n if (addExcludeListToQuery) {\r\n const shownArticleIdsArray = Array.from(shownArticleIds);\r\n articleQuery.excludedIdentifiers = Array.isArray(articleQuery.excludedIdentifiers)\r\n ? [...articleQuery.excludedIdentifiers, ...shownArticleIdsArray]\r\n : shownArticleIdsArray;\r\n }\r\n // increase the limit by 1 so that we can determine if there are more articles that can be displayed\r\n articleQuery.limit++;\r\n\r\n return new Promise((resolve, reject) => {\r\n getJSON(buildSearchEndpointUrl(articleQuery)).then((resultsJSON: DotCMSResponse<DotCMSBasicArticleResponse[]>) => {\r\n if (resultsJSON.contentlets) {\r\n // Check if there are more articles by comparing the result length with the query limit minus 1, because we added 1 above\r\n articleQuery.limit--;\r\n const hasMoreArticles = resultsJSON.contentlets.length > articleQuery.limit;\r\n if (hasMoreArticles) {\r\n // Remove the extra article so it doesn't display\r\n resultsJSON.contentlets.pop();\r\n }\r\n\r\n // update the shown article list so they don't get queried again\r\n if (addResultsToExcludeList) {\r\n addToShownArticleIdList(resultsJSON.contentlets.map((card) => card.identifier));\r\n }\r\n\r\n resolve({ articles: resultsJSON.contentlets, hasMore: hasMoreArticles });\r\n }\r\n }, (error): void => {\r\n reject(error);\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * Get Article\r\n * @param articleKey\r\n */\r\nexport async function getArticle(articleKey: string): Promise<DotCMSBasicArticleResponse> {\r\n\r\n if (articleKey && articleKey !== \"index\") {\r\n const articleQuery: CmsSearchCriteria = {\r\n contentTypes: [\"ConsumerArticleBasic\"],\r\n depth: 1,\r\n limit: 1,\r\n queryClauses: [\r\n `+(ConsumerArticleBasic.articleUrl_dotraw:\"${articleKey}\")`\r\n ]\r\n };\r\n\r\n const articleResponse = await getArticles(articleQuery);\r\n\r\n if (articleResponse.articles.length) {\r\n return articleResponse.articles[0];\r\n } else {\r\n console.error(\"Error retrieving data, article not found: \", articleQuery);\r\n throw Error();\r\n }\r\n\r\n } else {\r\n console.error(\"Invalid article key: \", articleKey);\r\n throw Error();\r\n }\r\n}\r\n"],"names":["shownArticleIds","addToShownArticleIdList","articleIds","id","getArticles","articleQuery","addResultsToExcludeList","addExcludeListToQuery","shownArticleIdsArray","resolve","reject","getJSON","buildSearchEndpointUrl","resultsJSON","hasMoreArticles","card","error","getArticle","articleKey","articleResponse"],"mappings":"qDAMA,MAAMA,MAAsB,IACrB,SAASC,EAAwBC,EAA4B,CAChEA,EAAW,QAAQC,GAAMH,EAAgB,IAAIG,CAAE,CAAC,CACpD,CAOO,SAASC,EAAYC,EAAiCC,EAAmC,GAAMC,EAAiC,GAA0C,CAE7K,GAAIA,EAAuB,CACjB,MAAAC,EAAuB,MAAM,KAAKR,CAAe,EACvDK,EAAa,oBAAsB,MAAM,QAAQA,EAAa,mBAAmB,EAC3E,CAAC,GAAGA,EAAa,oBAAqB,GAAGG,CAAoB,EAC7DA,CACV,CAEa,OAAAH,EAAA,QAEN,IAAI,QAAQ,CAACI,EAASC,IAAW,CACpCC,EAAQC,EAAuBP,CAAY,CAAC,EAAE,KAAMQ,GAA8D,CAC9G,GAAIA,EAAY,YAAa,CAEZR,EAAA,QACb,MAAMS,EAAkBD,EAAY,YAAY,OAASR,EAAa,MAClES,GAEAD,EAAY,YAAY,MAIxBP,GACAL,EAAwBY,EAAY,YAAY,IAAKE,GAASA,EAAK,UAAU,CAAC,EAGlFN,EAAQ,CAAE,SAAUI,EAAY,YAAa,QAASC,EAAiB,CAC3E,CACJ,EAAIE,GAAgB,CAChBN,EAAOM,CAAK,CAAA,CACf,CAAA,CACJ,CACL,CAMA,eAAsBC,EAAWC,EAAyD,CAElF,GAAAA,GAAcA,IAAe,QAAS,CACtC,MAAMb,EAAkC,CACpC,aAAc,CAAC,sBAAsB,EACrC,MAAO,EACP,MAAO,EACP,aAAc,CACV,6CAA6Ca,CAAU,IAC3D,CAAA,EAGEC,EAAkB,MAAMf,EAAYC,CAAY,EAElD,GAAAc,EAAgB,SAAS,OAClB,OAAAA,EAAgB,SAAS,CAAC,EAEzB,cAAA,MAAM,6CAA8Cd,CAAY,EAClE,MAAM,CAChB,KAGQ,eAAA,MAAM,wBAAyBa,CAAU,EAC3C,MAAM,CAEpB"}