@c-rex/services 0.1.11 → 0.1.12

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
@@ -51,14 +51,7 @@ var LOG_LEVELS = {
51
51
  info: 6,
52
52
  debug: 7
53
53
  };
54
- var API = {
55
- MAX_RETRY: 3,
56
- API_TIMEOUT: 1e4,
57
- RETRY_DELAY: 500,
58
- API_HEADERS: {
59
- "content-Type": "application/json"
60
- }
61
- };
54
+ var SDK_CONFIG_KEY = "crex-sdk-config";
62
55
  var CONTENT_LANG_KEY = "CONTENT_LANG_KEY";
63
56
  var UI_LANG_KEY = "UI_LANG_KEY";
64
57
  var FLAGS_BY_LANG = {
@@ -90,7 +83,7 @@ var OPERATOR_OPTIONS = {
90
83
  };
91
84
 
92
85
  // ../core/src/requests.ts
93
- var import_headers = require("next/headers");
86
+ var import_headers2 = require("next/headers");
94
87
 
95
88
  // ../core/src/logger.ts
96
89
  var import_winston = __toESM(require("winston"));
@@ -173,8 +166,24 @@ var GraylogTransport = class extends import_winston_transport2.default {
173
166
  }
174
167
  };
175
168
 
169
+ // ../core/src/config.ts
170
+ var import_headers = require("next/headers");
171
+ var getClientConfig = () => {
172
+ const jsonConfigs = (0, import_headers.cookies)().get(SDK_CONFIG_KEY)?.value;
173
+ if (!jsonConfigs) {
174
+ throw new Error("Configs not found");
175
+ }
176
+ const configs = JSON.parse(jsonConfigs);
177
+ return configs;
178
+ };
179
+ function getServerConfig() {
180
+ if (!global.__GLOBAL_CONFIG__) {
181
+ throw new Error("Server config not initialized");
182
+ }
183
+ return global.__GLOBAL_CONFIG__;
184
+ }
185
+
176
186
  // ../core/src/logger.ts
