UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

36 lines (29 loc) 1.1 kB
import memoize from 'lodash-es/memoize'; import { ApiClient, ClientError } from 'scrivito_sdk/client'; import { logError } from 'scrivito_sdk/common'; import { extractDataClassSchemaResponse } from 'scrivito_sdk/data_integration'; import { currentLanguage } from 'scrivito_sdk/data_integration/current_language'; import { DataClassSchemaResponse } from 'scrivito_sdk/data_integration/data_class_schema'; import { load } from 'scrivito_sdk/loadable'; export const fetchSchema = memoize(async function ( apiClient: ApiClient ): Promise<DataClassSchemaResponse> { const siteLanguage = await load(currentLanguage); let response: unknown; try { response = await apiClient.fetch('schema', { headers: siteLanguage ? { 'Accept-Language': siteLanguage } : {}, }); } catch (error) { if (error instanceof ClientError) { logError( 'Error while fetching schema (using empty schema)', error.message, JSON.stringify(error.details) ); return { attributes: {} }; } throw error; } return extractDataClassSchemaResponse(response); });