@c-rex/services 0.0.7 → 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.
package/dist/index.js CHANGED
@@ -50,50 +50,21 @@ var API = {
50
50
  };
51
51
 
52
52
  // ../core/src/requests.ts
53
- var CrexApi = class {
54
- apiClient;
55
- logger;
56
- constructor(baseUrl, logger) {
57
- this.apiClient = import_axios.default.create({
58
- baseURL: baseUrl,
59
- headers: {
60
- "content-Type": "application/json"
61
- }
62
- });
63
- this.logger = logger;
64
- }
65
- async execute({
66
- url,
67
- method,
68
- params,
69
- body,
70
- headers
71
- }) {
72
- let response = void 0;
73
- for (let retry = 0; retry < API.MAX_RETRY; retry++) {
74
- try {
75
- response = await this.apiClient.request({
76
- url,
77
- method,
78
- data: body,
79
- params,
80
- headers
81
- });
82
- } catch (error) {
83
- this.logger.log("error", `API.execute error when request ${url}. Error: ${error}`);
84
- throw error;
85
- }
86
- }
87
- if (response) {
88
- return response.data;
89
- }
90
- throw new Error("API.execute error: Failed to retrieve a valid response");
91
- }
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;
92
65
  };
93
66
 
94
- // ../core/src/cookies.ts
95
- var GLOBAL_KEY = "__CREX_INITIAL_CONFIG__";
96
- var CONFIG_COOKIE_KEY = "crex_config";
67
+ // ../utils/src/memory.ts
97
68
  function isBrowser() {
98
69
  return typeof window !== "undefined" && typeof document !== "undefined";
99
70
  }
@@ -115,24 +86,24 @@ function setCookie(name, value, days = 30) {
115
86
  const expires = new Date(Date.now() + days * 86400 * 1e3).toUTCString();
116
87
  document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;
117
88
  }