177
- var import_next_cookies = require("@c-rex/utils/next-cookies");
178
187
  var CrexLogger = class {
179
188
  customerConfig;
180
189
  logger;
@@ -187,13 +196,13 @@ var CrexLogger = class {
187
196
  async initLogger() {
188
197
  try {
189
198
  if (!this.customerConfig) {
190
- this.customerConfig = await (0, import_next_cookies.getServerConfigs)();
199
+ this.customerConfig = getServerConfig();
191
200
  }
192
201
  if (!this.logger) {
193
202
  this.logger = this.createLogger();
194
203
  }
195
204
  } catch (error) {
196
- console.error("Error initializing logger:", error);
205
+ console.log("Error initializing logger:", error);
197
206
  }
198
207
  }
199
208
  /**
@@ -229,8 +238,26 @@ var CrexLogger = class {
229
238
  }
230
239
  };
231
240
 
241
+ // ../core/src/token.ts
242
+ var import_openid_client = require("openid-client");
243
+ var getToken = async () => {
244
+ console.log("veio buscar");
245
+ const config = getServerConfig();
246
+ const issuer = await import_openid_client.Issuer.discover(config.OIDC.client.issuer);
247
+ const client = new issuer.Client({
248
+ client_id: config.OIDC.client.id,
249
+ client_secret: config.OIDC.client.secret
250
+ });
251
+ const tokenSet = await client.grant({ grant_type: "client_credentials" });
252
+ const token = tokenSet.access_token;
253
+ const expiresAt = tokenSet.expires_at;
254
+ if (!token) {
255
+ throw new Error("Failed to get token");
256
+ }
257
+ return { token, expiresAt };
258
+ };
259
+
232
260
  // ../core/src/requests.ts
233
- var import_next_cookies2 = require("@c-rex/utils/next-cookies");
234
261
  var CrexApi = class {
235
262
  customerConfig;
236
263
  apiClient;
@@ -245,10 +272,10 @@ var CrexApi = class {
245
272
  async initAPI() {
246
273
  this.logger = new CrexLogger();
247
274
  if (!this.customerConfig) {
248
- this.customerConfig = await (0, import_next_cookies2.getServerConfigs)();
275
+ this.customerConfig = getServerConfig();
249
276
  }
250
277
  if (!this.publicNextApiUrl) {
251
- this.publicNextApiUrl = await (0, import_next_cookies2.getClientConfigs)().publicNextApiUrl;
278
+ this.publicNextApiUrl = "http://localhost:3002";
252
279
  }
253
280
  if (!this.apiClient) {
254
281
  this.apiClient = import_axios.default.create({
@@ -256,36 +283,16 @@ var CrexApi = class {
256
283
  });
257
284
  }
258
285
  }
259
- async getToken() {
260
- for (let retry = 0; retry < API.MAX_RETRY; retry++) {
261
- try {
262
- const response = await fetch(`${this.publicNextApiUrl}/api/token`, {
263
- method: "POST",
264
- credentials: "include"
265
- });
266
- const { token } = await response.json();
267
- return token;
268
- } catch (error) {
269
- this.logger.log({
270
- level: "error",
271
- message: `utils.getToken ${retry + 1}\xBA error when request token. Error: ${error}`
272
- });
273
- await new Promise((resolve) => setTimeout(resolve, API.RETRY_DELAY));
274
- if (retry === API.MAX_RETRY) {
275
- throw error;
276
- }
277
- }
278
- }
279
- }
280
286
  async manageToken() {
281
287
  try {
282
288
  let token = "";
283
- const hasToken = (0, import_headers.cookies)().get(CREX_TOKEN_HEADER_KEY);
289
+ const hasToken = (0, import_headers2.cookies)().get(CREX_TOKEN_HEADER_KEY);
284
290
  if (hasToken == void 0 || hasToken.value === null) {
285
- const tokenResult = await this.getToken();
291
+ const { token: tokenResult } = await getToken();
286
292
  if (tokenResult === null) throw new Error("Token is undefined");
287
293
  token = tokenResult;
288
294
  } else {
295
+ console.log("j\xE1 tinha o token");
289
296
  token = hasToken.value;
290
297
  }
291
298
  return token;
@@ -316,38 +323,29 @@ var CrexApi = class {
316
323
  body,
317
324
  headers = {}
318
325
  }) {
319
- await this.initAPI();
320
- let response = void 0;
321
- if (this.customerConfig.OIDC.client.enabled) {
322
- const token = await this.manageToken();
323
- headers = {
324
- ...headers,
325
- Authorization: `Bearer ${token}`
326
- };
327
- this.apiClient.defaults.headers.common["Authorization"] = `Bearer ${token}`;
328
- }
329
- for (let retry = 0; retry < API.MAX_RETRY; retry++) {
330
- try {
331
- response = await this.apiClient.request({
332
- url,
333
- method,
334
- data: body,
335
- params,
336
- headers
337
- });
338
- break;
339
- } catch (error) {
340
- this.logger.log({
341
- level: "error",
342
- message: `API.execute ${retry + 1}\xBA error when request ${url}. Error: ${error}`
343
- });
344
- if (retry === API.MAX_RETRY - 1) {
345
- throw error;
346
- }
326
+ try {
327
+ await this.initAPI();
328
+ let response = void 0;
329
+ if (this.customerConfig.OIDC.client.enabled) {
330
+ const token = await this.manageToken();
331
+ headers = {
332
+ ...headers,
333
+ Authorization: `Bearer ${token}`
334
+ };
335
+ this.apiClient.defaults.headers.common["Authorization"] = `Bearer ${token}`;
347
336
  }
348
- }
349
- if (response) {
350
- return response.data;
337
+ response = await this.apiClient.request({
338
+ url,
339
+ method,
340
+ data: body,
341
+ params,
342
+ headers
343
+ });
344
+ if (response) {
345
+ return response.data;
346
+ }
347
+ } catch (error) {
348
+ console.log("erro brabo", error);
351
349
  }
352
350
  throw new Error("API.execute error: Failed to retrieve a valid response");
353
351
  }
@@ -379,10 +377,15 @@ var import_clsx = require("clsx");
379
377
  var import_tailwind_merge = require("tailwind-merge");
380
378
 
381
379
  // ../utils/src/params.ts
382
- var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
383
- key,
384
- value: item
385
- }));
380
+ var createParams = (fieldsList, key = "Fields") => {
381
+ if (!fieldsList || fieldsList.length === 0) {
382
+ return [];
383
+ }
384
+ return fieldsList.map((item) => ({
385
+ key,
386
+ value: item
387
+ }));
388
+ };
386
389
  var generateQueryParams = (params) => {
387
390
  const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
388
391
  return queryParams;
@@ -530,12 +533,11 @@ var DirectoryNodesService = class extends BaseService {
530
533
  };
531
534
 
532
535
  // src/transforms/documentTypes.ts
533
- var import_next_cookies3 = require("@c-rex/utils/next-cookies");
534
- var import_headers2 = require("next/headers");
535
- var transformDocumentTypes = (data) => {
536
+ var import_headers3 = require("next/headers");
537
+ var transformDocumentTypes = async (data) => {
536
538
  const labels = [];
537
- const config = (0, import_next_cookies3.getClientConfigs)();
538
- const contentLanguage = (0, import_headers2.cookies)().get(CONTENT_LANG_KEY)?.value || config.languageSwitcher.default;
539
+ const config = getClientConfig();
540
+ const contentLanguage = (0, import_headers3.cookies)().get(CONTENT_LANG_KEY)?.value || config.languageSwitcher.default;
539
541
  const language = contentLanguage.split("-")[0];
540
542
  data.items.forEach((documentItem) => {
541
543
  const label = documentItem.labels.find((item) => item.language.toLowerCase() === language.toLowerCase());
@@ -570,13 +572,12 @@ var DocumentTypesService = class extends BaseService {
570
572
  };
571
573
 
572
574
  // src/transforms/information.ts
573
- var import_next_cookies4 = require("@c-rex/utils/next-cookies");
574
- var import_headers3 = require("next/headers");
575
+ var import_headers4 = require("next/headers");
575
576
  var import_logger2 = require("@c-rex/core/logger");
576
577
  var transformInformationUnits = async (data) => {
577
578
  const logger = new import_logger2.CrexLogger();
578
- const frontEndConfig = await (0, import_next_cookies4.getClientConfigs)();
579
- const backEndConfig = await (0, import_next_cookies4.getServerConfigs)();
579
+ const frontEndConfig = getClientConfig();
580
+ const backEndConfig = getServerConfig();
580
581
  const filteredTags = {};
581
582
  const items = data.items.map((item) => {
582
583
  const type = item.class.labels.filter((item2) => item2.language === EN_LANG)[0].value.toUpperCase();
@@ -588,34 +589,34 @@ var transformInformationUnits = async (data) => {
588
589
  link = `/documents/${item.shortId}`;
589
590
  }
590
591
  let title = "NO TITLE";
592
+ if (item.titles) {
593
+ title = item.titles[0].value;
594
+ } else if (item.labels) {
595
+ title = item.labels[0].value;
596
+ }
591
597
  let language = "NO LANGUAGE";
592
- try {
593
- if (item.titles) {
594
- title = item.titles[0].value;
595
- language = item.titles[0].language;
596
- } else {
597
- title = item.labels[0].value;
598
- language = item.labels[0].language;
599
- }
600
- } catch {
601
- logger.log({
602
- level: "error",
603
- message: `No label or title on item ${item.shortId}`
604
- });
598
+ if (item.languages.length > 0) {
599
+ language = item.languages[0];
600
+ }
601
+ let versionOf = [];
602
+ if (item?.versionOf && item.versionOf?.labels) {
603
+ versionOf = item.versionOf.labels.map((item2) => item2.language).filter((value) => value !== void 0);
605
604
  }
606
605
  return {
607
606
  language,
608
607
  title,
609
608
  type,
610
609
  localeType: "",
610
+ revision: item.revision,
611
611
  shortId: item.shortId,
612
+ multipleVersions: versionOf,
612
613
  disabled: frontEndConfig.results.disabledResults.includes(type),
613
614
  link,
614
615
  files
615
616
  };
616
617
  });
617
618
  if (data.tags) {
618
- const contentLang = ((0, import_headers3.cookies)().get(CONTENT_LANG_KEY)?.value || EN_LANG).toLowerCase();
619
+ const contentLang = ((0, import_headers4.cookies)().get(CONTENT_LANG_KEY)?.value || EN_LANG).toLowerCase();
619
620
  const splittedContentLang = contentLang.split("-")[0];
620
621
  for (const [key, value] of Object.entries(data.tags)) {
621
622
  if (!value || !value.items || value.items.length === 0) {
@@ -716,7 +717,6 @@ var InformationUnitsService = class extends BaseService {
716
717
  const remainFilters = createParams(filters, "Filter");
717
718
  const restrictions = createParams(restrict, "Restrict");
718
719
  const remainTags = createParams(tags, "Tags");
719
- const languageParam = `VALUES ?lang { ${languages.map((lang) => `"${lang}"`).join(" ")} } ?s iirds:language ?lang .`;
720
720
  const params = [
721
721
  { key: "pageSize", value: "12" },
722
722
  { key: "wildcard", value: wildcard.toLowerCase() },
@@ -729,6 +729,7 @@ var InformationUnitsService = class extends BaseService {
729
729
  ...restrictions
730
730
  ];
731
731
  if (languages.length > 0) {
732
+ const languageParam = `VALUES ?lang { ${languages.map((lang) => `"${lang}"`).join(" ")} } ?s iirds:language ?lang .`;
732
733
  params.push({ key: "sparqlWhere", value: languageParam });
733
734
  }
734
735
  if (queries.length > 0) {
@@ -792,10 +793,9 @@ var InformationUnitsService = class extends BaseService {
792
793
  };
793
794
 
794
795
  // src/language.ts
795
- var import_next_cookies5 = require("@c-rex/utils/next-cookies");
796
796
  var LanguageService = class extends BaseService {
797
797
  constructor() {
798
- const configs = (0, import_next_cookies5.getClientConfigs)();
798
+ const configs = getClientConfig();
799
799
  super(configs.languageSwitcher.endpoint);
800
800
  }
801
801
  /**
@@ -832,13 +832,12 @@ var LanguageService = class extends BaseService {
832
832
  };
833
833
 
834
834
  // src/transforms/topics.ts
835
- var import_next_cookies6 = require("@c-rex/utils/next-cookies");
836
- var import_headers4 = require("next/headers");
835
+ var import_headers5 = require("next/headers");
837
836
  var import_logger3 = require("@c-rex/core/logger");
838
837
  var transformTopics = async (data) => {
839
838
  const logger = new import_logger3.CrexLogger();
840
- const config = (0, import_next_cookies6.getClientConfigs)();
841
- const uiLang = ((0, import_headers4.cookies)().get(UI_LANG_KEY)?.value || config.languageSwitcher.default).toLowerCase();
839
+ const config = getClientConfig();
840
+ const uiLang = ((0, import_headers5.cookies)().get(UI_LANG_KEY)?.value || config.languageSwitcher.default).toLowerCase();
842
841
  const items = data.items.map((item) => {
843
842
  const type = item.class.labels.filter((item2) => item2.language === EN_LANG)[0].value.toUpperCase();
844
843
  let link = `/topics/${item.shortId}`;