@c-rex/services 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,47 @@
1
+ import { CrexApi } from '@c-rex/core';
2
+ import { Method } from 'axios';
3
+ import { informationUnitsRenditions, DirectoryNodes, informationUnits, informationUnitsItems } from '@c-rex/interfaces';
4
+
5
+ type QueryParams = {
6
+ key: string;
7
+ value: string;
8
+ };
9
+
10
+ declare class BaseService {
11
+ protected api: CrexApi;
12
+ private endpoint;
13
+ private SDK;
14
+ constructor(endpoint: string);
15
+ protected request<T>({ path, method, params, headers, transformer, }: {
16
+ path?: string;
17
+ method?: Method;
18
+ params?: QueryParams[];
19
+ headers?: any;
20
+ transformer?: (data: any) => T;
21
+ }): Promise<T>;
22
+ }
23
+
24
+ declare class RenditionsService extends BaseService {
25
+ constructor();
26
+ getHTMLRendition(renditions: informationUnitsRenditions[]): Promise<string>;
27
+ }
28
+
29
+ declare class DirectoryNodesService extends BaseService {
30
+ constructor();
31
+ getItem(id: string): Promise<DirectoryNodes>;
32
+ }
33
+
34
+ declare class DocumentTypesService extends BaseService {
35
+ constructor();
36
+ getLabels(fields: string[]): Promise<string[]>;
37
+ }
38
+
39
+ declare class InformationUnitsService extends BaseService {
40
+ constructor();
41
+ getList(queries: string, page: number, fields: string[], language: string[] | null): Promise<informationUnits>;
42
+ getItem(id: string): Promise<informationUnitsItems>;
43
+ getLanguages(): Promise<string[]>;
44
+ getSuggestions(query: string): Promise<string[]>;
45
+ }
46
+
47
+ export { DirectoryNodesService, DocumentTypesService, InformationUnitsService, RenditionsService };
@@ -0,0 +1,47 @@
1
+ import { CrexApi } from '@c-rex/core';
2
+ import { Method } from 'axios';
3
+ import { informationUnitsRenditions, DirectoryNodes, informationUnits, informationUnitsItems } from '@c-rex/interfaces';
4
+
5
+ type QueryParams = {
6
+ key: string;
7
+ value: string;
8
+ };
9
+
10
+ declare class BaseService {
11
+ protected api: CrexApi;
12
+ private endpoint;
13
+ private SDK;
14
+ constructor(endpoint: string);
15
+ protected request<T>({ path, method, params, headers, transformer, }: {
16
+ path?: string;
17
+ method?: Method;
18
+ params?: QueryParams[];
19
+ headers?: any;
20
+ transformer?: (data: any) => T;
21
+ }): Promise<T>;
22
+ }
23
+
24
+ declare class RenditionsService extends BaseService {
25
+ constructor();
26
+ getHTMLRendition(renditions: informationUnitsRenditions[]): Promise<string>;
27
+ }
28
+
29
+ declare class DirectoryNodesService extends BaseService {
30
+ constructor();
31
+ getItem(id: string): Promise<DirectoryNodes>;
32
+ }
33
+
34
+ declare class DocumentTypesService extends BaseService {
35
+ constructor();
36
+ getLabels(fields: string[]): Promise<string[]>;
37
+ }
38
+
39
+ declare class InformationUnitsService extends BaseService {
40
+ constructor();
41
+ getList(queries: string, page: number, fields: string[], language: string[] | null): Promise<informationUnits>;
42
+ getItem(id: string): Promise<informationUnitsItems>;
43
+ getLanguages(): Promise<string[]>;
44
+ getSuggestions(query: string): Promise<string[]>;
45
+ }
46
+
47
+ export { DirectoryNodesService, DocumentTypesService, InformationUnitsService, RenditionsService };
package/dist/index.js ADDED
@@ -0,0 +1,433 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ DirectoryNodesService: () => DirectoryNodesService,
34
+ DocumentTypesService: () => DocumentTypesService,
35
+ InformationUnitsService: () => InformationUnitsService,
36
+ RenditionsService: () => RenditionsService
37
+ });
38
+ module.exports = __toCommonJS(index_exports);
39
+
40
+ // ../core/src/requests.ts
41
+ var import_axios = __toESM(require("axios"));
42
+
43
+ // ../constants/src/index.ts
44
+ var API = {
45
+ MAX_RETRY: 3,
46
+ API_TIMEOUT: 1e4,
47
+ API_HEADERS: {
48
+ "content-Type": "application/json"
49
+ }
50
+ };
51
+
52
+ // ../core/src/requests.ts
53
+ var import_openid_client = require("openid-client");
54
+
55
+ // ../utils/src/utils.ts
56
+ var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
57
+ key,
58
+ value: item
59
+ }));
60
+ var generateQueryParams = (params) => {
61
+ const queryParams = params.map(
62
+ (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
63
+ ).join("&");
64
+ return queryParams;
65
+ };
66
+
67
+ // ../utils/src/memory.ts
68
+ function isBrowser() {
69
+ return typeof window !== "undefined" && typeof document !== "undefined";
70
+ }
71
+ function parseCookies() {
72
+ const cookies = {};
73
+ if (typeof document === "undefined") {
74
+ return cookies;
75
+ }
76
+ document.cookie.split(";").forEach((cookie) => {
77
+ const [key, value] = cookie.split("=");
78
+ if (key && value) {
79
+ cookies[key.trim()] = decodeURIComponent(value.trim());
80
+ }
81
+ });
82
+ return cookies;
83
+ }
84
+ function setCookie(name, value, days = 30) {
85
+ if (typeof document === "undefined") return;
86
+ const expires = new Date(Date.now() + days * 86400 * 1e3).toUTCString();
87
+ document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;
88
+ }
89
+ function saveInMemory(value, key) {
90
+ if (isBrowser()) {
91
+ setCookie(key, JSON.stringify(value));
92
+ } else {
93
+ if (typeof global !== "undefined" && !(key in global)) {
94
+ global[key] = null;
95
+ }
96
+ const globalConfig = global[key];
97
+ if (globalConfig === null) {
98
+ global[key] = value;
99
+ }
100
+ }
101
+ }
102
+ function getFromMemory(key) {
103
+ let returnValue;
104
+ if (isBrowser()) {
105
+ const cookies = parseCookies();
106
+ const configStr = cookies[key];
107
+ if (configStr) {
108
+ try {
109
+ return JSON.parse(configStr);
110
+ } catch {
111
+ return null;
112
+ }
113
+ }
114
+ return null;
115
+ } else {
116
+ returnValue = global[key];
117
+ }
118
+ return returnValue;
119
+ }
120
+
121
+ // ../utils/src/classMerge.ts
122
+ var import_clsx = require("clsx");
123
+ var import_tailwind_merge = require("tailwind-merge");
124
+
125
+ // ../core/src/requests.ts
126
+ var CREX_TOKEN_HEADER_KEY = "crex-token";
127
+ var CREX_TOKEN_EXPIRY_HEADER_KEY = "crex-token-expiry";
128
+ var CrexApi = class {
129
+ config;
130
+ apiClient;
131
+ logger;
132
+ constructor(config, logger) {
133
+ this.apiClient = import_axios.default.create({
134
+ baseURL: config.baseUrl,
135
+ headers: {
136
+ "content-Type": "application/json"
137
+ }
138
+ });
139
+ this.config = config;
140
+ this.logger = logger;
141
+ }
142
+ async manageToken() {
143
+ const headersAux = {};
144
+ if (this.config.OIDC.client.enabled) {
145
+ let token = getFromMemory(CREX_TOKEN_HEADER_KEY);
146
+ let tokenExpiry = getFromMemory(CREX_TOKEN_EXPIRY_HEADER_KEY);
147
+ const now = Math.floor(Date.now() / 1e3);
148
+ if (!(token && tokenExpiry > now + 60)) {
149
+ const { token: tokenAux, tokenExpiry: tokenExpiryAux } = await this.getToken();
150
+ token = tokenAux;
151
+ saveInMemory(token, CREX_TOKEN_HEADER_KEY);
152
+ saveInMemory(tokenExpiryAux, CREX_TOKEN_EXPIRY_HEADER_KEY);
153
+ }
154
+ headersAux["Authorization"] = `Bearer ${token}`;
155
+ }
156
+ return headersAux;
157
+ }
158
+ async getToken() {
159
+ let token = "";
160
+ let tokenExpiry = 0;
161
+ try {
162
+ const now = Math.floor(Date.now() / 1e3);
163
+ const issuer = await import_openid_client.Issuer.discover(this.config.OIDC.client.issuer);
164
+ const client = new issuer.Client({
165
+ client_id: this.config.OIDC.client.id,
166
+ client_secret: this.config.OIDC.client.secret
167
+ });
168
+ const tokenSet = await client.grant({ grant_type: "client_credentials" });
169
+ token = tokenSet.access_token, tokenExpiry = now + tokenSet.expires_at;
170
+ } catch (error) {
171
+ console.log("error", `API.getToken error when request ${this.config.OIDC.client.issuer}. Error: ${error}`);
172
+ }
173
+ return {
174
+ token,
175
+ tokenExpiry
176
+ };
177
+ }
178
+ async execute({
179
+ url,
180
+ method,
181
+ params,
182
+ body,
183
+ headers = {}
184
+ }) {
185
+ let response = void 0;
186
+ headers = {
187
+ ...headers,
188
+ ...await this.manageToken()
189
+ };
190
+ for (let retry = 0; retry < API.MAX_RETRY; retry++) {
191
+ try {
192
+ response = await this.apiClient.request({
193
+ url,
194
+ method,
195
+ data: body,
196
+ params,
197
+ headers
198
+ });
199
+ break;
200
+ } catch (error) {
201
+ console.log(
202
+ "error",
203
+ `API.execute ${retry + 1}\xBA error when request ${url}. Error: ${error}`
204
+ );
205
+ if (retry === API.MAX_RETRY - 1) {
206
+ throw error;
207
+ }
208
+ }
209
+ }
210
+ if (response) {
211
+ return response.data;
212
+ }
213
+ throw new Error("API.execute error: Failed to retrieve a valid response");
214
+ }
215
+ };
216
+
217
+ // ../core/src/sdk.ts
218
+ var SDK_CONFIG_KEY = "crex-sdk-config";
219
+ var CrexSDK = class {
220
+ api;
221
+ logger;
222
+ userAuthConfig = {};
223
+ customerConfig;
224
+ constructor() {
225
+ const config = getFromMemory(SDK_CONFIG_KEY);
226
+ this.customerConfig = config;
227
+ this.api = new CrexApi(this.customerConfig, null);
228
+ const user = this.customerConfig.OIDC.user;
229
+ this.userAuthConfig = {
230
+ providers: [
231
+ {
232
+ id: "crex",
233
+ name: "CREX",
234
+ type: "oauth",
235
+ clientId: user.id,
236
+ wellKnown: user.issuer,
237
+ clientSecret: user.secret,
238
+ authorization: { params: { scope: user.scope } },
239
+ profile(profile) {
240
+ return {
241
+ id: profile.id || "fake Id",
242
+ name: profile.name || "Fake Name",
243
+ email: profile.email || "fake Email",
244
+ image: profile.image || "fake Image"
245
+ };
246
+ }
247
+ }
248
+ ]
249
+ };
250
+ }
251
+ static setConfig(config) {
252
+ saveInMemory(config, SDK_CONFIG_KEY);
253
+ }
254
+ };
255
+
256
+ // src/baseService.ts
257
+ var BaseService = class {
258
+ api;
259
+ //private log: (level: LogLevelType, message: string, category?: LogCategoriesType) => void;
260
+ endpoint;
261
+ SDK;
262
+ constructor(endpoint) {
263
+ this.SDK = new CrexSDK();
264
+ this.api = this.SDK.api;
265
+ this.endpoint = endpoint;
266
+ }
267
+ async request({
268
+ path = "",
269
+ method = "get",
270
+ params = [],
271
+ headers = {},
272
+ transformer = (response) => response
273
+ }) {
274
+ try {
275
+ let url = `${this.endpoint}${path}`;
276
+ const queryParams = generateQueryParams(params);
277
+ if (queryParams.length > 0) {
278
+ url += `?${queryParams}`;
279
+ }
280
+ const response = await this.api.execute({
281
+ url,
282
+ method,
283
+ headers
284
+ });
285
+ return await transformer(response);
286
+ } catch (error) {
287
+ console.log("error", `BaseService.request error when request ${path}. Error: ${error}`);
288
+ throw error;
289
+ }
290
+ }
291
+ };
292
+
293
+ // src/renditions.ts
294
+ var RenditionsService = class extends BaseService {
295
+ constructor() {
296
+ super("Renditions/");
297
+ }
298
+ async getHTMLRendition(renditions) {
299
+ const filteredRenditions = renditions.filter(
300
+ (item2) => item2.format == "application/xhtml+xml"
301
+ );
302
+ if (filteredRenditions.length == 0) return "";
303
+ if (filteredRenditions[0] == void 0) return "";
304
+ const item = filteredRenditions[0];
305
+ const filteredLinks = item.links.filter((item2) => item2.rel == "view");
306
+ if (filteredLinks.length == 0) return "";
307
+ if (filteredLinks[0] == void 0) return "";
308
+ const url = filteredLinks[0].href;
309
+ const response = await this.api.execute({
310
+ url,
311
+ method: "get",
312
+ headers: {
313
+ Accept: "application/xhtml+xml"
314
+ }
315
+ });
316
+ return response;
317
+ }
318
+ };
319
+
320
+ // src/directoryNodes.ts
321
+ var DirectoryNodesService = class extends BaseService {
322
+ constructor() {
323
+ super("DirectoryNodes/");
324
+ }
325
+ async getItem(id) {
326
+ return await this.request({
327
+ path: id
328
+ });
329
+ }
330
+ };
331
+
332
+ // src/transforms/documentTypes.ts
333
+ var transformDocumentTypes = (data) => {
334
+ const labels = [];
335
+ data.items.forEach((documentItem) => {
336
+ const aux = documentItem.labels.flatMap((item) => item);
337
+ aux.forEach((item) => {
338
+ if (item.language == "en") labels.push(item.value);
339
+ });
340
+ });
341
+ return labels;
342
+ };
343
+
344
+ // src/documentTypes.ts
345
+ var DocumentTypesService = class extends BaseService {
346
+ constructor() {
347
+ super("DocumentTypes/");
348
+ }
349
+ async getLabels(fields) {
350
+ const params = [
351
+ {
352
+ key: "Restrict",
353
+ value: `languages~EN-us`
354
+ },
355
+ ...createParams(fields, "Fields")
356
+ ];
357
+ return await this.request({
358
+ params,
359
+ transformer: transformDocumentTypes
360
+ });
361
+ }
362
+ };
363
+
364
+ // src/transforms/information.ts
365
+ var transformInformationUnits = (data) => {
366
+ return {
367
+ items: data.items.map((item) => item),
368
+ pageInfo: data.pageInfo
369
+ };
370
+ };
371
+
372
+ // src/informationUnits.ts
373
+ var InformationUnitsService = class extends BaseService {
374
+ constructor() {
375
+ super("InformationUnits/");
376
+ }
377
+ async getList(queries, page, fields, language) {
378
+ const remainFields = createParams(fields, "Fields");
379
+ const params = [
380
+ { key: "pageSize", value: "8" },
381
+ { key: "PageNumber", value: (page - 1).toString() },
382
+ { key: "Query", value: queries },
383
+ ...remainFields
384
+ ];
385
+ if (language != null) {
386
+ language.forEach((item) => {
387
+ params.push({
388
+ key: "Restrict",
389
+ value: `languages~${item}`
390
+ });
391
+ });
392
+ }
393
+ return await this.request({
394
+ params,
395
+ transformer: transformInformationUnits
396
+ });
397
+ }
398
+ async getItem(id) {
399
+ const params = [
400
+ { key: "Fields", value: "renditions" },
401
+ { key: "Fields", value: "directoryNodes" }
402
+ ];
403
+ return await this.request({
404
+ path: id,
405
+ params
406
+ });
407
+ }
408
+ async getLanguages() {
409
+ return await this.request({
410
+ path: `Languages`,
411
+ transformer: (data) => {
412
+ return data.map((item) => item.value);
413
+ }
414
+ });
415
+ }
416
+ async getSuggestions(query) {
417
+ return await this.request({
418
+ path: `Suggestions`,
419
+ params: [{ key: "prefix", value: query }],
420
+ transformer: (data) => {
421
+ return data.suggestions.map((item) => item.value);
422
+ }
423
+ });
424
+ }
425
+ };
426
+ // Annotate the CommonJS export names for ESM import in node:
427
+ 0 && (module.exports = {
428
+ DirectoryNodesService,
429
+ DocumentTypesService,
430
+ InformationUnitsService,
431
+ RenditionsService
432
+ });
433
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../../core/src/requests.ts","../../constants/src/index.ts","../../utils/src/utils.ts","../../utils/src/memory.ts","../../utils/src/classMerge.ts","../../core/src/sdk.ts","../src/baseService.ts","../src/renditions.ts","../src/directoryNodes.ts","../src/transforms/documentTypes.ts","../src/documentTypes.ts","../src/transforms/information.ts","../src/informationUnits.ts"],"sourcesContent":["export * from \"./renditions\"\nexport * from \"./directoryNodes\"\nexport * from \"./documentTypes\"\nexport * from \"./informationUnits\"\n","import axios, { AxiosResponse, Method, AxiosInstance } from \"axios\";\nimport { API } from \"@c-rex/constants\";\nimport { Issuer } from \"openid-client\";\nimport { ConfigInterface } from \"@c-rex/interfaces\";\nimport { getFromMemory, saveInMemory } from \"@c-rex/utils\";\n\nconst CREX_TOKEN_HEADER_KEY = \"crex-token\";\nconst CREX_TOKEN_EXPIRY_HEADER_KEY = \"crex-token-expiry\";\n\ninterface APIGenericResponse<T> extends AxiosResponse {\n data: T;\n statusCode: number;\n}\n\ninterface CallParams {\n url: string;\n method: Method;\n body?: any;\n headers?: any;\n params?: any;\n}\n\nexport class CrexApi {\n private config: ConfigInterface;\n private apiClient: AxiosInstance;\n private logger: any;\n\n public constructor(config: ConfigInterface, logger: any) {\n this.apiClient = axios.create({\n baseURL: config.baseUrl,\n headers: {\n \"content-Type\": \"application/json\",\n },\n });\n\n this.config = config;\n this.logger = logger;\n }\n\n private async manageToken() {\n const headersAux: Record<string, string> = {};\n\n if (this.config.OIDC.client.enabled) {\n let token = getFromMemory(CREX_TOKEN_HEADER_KEY);\n let tokenExpiry = getFromMemory(CREX_TOKEN_EXPIRY_HEADER_KEY);\n\n const now = Math.floor(Date.now() / 1000);\n\n if (!(token && tokenExpiry > now + 60)) {\n const { token: tokenAux, tokenExpiry: tokenExpiryAux } = await this.getToken();\n\n token = tokenAux;\n\n saveInMemory(token, CREX_TOKEN_HEADER_KEY);\n saveInMemory(tokenExpiryAux, CREX_TOKEN_EXPIRY_HEADER_KEY);\n }\n\n headersAux['Authorization'] = `Bearer ${token}`;\n }\n\n return headersAux;\n }\n\n private async getToken(): Promise<{\n token: string;\n tokenExpiry: number;\n }> {\n let token = \"\";\n let tokenExpiry = 0;\n\n try {\n const now = Math.floor(Date.now() / 1000);\n const issuer = await Issuer.discover(this.config.OIDC.client.issuer);\n const client = new issuer.Client({\n client_id: this.config.OIDC.client.id,\n client_secret: this.config.OIDC.client.secret,\n });\n const tokenSet = await client.grant({ grant_type: 'client_credentials' });\n\n token = tokenSet.access_token!,\n tokenExpiry = now + tokenSet.expires_at!\n } catch (error) {\n console.log(\"error\", `API.getToken error when request ${this.config.OIDC.client.issuer}. Error: ${error}`);\n }\n\n return {\n token,\n tokenExpiry\n };\n }\n\n async execute<T>({\n url,\n method,\n params,\n body,\n headers = {},\n }: CallParams): Promise<T> {\n let response: APIGenericResponse<T> | undefined = undefined;\n\n headers = {\n ...headers,\n ...await this.manageToken(),\n };\n\n for (let retry = 0; retry < API.MAX_RETRY; retry++) {\n try {\n response = await this.apiClient.request({\n url,\n method,\n data: body,\n params,\n headers,\n });\n\n break;\n } catch (error) {\n console.log(\n \"error\",\n `API.execute ${retry + 1}º error when request ${url}. Error: ${error}`\n );\n\n if (retry === API.MAX_RETRY - 1) {\n throw error;\n }\n }\n }\n\n if (response) {\n return response.data;\n }\n\n throw new Error(\"API.execute error: Failed to retrieve a valid response\");\n }\n}","export const ALL = \"*\"\n\nexport const LOG_CATEGORIES = [\n \"NoLicense\",\n \"Scenario\",\n \"Favorites\",\n \"Subscription\",\n \"Share\",\n \"Document\",\n \"Search\",\n \"History\",\n \"Notification\",\n \"UserProfile\",\n] as const;\n\nexport const LOG_LEVELS = {\n critical: 2,\n error: 3,\n warning: 4,\n info: 6,\n debug: 7,\n} as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};","\nimport { QueryParams } from '@c-rex/types';\n//import * as Flags from 'country-flag-icons/react/3x2';\n//import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';\n\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\nexport const updateUrlWithParams = (\n //router: AppRouterInstance,\n router: any,\n params: QueryParams[],\n) => {\n const searchParams = new URLSearchParams(window.location.search);\n\n params.forEach((param) => {\n searchParams.set(param.key, param.value.toString());\n });\n\n const queryString = searchParams.toString();\n router.push(`${window.location.pathname}?${queryString}`);\n};\n\nexport const generateQueryParams = (params: QueryParams[]): string => {\n const queryParams = params\n .map(\n (param) =>\n `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`,\n )\n .join(\"&\");\n return queryParams;\n};\n\n/*\nexport const getFlagIcon = (countryCode: string): JSX.Element | null => {\n if (countryCode === undefined) return null;\n \n return Flags[countryCode] || null;\n};\n\n\n*/","//Manage global state from NODE.JS\n//If doesn't have access to global save values on cookies\n\nfunction isBrowser() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction parseCookies(): Record<string, string> {\n const cookies: Record<string, string> = {};\n\n if (typeof document === 'undefined') {\n return cookies;\n }\n\n document.cookie.split(';').forEach(cookie => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n cookies[key.trim()] = decodeURIComponent(value.trim());\n }\n });\n\n return cookies;\n}\n\nfunction setCookie(name: string, value: string, days = 30) {\n if (typeof document === 'undefined') return;\n\n const expires = new Date(Date.now() + days * 86400 * 1000).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;\n}\n\nexport function saveInMemory(value: any, key: string) {\n\n if (isBrowser()) {\n setCookie(key, JSON.stringify(value));\n } else {\n if (typeof global !== 'undefined' && !(key in global)) {\n (global as any)[key] = null;\n }\n\n const globalConfig = (global as any)[key] as any;\n\n if (globalConfig === null) {\n (global as any)[key] = value;\n }\n }\n}\n\nexport function getFromMemory(key: string): any {\n let returnValue\n\n if (isBrowser()) {\n const cookies = parseCookies();\n const configStr = cookies[key];\n if (configStr) {\n try {\n return JSON.parse(configStr);\n } catch {\n return null;\n }\n }\n return null;\n\n } else {\n returnValue = (global as any)[key];\n }\n\n return returnValue\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { CrexApi } from \"./requests\";\nimport { ConfigInterface } from \"@c-rex/interfaces\";\nimport { getFromMemory, saveInMemory } from \"@c-rex/utils\";\n\nconst SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport class CrexSDK {\n public api!: CrexApi;\n public logger!: any;\n public userAuthConfig: any = {};\n public customerConfig!: ConfigInterface;\n\n public constructor() {\n const config = getFromMemory(SDK_CONFIG_KEY);\n\n this.customerConfig = config as ConfigInterface;\n this.api = new CrexApi(this.customerConfig, null);\n\n const user = this.customerConfig.OIDC.user;\n this.userAuthConfig = {\n providers: [\n {\n id: \"crex\",\n name: \"CREX\",\n type: \"oauth\",\n clientId: user.id,\n wellKnown: user.issuer,\n clientSecret: user.secret,\n authorization: { params: { scope: user.scope } },\n profile(profile: any) {\n return {\n id: profile.id || \"fake Id\",\n name: profile.name || \"Fake Name\",\n email: profile.email || \"fake Email\",\n image: profile.image || \"fake Image\",\n }\n },\n },\n ]\n }\n }\n\n public static setConfig(config: ConfigInterface) {\n saveInMemory(config, SDK_CONFIG_KEY);\n }\n}","import { CrexSDK, CrexApi } from \"@c-rex/core\";\nimport { LogCategoriesType, LogLevelType, QueryParams } from \"@c-rex/types\";\nimport { generateQueryParams } from \"@c-rex/utils\";\nimport { Method } from \"axios\";\n\nexport class BaseService {\n protected api: CrexApi;\n //private log: (level: LogLevelType, message: string, category?: LogCategoriesType) => void;\n private endpoint: string;\n private SDK: CrexSDK;\n\n constructor(endpoint: string) {\n this.SDK = new CrexSDK();\n this.api = this.SDK.api;\n //this.log = this.SDK.logger.log;\n this.endpoint = endpoint;\n }\n\n protected async request<T>(\n {\n path = \"\",\n method = \"get\",\n params = [],\n headers = {},\n transformer = (response: any) => response,\n }: {\n path?: string,\n method?: Method,\n params?: QueryParams[],\n headers?: any,\n transformer?: (data: any) => T,\n }\n ): Promise<T> {\n try {\n let url = `${this.endpoint}${path}`;\n\n const queryParams = generateQueryParams(params);\n if (queryParams.length > 0) {\n url += `?${queryParams}`;\n }\n\n const response = await this.api.execute({\n url,\n method,\n headers,\n })\n\n return await transformer(response);\n\n } catch (error) {\n console.log(\"error\", `BaseService.request error when request ${path}. Error: ${error}`);\n\n throw error;\n }\n }\n}\n\n","import { BaseService } from \"./baseService\";\nimport { informationUnitsRenditions } from \"@c-rex/interfaces\";\n\n\nexport class RenditionsService extends BaseService {\n constructor() {\n super(\"Renditions/\");\n }\n\n public async getHTMLRendition(renditions: informationUnitsRenditions[]): Promise<string> {\n const filteredRenditions = renditions.filter(\n (item) => item.format == \"application/xhtml+xml\",\n );\n\n if (filteredRenditions.length == 0) return \"\";\n if (filteredRenditions[0] == undefined) return \"\";\n\n const item = filteredRenditions[0];\n\n const filteredLinks = item.links.filter((item) => item.rel == \"view\");\n\n if (filteredLinks.length == 0) return \"\";\n if (filteredLinks[0] == undefined) return \"\";\n\n\n const url = filteredLinks[0].href;\n\n const response = await this.api.execute({\n url,\n method: \"get\",\n headers: {\n Accept: \"application/xhtml+xml\",\n },\n })\n\n return response as string;\n }\n}","import { BaseService } from \"./baseService\";\nimport { DirectoryNodes } from \"@c-rex/interfaces\";\n\n\nexport class DirectoryNodesService extends BaseService {\n constructor() {\n super(\"DirectoryNodes/\");\n }\n\n public async getItem(id: string): Promise<DirectoryNodes> {\n return await this.request({\n path: id,\n });\n }\n}\n","import { DefaultRequest } from \"@c-rex/interfaces\";\nimport { DocumentTypesItem } from \"@c-rex/interfaces\";\n\nexport const transformDocumentTypes = (data: DefaultRequest<DocumentTypesItem>) => {\n const labels: string[] = [];\n\n data.items.forEach((documentItem: DocumentTypesItem) => {\n const aux = documentItem.labels.flatMap((item) => item);\n\n aux.forEach((item) => {\n if (item.language == \"en\") labels.push(item.value);\n });\n });\n\n return labels;\n};\n","import { createParams } from \"@c-rex/utils\";\nimport { transformDocumentTypes } from \"./transforms/documentTypes\";\nimport { BaseService } from \"./baseService\";\n\nexport class DocumentTypesService extends BaseService {\n constructor() {\n super(\"DocumentTypes/\");\n }\n public async getLabels(fields: string[]): Promise<string[]> {\n const params = [\n {\n key: \"Restrict\",\n value: `languages~EN-us`,\n },\n ...createParams(fields, \"Fields\"),\n ];\n\n return await this.request({\n params,\n transformer: transformDocumentTypes,\n });\n }\n}\n","import { DefaultRequest } from \"@c-rex/interfaces\";\nimport {\n informationUnits,\n informationUnitsItems,\n} from \"@c-rex/interfaces\";\n\nexport const transformInformationUnits = (\n data: DefaultRequest<informationUnitsItems>,\n): informationUnits => {\n return {\n items: data.items.map((item) => item),\n pageInfo: data.pageInfo,\n };\n};\n","import {\n AutocompleteSuggestion,\n informationUnits,\n informationUnitsItems,\n} from \"@c-rex/interfaces\";\nimport { transformInformationUnits } from \"./transforms/information\";\nimport { createParams } from \"@c-rex/utils\";\nimport { BaseService } from \"./baseService\";\n\nexport class InformationUnitsService extends BaseService {\n constructor() {\n super(\"InformationUnits/\");\n }\n\n public async getList(\n queries: string,\n page: number,\n fields: string[],\n language: string[] | null,\n ): Promise<informationUnits> {\n const remainFields = createParams(fields, \"Fields\");\n\n const params = [\n { key: \"pageSize\", value: \"8\" },\n { key: \"PageNumber\", value: (page - 1).toString() },\n { key: \"Query\", value: queries },\n ...remainFields,\n ];\n\n if (language != null) {\n language.forEach((item) => {\n params.push({\n key: \"Restrict\",\n value: `languages~${item}`,\n });\n });\n }\n\n return await this.request({\n params: params,\n transformer: transformInformationUnits\n });\n }\n\n public async getItem(id: string): Promise<informationUnitsItems> {\n const params = [\n { key: \"Fields\", value: \"renditions\" },\n { key: \"Fields\", value: \"directoryNodes\" },\n ];\n\n return await this.request({\n path: id,\n params,\n });\n }\n\n public async getLanguages(): Promise<string[]> {\n return await this.request({\n path: `Languages`,\n transformer: (data: { value: string; score: number }[]) => {\n return data.map((item) => item.value);\n },\n });\n }\n\n public async getSuggestions(query: string): Promise<string[]> {\n return await this.request({\n path: `Suggestions`,\n params: [{ key: \"prefix\", value: query }],\n transformer: (data: AutocompleteSuggestion) => {\n return data.suggestions.map((item) => item.value);\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAA4D;;;ACuBrD,IAAM,MAAM;AAAA,EACf,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,IACT,gBAAgB;AAAA,EACpB;AACJ;;;AD3BA,2BAAuB;;;AEGhB,IAAM,eAAe,CAAC,YAAsB,MAAc,aAC7D,WAAW,IAAI,CAAC,UAAU;AAAA,EACtB;AAAA,EACA,OAAO;AACX,EAAE;AAiBC,IAAM,sBAAsB,CAAC,WAAkC;AAClE,QAAM,cAAc,OACf;AAAA,IACG,CAAC,UACG,GAAG,mBAAmB,MAAM,GAAG,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,EAC3E,EACC,KAAK,GAAG;AACb,SAAO;AACX;;;AC/BA,SAAS,YAAY;AACjB,SAAO,OAAO,WAAW,eAAe,OAAO,aAAa;AAChE;AAEA,SAAS,eAAuC;AAC5C,QAAM,UAAkC,CAAC;AAEzC,MAAI,OAAO,aAAa,aAAa;AACjC,WAAO;AAAA,EACX;AAEA,WAAS,OAAO,MAAM,GAAG,EAAE,QAAQ,YAAU;AACzC,UAAM,CAAC,KAAK,KAAK,IAAI,OAAO,MAAM,GAAG;AACrC,QAAI,OAAO,OAAO;AACd,cAAQ,IAAI,KAAK,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,IACzD;AAAA,EACJ,CAAC;AAED,SAAO;AACX;AAEA,SAAS,UAAU,MAAc,OAAe,OAAO,IAAI;AACvD,MAAI,OAAO,aAAa,YAAa;AAErC,QAAM,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,QAAQ,GAAI,EAAE,YAAY;AACvE,WAAS,SAAS,GAAG,IAAI,IAAI,mBAAmB,KAAK,CAAC,qBAAqB,OAAO;AACtF;AAEO,SAAS,aAAa,OAAY,KAAa;AAElD,MAAI,UAAU,GAAG;AACb,cAAU,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACxC,OAAO;AACH,QAAI,OAAO,WAAW,eAAe,EAAE,OAAO,SAAS;AACnD,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAEA,UAAM,eAAgB,OAAe,GAAG;AAExC,QAAI,iBAAiB,MAAM;AACvB,MAAC,OAAe,GAAG,IAAI;AAAA,IAC3B;AAAA,EACJ;AACJ;AAEO,SAAS,cAAc,KAAkB;AAC5C,MAAI;AAEJ,MAAI,UAAU,GAAG;AACb,UAAM,UAAU,aAAa;AAC7B,UAAM,YAAY,QAAQ,GAAG;AAC7B,QAAI,WAAW;AACX,UAAI;AACA,eAAO,KAAK,MAAM,SAAS;AAAA,MAC/B,QAAQ;AACJ,eAAO;AAAA,MACX;AAAA,IACJ;AACA,WAAO;AAAA,EAEX,OAAO;AACH,kBAAe,OAAe,GAAG;AAAA,EACrC;AAEA,SAAO;AACX;;;ACpEA,kBAAsC;AACtC,4BAAwB;;;AJKxB,IAAM,wBAAwB;AAC9B,IAAM,+BAA+B;AAe9B,IAAM,UAAN,MAAc;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EAED,YAAY,QAAyB,QAAa;AACrD,SAAK,YAAY,aAAAA,QAAM,OAAO;AAAA,MAC1B,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,QACL,gBAAgB;AAAA,MACpB;AAAA,IACJ,CAAC;AAED,SAAK,SAAS;AACd,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,MAAc,cAAc;AACxB,UAAM,aAAqC,CAAC;AAE5C,QAAI,KAAK,OAAO,KAAK,OAAO,SAAS;AACjC,UAAI,QAAQ,cAAc,qBAAqB;AAC/C,UAAI,cAAc,cAAc,4BAA4B;AAE5D,YAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAExC,UAAI,EAAE,SAAS,cAAc,MAAM,KAAK;AACpC,cAAM,EAAE,OAAO,UAAU,aAAa,eAAe,IAAI,MAAM,KAAK,SAAS;AAE7E,gBAAQ;AAER,qBAAa,OAAO,qBAAqB;AACzC,qBAAa,gBAAgB,4BAA4B;AAAA,MAC7D;AAEA,iBAAW,eAAe,IAAI,UAAU,KAAK;AAAA,IACjD;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAc,WAGX;AACC,QAAI,QAAQ;AACZ,QAAI,cAAc;AAElB,QAAI;AACA,YAAM,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AACxC,YAAM,SAAS,MAAM,4BAAO,SAAS,KAAK,OAAO,KAAK,OAAO,MAAM;AACnE,YAAM,SAAS,IAAI,OAAO,OAAO;AAAA,QAC7B,WAAW,KAAK,OAAO,KAAK,OAAO;AAAA,QACnC,eAAe,KAAK,OAAO,KAAK,OAAO;AAAA,MAC3C,CAAC;AACD,YAAM,WAAW,MAAM,OAAO,MAAM,EAAE,YAAY,qBAAqB,CAAC;AAExE,cAAQ,SAAS,cACb,cAAc,MAAM,SAAS;AAAA,IACrC,SAAS,OAAO;AACZ,cAAQ,IAAI,SAAS,mCAAmC,KAAK,OAAO,KAAK,OAAO,MAAM,YAAY,KAAK,EAAE;AAAA,IAC7G;AAEA,WAAO;AAAA,MACH;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,QAAW;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,CAAC;AAAA,EACf,GAA2B;AACvB,QAAI,WAA8C;AAElD,cAAU;AAAA,MACN,GAAG;AAAA,MACH,GAAG,MAAM,KAAK,YAAY;AAAA,IAC9B;AAEA,aAAS,QAAQ,GAAG,QAAQ,IAAI,WAAW,SAAS;AAChD,UAAI;AACA,mBAAW,MAAM,KAAK,UAAU,QAAQ;AAAA,UACpC;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACJ,CAAC;AAED;AAAA,MACJ,SAAS,OAAO;AACZ,gBAAQ;AAAA,UACJ;AAAA,UACA,eAAe,QAAQ,CAAC,2BAAwB,GAAG,YAAY,KAAK;AAAA,QACxE;AAEA,YAAI,UAAU,IAAI,YAAY,GAAG;AAC7B,gBAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,UAAU;AACV,aAAO,SAAS;AAAA,IACpB;AAEA,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC5E;AACJ;;;AKlIA,IAAM,iBAAiB;AAEhB,IAAM,UAAN,MAAc;AAAA,EACV;AAAA,EACA;AAAA,EACA,iBAAsB,CAAC;AAAA,EACvB;AAAA,EAEA,cAAc;AACjB,UAAM,SAAS,cAAc,cAAc;AAE3C,SAAK,iBAAiB;AACtB,SAAK,MAAM,IAAI,QAAQ,KAAK,gBAAgB,IAAI;AAEhD,UAAM,OAAO,KAAK,eAAe,KAAK;AACtC,SAAK,iBAAiB;AAAA,MAClB,WAAW;AAAA,QACP;AAAA,UACI,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,cAAc,KAAK;AAAA,UACnB,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,EAAE;AAAA,UAC/C,QAAQ,SAAc;AAClB,mBAAO;AAAA,cACH,IAAI,QAAQ,MAAM;AAAA,cAClB,MAAM,QAAQ,QAAQ;AAAA,cACtB,OAAO,QAAQ,SAAS;AAAA,cACxB,OAAO,QAAQ,SAAS;AAAA,YAC5B;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,OAAc,UAAU,QAAyB;AAC7C,iBAAa,QAAQ,cAAc;AAAA,EACvC;AACJ;;;ACxCO,IAAM,cAAN,MAAkB;AAAA,EACX;AAAA;AAAA,EAEF;AAAA,EACA;AAAA,EAER,YAAY,UAAkB;AAC1B,SAAK,MAAM,IAAI,QAAQ;AACvB,SAAK,MAAM,KAAK,IAAI;AAEpB,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,MAAgB,QACZ;AAAA,IACI,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS,CAAC;AAAA,IACV,UAAU,CAAC;AAAA,IACX,cAAc,CAAC,aAAkB;AAAA,EACrC,GAOU;AACV,QAAI;AACA,UAAI,MAAM,GAAG,KAAK,QAAQ,GAAG,IAAI;AAEjC,YAAM,cAAc,oBAAoB,MAAM;AAC9C,UAAI,YAAY,SAAS,GAAG;AACxB,eAAO,IAAI,WAAW;AAAA,MAC1B;AAEA,YAAM,WAAW,MAAM,KAAK,IAAI,QAAQ;AAAA,QACpC;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAED,aAAO,MAAM,YAAY,QAAQ;AAAA,IAErC,SAAS,OAAO;AACZ,cAAQ,IAAI,SAAS,0CAA0C,IAAI,YAAY,KAAK,EAAE;AAEtF,YAAM;AAAA,IACV;AAAA,EACJ;AACJ;;;ACnDO,IAAM,oBAAN,cAAgC,YAAY;AAAA,EAC/C,cAAc;AACV,UAAM,aAAa;AAAA,EACvB;AAAA,EAEA,MAAa,iBAAiB,YAA2D;AACrF,UAAM,qBAAqB,WAAW;AAAA,MAClC,CAACC,UAASA,MAAK,UAAU;AAAA,IAC7B;AAEA,QAAI,mBAAmB,UAAU,EAAG,QAAO;AAC3C,QAAI,mBAAmB,CAAC,KAAK,OAAW,QAAO;AAE/C,UAAM,OAAO,mBAAmB,CAAC;AAEjC,UAAM,gBAAgB,KAAK,MAAM,OAAO,CAACA,UAASA,MAAK,OAAO,MAAM;AAEpE,QAAI,cAAc,UAAU,EAAG,QAAO;AACtC,QAAI,cAAc,CAAC,KAAK,OAAW,QAAO;AAG1C,UAAM,MAAM,cAAc,CAAC,EAAE;AAE7B,UAAM,WAAW,MAAM,KAAK,IAAI,QAAQ;AAAA,MACpC;AAAA,MACA,QAAQ;AAAA,MACR,SAAS;AAAA,QACL,QAAQ;AAAA,MACZ;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,EACX;AACJ;;;ACjCO,IAAM,wBAAN,cAAoC,YAAY;AAAA,EACnD,cAAc;AACV,UAAM,iBAAiB;AAAA,EAC3B;AAAA,EAEA,MAAa,QAAQ,IAAqC;AACtD,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AACJ;;;ACXO,IAAM,yBAAyB,CAAC,SAA4C;AAC/E,QAAM,SAAmB,CAAC;AAE1B,OAAK,MAAM,QAAQ,CAAC,iBAAoC;AACpD,UAAM,MAAM,aAAa,OAAO,QAAQ,CAAC,SAAS,IAAI;AAEtD,QAAI,QAAQ,CAAC,SAAS;AAClB,UAAI,KAAK,YAAY,KAAM,QAAO,KAAK,KAAK,KAAK;AAAA,IACrD,CAAC;AAAA,EACL,CAAC;AAED,SAAO;AACX;;;ACXO,IAAM,uBAAN,cAAmC,YAAY;AAAA,EAClD,cAAc;AACV,UAAM,gBAAgB;AAAA,EAC1B;AAAA,EACA,MAAa,UAAU,QAAqC;AACxD,UAAM,SAAS;AAAA,MACX;AAAA,QACI,KAAK;AAAA,QACL,OAAO;AAAA,MACX;AAAA,MACA,GAAG,aAAa,QAAQ,QAAQ;AAAA,IACpC;AAEA,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AACJ;;;AChBO,IAAM,4BAA4B,CACrC,SACmB;AACnB,SAAO;AAAA,IACH,OAAO,KAAK,MAAM,IAAI,CAAC,SAAS,IAAI;AAAA,IACpC,UAAU,KAAK;AAAA,EACnB;AACJ;;;ACJO,IAAM,0BAAN,cAAsC,YAAY;AAAA,EACrD,cAAc;AACV,UAAM,mBAAmB;AAAA,EAC7B;AAAA,EAEA,MAAa,QACT,SACA,MACA,QACA,UACyB;AACzB,UAAM,eAAe,aAAa,QAAQ,QAAQ;AAElD,UAAM,SAAS;AAAA,MACX,EAAE,KAAK,YAAY,OAAO,IAAI;AAAA,MAC9B,EAAE,KAAK,cAAc,QAAQ,OAAO,GAAG,SAAS,EAAE;AAAA,MAClD,EAAE,KAAK,SAAS,OAAO,QAAQ;AAAA,MAC/B,GAAG;AAAA,IACP;AAEA,QAAI,YAAY,MAAM;AAClB,eAAS,QAAQ,CAAC,SAAS;AACvB,eAAO,KAAK;AAAA,UACR,KAAK;AAAA,UACL,OAAO,aAAa,IAAI;AAAA,QAC5B,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAEA,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,aAAa;AAAA,IACjB,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,QAAQ,IAA4C;AAC7D,UAAM,SAAS;AAAA,MACX,EAAE,KAAK,UAAU,OAAO,aAAa;AAAA,MACrC,EAAE,KAAK,UAAU,OAAO,iBAAiB;AAAA,IAC7C;AAEA,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,eAAkC;AAC3C,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB,MAAM;AAAA,MACN,aAAa,CAAC,SAA6C;AACvD,eAAO,KAAK,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,MACxC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAa,eAAe,OAAkC;AAC1D,WAAO,MAAM,KAAK,QAAQ;AAAA,MACtB,MAAM;AAAA,MACN,QAAQ,CAAC,EAAE,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,MACxC,aAAa,CAAC,SAAiC;AAC3C,eAAO,KAAK,YAAY,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,MACpD;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;","names":["axios","item"]}