{"version":3,"file":"catalogService.mjs","sources":["../../lib/services/catalogService.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable no-console */\n\nimport axios from 'axios';\nimport { has } from 'lodash-es';\n\nimport dataGetters from './getters/data-getters';\n\nconst getResponseData = (catalog) => {\n  const cat = {};\n  cat.availability = dataGetters.getObject(catalog, 'availability', ['resource', 'label'])\n  cat.catalog = dataGetters.getArrayOfStrings(catalog, 'catalog');\n  cat.count = dataGetters.getCount(catalog);\n  cat.country = dataGetters.getObject(catalog, 'country', ['id', 'title', 'label']);\n  cat.creator = dataGetters.getObject(catalog, 'creator', ['name', 'type', 'email', 'resource', 'homepage']);\n  cat.dataset = [];\n  cat.description = dataGetters.getObjectLanguage(catalog, 'description', 'No description available');\n  cat.hasPart = dataGetters.getArrayOfStrings(catalog, 'has_part');\n  cat.homepage = dataGetters.getString(catalog, 'homepage');\n  cat.id = dataGetters.getString(catalog, 'id');\n  cat.idName = dataGetters.getString(catalog, 'idName');\n  cat.isPartOf = dataGetters.getString(catalog, 'is_part_of');\n  cat.languages = dataGetters.getArrayOfObjects(catalog, 'language', ['id', 'label', 'resource']);\n  cat.licence = dataGetters.getObject(catalog, 'license', ['id', 'label', 'description', 'resource', 'la_url', 'homepage']);\n  cat.modified = dataGetters.getString(catalog, 'modified');\n  cat.publisher = dataGetters.getObject(catalog, 'publisher', ['name', 'type', 'email', 'resource', 'homepage', 'address']);\n  cat.record = dataGetters.getObject(catalog, 'catalog_record', ['issued', 'modified']);\n  cat.rights = dataGetters.getObject(catalog, 'rights', ['label', 'resource']);\n  cat.issued = dataGetters.getString(catalog, 'issued');\n  // cat.service = ... (not available)\n  cat.spatial = dataGetters.getArrayOfObjects(catalog, 'spatial', ['type', 'coordinates']);\n  cat.spatialResource = dataGetters.getArrayOfObjects(catalog, 'spatial_resource', ['label', 'resource']);\n  cat.themeTaxonomy = dataGetters.getArrayOfStrings(catalog, 'theme_taxonomy');\n  cat.title = dataGetters.getObjectLanguage(catalog, 'title', 'No title available');\n  cat.catalogueBackground = dataGetters.getArrayOfStrings(catalog, 'catalogueBackground');\n  cat.catalogueLogo = dataGetters.getArrayOfStrings(catalog, 'catalogueLogo');\n  cat.catalogueFavIcon = dataGetters.getArrayOfStrings(catalog, 'catalogueFavIcon');\n  cat.catalogueProfile = dataGetters.getArrayOfStrings(catalog, 'catalogueProfile');\n  cat.catalogueInterestingDatasets = dataGetters.getArrayOfStrings(catalog, 'catalogueInterestingDatasets');\n\n  return {\n    ...cat,\n    __raw: { ...catalog },\n  };\n};\n\nexport default class Catalogs {\n  constructor(baseUrl) {\n    this.baseUrl = baseUrl;\n  }\n\n  /**\n   * @description GET catalog by given id.\n   * @param id\n   */\n  getSingle(id) {\n    return new Promise((resolve, reject) => {\n      const endpoint = 'catalogues';\n      const reqStr = `${this.baseUrl}${endpoint}/${id}`;\n      axios.get(reqStr, {\n        params: {},\n      })\n        .then((response) => {\n          const catalog = response.data.result;\n          let cat = {};\n          try {\n            cat = getResponseData(catalog);\n          } catch (error) {\n            console.warn('Error in catalogs.ts while checking response:', error.message);\n            console.error(error.stack);\n          }\n          resolve(cat);\n        })\n        .catch((error) => {\n          reject(error);\n        });\n    });\n  }\n\n  /**\n   * @description GET all catalogs matching the given criteria.\n   * @param q\n   * @returns {Promise}\n   */\n  get(q, fields, limit, page = 1, sort = 'relevance+desc,modified+desc,title+asc', facetOperator = 'AND', facetGroupOperator = 'AND', facets) {\n    // The request parameters\n    const params = {\n      q,\n      fields,\n      filter: 'catalogue',\n      sort,\n      limit,\n      page: page - 1,\n      facetOperator,\n      facetGroupOperator,\n      includes: 'id,title,description,modified,issued,country,count',\n      facets,\n    };\n    return new Promise((resolve, reject) => {\n      const endpoint = 'search';\n      const reqStr = `${this.baseUrl}${endpoint}`;\n      axios.get(reqStr, {\n        params,\n      })\n        .then((response) => {\n          const resData = {\n            availableFacets: [],\n            catalogsCount: response.data.result.count,\n            catalogs: [],\n          };\n          // transform fetched facets\n          for (const field of response.data.result.facets) {\n          // Check for required field keys\n            if (has(field, 'id') && has(field, 'title') && has(field, 'items')) {\n            // Transform Items of field to use its id as Obj key for easier search later in app\n              const items = [];\n              for (const facet of field.items) {\n              // Check for required facet/item keys\n                if (has(facet, 'id') && has(facet, 'title') && has(facet, 'count')) {\n                // Build object for current facet/item\n                  items.push({\n                    id: facet.id,\n                    count: facet.count,\n                    title: facet.title,\n                  });\n                }\n              }\n              // Add to response array\n              resData.availableFacets.push({\n                id: field.id,\n                title: field.title,\n                items,\n              });\n            }\n          }\n\n          // Transform catalogs Data model\n          const catalogs = response.data.result.results;\n          for (const catalog of catalogs) {\n            let cat = {};\n            try {\n              cat = getResponseData(catalog);\n            } catch (error) {\n              console.warn('Error in catalogs.ts while checking response:', error.message);\n              console.error(error.stack);\n            }\n            resData.catalogs.push(cat);\n          }\n          return resolve(resData);\n        })\n        .catch((error) => {\n          console.error(error);\n          reject(error);\n        });\n    });\n  }\n}\n"],"names":["getResponseData","catalog","cat","dataGetters","Catalogs","baseUrl","id","resolve","reject","endpoint","reqStr","axios","response","error","q","fields","limit","page","sort","facetOperator","facetGroupOperator","facets","params","resData","field","has","items","facet","catalogs"],"mappings":"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"}