118
- function setConfig(config) {
89
+ function saveInMemory(value, key) {
119
90
  if (isBrowser()) {
120
- setCookie(CONFIG_COOKIE_KEY, JSON.stringify(config));
91
+ setCookie(key, JSON.stringify(value));
121
92
  } else {
122
- if (typeof global !== "undefined" && !(GLOBAL_KEY in global)) {
123
- global[GLOBAL_KEY] = null;
93
+ if (typeof global !== "undefined" && !(key in global)) {
94
+ global[key] = null;
124
95
  }
125
- const globalConfig = global[GLOBAL_KEY];
96
+ const globalConfig = global[key];
126
97
  if (globalConfig === null) {
127
- global[GLOBAL_KEY] = config;
98
+ global[key] = value;
128
99
  }
129
100
  }
130
101
  }
131
- function getConfig() {
102
+ function getFromMemory(key) {
132
103
  let returnValue;
133
104
  if (isBrowser()) {
134
105
  const cookies = parseCookies();
135
- const configStr = cookies[CONFIG_COOKIE_KEY];
106
+ const configStr = cookies[key];
136
107
  if (configStr) {
137
108
  try {
138
109
  return JSON.parse(configStr);
@@ -142,42 +113,146 @@ function getConfig() {
142
113
  }
143
114
  return null;
144
115
  } else {
145
- returnValue = global[GLOBAL_KEY];
116
+ returnValue = global[key];
146
117
  }
147
118
  return returnValue;
148
119
  }
149
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
+
150
217
  // ../core/src/sdk.ts
218
+ var SDK_CONFIG_KEY = "crex-sdk-config";
151
219
  var CrexSDK = class {
152
- customerConfig;
153
- logger;
154
220
  api;
221
+ logger;
222
+ userAuthConfig = {};
223
+ customerConfig;
155
224
  constructor() {
156
- const config = getConfig();
225
+ const config = getFromMemory(SDK_CONFIG_KEY);
157
226
  this.customerConfig = config;
158
- this.api = new CrexApi(this.customerConfig.baseUrl, null);
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
+ };
159
250
  }
160
251
  static setConfig(config) {
161
- setConfig(config);
252
+ saveInMemory(config, SDK_CONFIG_KEY);
162
253
  }
163
254
  };
164
255
 
165
- // ../utils/src/utils.ts
166
- var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
167
- key,
168
- value: item
169
- }));
170
- var generateQueryParams = (params) => {
171
- const queryParams = params.map(
172
- (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
173
- ).join("&");
174
- return queryParams;
175
- };
176
-
177
- // ../utils/src/classMerge.ts
178
- var import_clsx = require("clsx");
179
- var import_tailwind_merge = require("tailwind-merge");
180
-
181
256
  // src/baseService.ts
182
257
  var BaseService = class {
183
258
  api;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../core/src/requests.ts","../../constants/src/index.ts","../../core/src/cookies.ts","../../core/src/sdk.ts","../../utils/src/utils.ts","../../utils/src/classMerge.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\";\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 apiClient: AxiosInstance;\n private logger: any;\n\n public constructor(baseUrl: string, logger: any) {\n this.apiClient = axios.create({\n baseURL: baseUrl,\n headers: {\n \"content-Type\": \"application/json\",\n },\n });\n this.logger = logger;\n }\n\n async execute<T>({\n url,\n method,\n params,\n body,\n headers,\n }: CallParams): Promise<any> {\n let response: APIGenericResponse<T> | undefined = undefined;\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 } catch (error) {\n this.logger.log(\"error\", `API.execute error when request ${url}. Error: ${error}`);\n throw error;\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}\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};","const GLOBAL_KEY = '__CREX_INITIAL_CONFIG__';\nconst CONFIG_COOKIE_KEY = 'crex_config';\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 setConfig(config: Record<string, any>) {\n\n if (isBrowser()) {\n setCookie(CONFIG_COOKIE_KEY, JSON.stringify(config));\n } else {\n if (typeof global !== 'undefined' && !(GLOBAL_KEY in global)) {\n (global as any)[GLOBAL_KEY] = null;\n }\n\n const globalConfig = (global as any)[GLOBAL_KEY] as any;\n\n if (globalConfig === null) {\n (global as any)[GLOBAL_KEY] = config;\n }\n }\n}\n\nexport function getConfig(): Record<string, any> | null {\n let returnValue\n\n if (isBrowser()) {\n const cookies = parseCookies();\n const configStr = cookies[CONFIG_COOKIE_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)[GLOBAL_KEY];\n }\n\n return returnValue\n}\n","import { CrexApi } from \"./requests\";\nimport { ConfigInterface } from \"@c-rex/interfaces\";\nimport { getConfig, setConfig } from \"./cookies\";\n\nexport class CrexSDK {\n public customerConfig!: ConfigInterface;\n public logger!: any;\n public api!: CrexApi;\n\n public constructor() {\n const config = getConfig();\n\n this.customerConfig = config as ConfigInterface;\n this.api = new CrexApi(this.customerConfig.baseUrl, null);\n }\n\n public static setConfig(config: ConfigInterface) {\n setConfig(config);\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*/","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 { 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;\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":"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","names":["axios","item"]}
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":"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","names":["axios","item"]}
package/dist/index.mjs CHANGED
@@ -11,50 +11,21 @@ var API = {
11
11
  };
12
12
 
13
13
  // ../core/src/requests.ts
14
- var CrexApi = class {
15
- apiClient;
16
- logger;
17
- constructor(baseUrl, logger) {
18
- this.apiClient = axios.create({
19
- baseURL: baseUrl,
20
- headers: {
21
- "content-Type": "application/json"
22
- }
23
- });
24
- this.logger = logger;
25
- }
26
- async execute({
27
- url,
28
- method,
29
- params,
30
- body,
31
- headers
32
- }) {
33
- let response = void 0;
34
- for (let retry = 0; retry < API.MAX_RETRY; retry++) {
35
- try {
36
- response = await this.apiClient.request({
37
- url,
38
- method,
39
- data: body,
40
- params,
41
- headers
42
- });
43
- } catch (error) {
44
- this.logger.log("error", `API.execute error when request ${url}. Error: ${error}`);
45
- throw error;
46
- }
47
- }
48
- if (response) {
49
- return response.data;
50
- }
51
- throw new Error("API.execute error: Failed to retrieve a valid response");
52
- }
14
+ import { Issuer } from "openid-client";
15
+
16
+ // ../utils/src/utils.ts
17
+ var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
18
+ key,
19
+ value: item
20
+ }));
21
+ var generateQueryParams = (params) => {
22
+ const queryParams = params.map(
23
+ (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
24
+ ).join("&");
25
+ return queryParams;
53
26
  };
54
27
 
55
- // ../core/src/cookies.ts
56
- var GLOBAL_KEY = "__CREX_INITIAL_CONFIG__";
57
- var CONFIG_COOKIE_KEY = "crex_config";
28
+ // ../utils/src/memory.ts
58
29
  function isBrowser() {
59
30
  return typeof window !== "undefined" && typeof document !== "undefined";
60
31
  }
@@ -76,24 +47,24 @@ function setCookie(name, value, days = 30) {
76
47
  const expires = new Date(Date.now() + days * 86400 * 1e3).toUTCString();
77
48
  document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${expires}; SameSite=Lax`;
78
49
  }
79
- function setConfig(config) {
50
+ function saveInMemory(value, key) {
80
51
  if (isBrowser()) {
81
- setCookie(CONFIG_COOKIE_KEY, JSON.stringify(config));
52
+ setCookie(key, JSON.stringify(value));
82
53
  } else {
83
- if (typeof global !== "undefined" && !(GLOBAL_KEY in global)) {
84
- global[GLOBAL_KEY] = null;
54
+ if (typeof global !== "undefined" && !(key in global)) {
55
+ global[key] = null;
85
56
  }
86
- const globalConfig = global[GLOBAL_KEY];
57
+ const globalConfig = global[key];
87
58
  if (globalConfig === null) {
88
- global[GLOBAL_KEY] = config;
59
+ global[key] = value;
89
60
  }
90
61
  }
91
62
  }
92
- function getConfig() {
63
+ function getFromMemory(key) {
93
64
  let returnValue;
94
65
  if (isBrowser()) {
95
66
  const cookies = parseCookies();
96
- const configStr = cookies[CONFIG_COOKIE_KEY];
67
+ const configStr = cookies[key];
97
68
  if (configStr) {
98
69
  try {
99
70
  return JSON.parse(configStr);
@@ -103,42 +74,146 @@ function getConfig() {
103
74
  }
104
75
  return null;
105
76
  } else {
106
- returnValue = global[GLOBAL_KEY];
77
+ returnValue = global[key];
107
78
  }
108
79
  return returnValue;
109
80
  }
110
81
 
82
+ // ../utils/src/classMerge.ts
83
+ import { clsx } from "clsx";
84
+ import { twMerge } from "tailwind-merge";
85
+
86
+ // ../core/src/requests.ts
87
+ var CREX_TOKEN_HEADER_KEY = "crex-token";
88
+ var CREX_TOKEN_EXPIRY_HEADER_KEY = "crex-token-expiry";
89
+ var CrexApi = class {
90
+ config;
91
+ apiClient;
92
+ logger;
93
+ constructor(config, logger) {
94
+ this.apiClient = axios.create({
95
+ baseURL: config.baseUrl,
96
+ headers: {
97
+ "content-Type": "application/json"
98
+ }
99
+ });
100
+ this.config = config;
101
+ this.logger = logger;
102
+ }
103
+ async manageToken() {
104
+ const headersAux = {};
105
+ if (this.config.OIDC.client.enabled) {
106
+ let token = getFromMemory(CREX_TOKEN_HEADER_KEY);
107
+ let tokenExpiry = getFromMemory(CREX_TOKEN_EXPIRY_HEADER_KEY);
108
+ const now = Math.floor(Date.now() / 1e3);
109
+ if (!(token && tokenExpiry > now + 60)) {
110
+ const { token: tokenAux, tokenExpiry: tokenExpiryAux } = await this.getToken();
111
+ token = tokenAux;
112
+ saveInMemory(token, CREX_TOKEN_HEADER_KEY);
113
+ saveInMemory(tokenExpiryAux, CREX_TOKEN_EXPIRY_HEADER_KEY);
114
+ }
115
+ headersAux["Authorization"] = `Bearer ${token}`;
116
+ }
117
+ return headersAux;
118
+ }
119
+ async getToken() {
120
+ let token = "";
121
+ let tokenExpiry = 0;
122
+ try {
123
+ const now = Math.floor(Date.now() / 1e3);
124
+ const issuer = await Issuer.discover(this.config.OIDC.client.issuer);
125
+ const client = new issuer.Client({
126
+ client_id: this.config.OIDC.client.id,
127
+ client_secret: this.config.OIDC.client.secret
128
+ });
129
+ const tokenSet = await client.grant({ grant_type: "client_credentials" });
130
+ token = tokenSet.access_token, tokenExpiry = now + tokenSet.expires_at;
131
+ } catch (error) {
132
+ console.log("error", `API.getToken error when request ${this.config.OIDC.client.issuer}. Error: ${error}`);
133
+ }
134
+ return {
135
+ token,
136
+ tokenExpiry
137
+ };
138
+ }
139
+ async execute({
140
+ url,
141
+ method,
142
+ params,
143
+ body,
144
+ headers = {}
145
+ }) {
146
+ let response = void 0;
147
+ headers = {
148
+ ...headers,
149
+ ...await this.manageToken()
150
+ };
151
+ for (let retry = 0; retry < API.MAX_RETRY; retry++) {
152
+ try {
153
+ response = await this.apiClient.request({
154
+ url,
155
+ method,
156
+ data: body,
157
+ params,
158
+ headers
159
+ });
160
+ break;
161
+ } catch (error) {
162
+ console.log(
163
+ "error",
164
+ `API.execute ${retry + 1}\xBA error when request ${url}. Error: ${error}`
165
+ );
166
+ if (retry === API.MAX_RETRY - 1) {
167
+ throw error;
168
+ }
169
+ }
170
+ }
171
+ if (response) {
172
+ return response.data;
173
+ }
174
+ throw new Error("API.execute error: Failed to retrieve a valid response");
175
+ }
176
+ };
177
+
111
178
  // ../core/src/sdk.ts
179
+ var SDK_CONFIG_KEY = "crex-sdk-config";
112
180
  var CrexSDK = class {
113
- customerConfig;
114
- logger;
115
181
  api;
182
+ logger;
183
+ userAuthConfig = {};
184
+ customerConfig;
116
185
  constructor() {
117
- const config = getConfig();
186
+ const config = getFromMemory(SDK_CONFIG_KEY);
118
187
  this.customerConfig = config;
119
- this.api = new CrexApi(this.customerConfig.baseUrl, null);
188
+ this.api = new CrexApi(this.customerConfig, null);
189
+ const user = this.customerConfig.OIDC.user;
190
+ this.userAuthConfig = {
191
+ providers: [
192
+ {
193
+ id: "crex",
194
+ name: "CREX",
195
+ type: "oauth",
196
+ clientId: user.id,
197
+ wellKnown: user.issuer,
198
+ clientSecret: user.secret,
199
+ authorization: { params: { scope: user.scope } },
200
+ profile(profile) {
201
+ return {
202
+ id: profile.id || "fake Id",
203
+ name: profile.name || "Fake Name",
204
+ email: profile.email || "fake Email",
205
+ image: profile.image || "fake Image"
206
+ };
207
+ }
208
+ }
209
+ ]
210
+ };
120
211
  }
121
212
  static setConfig(config) {
122
- setConfig(config);
213
+ saveInMemory(config, SDK_CONFIG_KEY);
123
214
  }
124
215
  };
125
216
 
126
- // ../utils/src/utils.ts
127
- var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
128
- key,
129
- value: item
130
- }));
131
- var generateQueryParams = (params) => {
132
- const queryParams = params.map(
133
- (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
134
- ).join("&");
135
- return queryParams;
136
- };
137
-
138
- // ../utils/src/classMerge.ts
139
- import { clsx } from "clsx";
140
- import { twMerge } from "tailwind-merge";
141
-
142
217
  // src/baseService.ts
143
218
  var BaseService = class {
144
219
  api;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../core/src/requests.ts","../../constants/src/index.ts","../../core/src/cookies.ts","../../core/src/sdk.ts","../../utils/src/utils.ts","../../utils/src/classMerge.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":["import axios, { AxiosResponse, Method, AxiosInstance } from \"axios\";\nimport { API } from \"@c-rex/constants\";\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 apiClient: AxiosInstance;\n private logger: any;\n\n public constructor(baseUrl: string, logger: any) {\n this.apiClient = axios.create({\n baseURL: baseUrl,\n headers: {\n \"content-Type\": \"application/json\",\n },\n });\n this.logger = logger;\n }\n\n async execute<T>({\n url,\n method,\n params,\n body,\n headers,\n }: CallParams): Promise<any> {\n let response: APIGenericResponse<T> | undefined = undefined;\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 } catch (error) {\n this.logger.log(\"error\", `API.execute error when request ${url}. Error: ${error}`);\n throw error;\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}\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};","const GLOBAL_KEY = '__CREX_INITIAL_CONFIG__';\nconst CONFIG_COOKIE_KEY = 'crex_config';\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 setConfig(config: Record<string, any>) {\n\n if (isBrowser()) {\n setCookie(CONFIG_COOKIE_KEY, JSON.stringify(config));\n } else {\n if (typeof global !== 'undefined' && !(GLOBAL_KEY in global)) {\n (global as any)[GLOBAL_KEY] = null;\n }\n\n const globalConfig = (global as any)[GLOBAL_KEY] as any;\n\n if (globalConfig === null) {\n (global as any)[GLOBAL_KEY] = config;\n }\n }\n}\n\nexport function getConfig(): Record<string, any> | null {\n let returnValue\n\n if (isBrowser()) {\n const cookies = parseCookies();\n const configStr = cookies[CONFIG_COOKIE_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)[GLOBAL_KEY];\n }\n\n return returnValue\n}\n","import { CrexApi } from \"./requests\";\nimport { ConfigInterface } from \"@c-rex/interfaces\";\nimport { getConfig, setConfig } from \"./cookies\";\n\nexport class CrexSDK {\n public customerConfig!: ConfigInterface;\n public logger!: any;\n public api!: CrexApi;\n\n public constructor() {\n const config = getConfig();\n\n this.customerConfig = config as ConfigInterface;\n this.api = new CrexApi(this.customerConfig.baseUrl, null);\n }\n\n public static setConfig(config: ConfigInterface) {\n setConfig(config);\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*/","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 { 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;\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":"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","names":["item"]}
1
+ {"version":3,"sources":["../../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":["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,OAAO,WAAqD;;;ACuBrD,IAAM,MAAM;AAAA,EACf,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,IACT,gBAAgB;AAAA,EACpB;AACJ;;;AD3BA,SAAS,cAAc;;;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,SAAS,YAA6B;AACtC,SAAS,eAAe;;;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,MAAM,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,OAAO,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,CAACA,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":["item"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c-rex/services",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "module": "./dist/index.mjs",