@c-rex/services 0.1.10 → 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 +107 -112
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -112
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -51,14 +51,6 @@ 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
|
-
};
|
|
62
54
|
var SDK_CONFIG_KEY = "crex-sdk-config";
|
|
63
55
|
var CONTENT_LANG_KEY = "CONTENT_LANG_KEY";
|
|
64
56
|
var UI_LANG_KEY = "UI_LANG_KEY";
|
|
@@ -91,7 +83,7 @@ var OPERATOR_OPTIONS = {
|
|
|
91
83
|
};
|
|
92
84
|
|
|
93
85
|
// ../core/src/requests.ts
|
|
94
|
-
var
|
|
86
|
+
var import_headers2 = require("next/headers");
|
|
95
87
|
|
|
96
88
|
// ../core/src/logger.ts
|
|
97
89
|
var import_winston = __toESM(require("winston"));
|
|
@@ -174,8 +166,24 @@ var GraylogTransport = class extends import_winston_transport2.default {
|
|
|
174
166
|
}
|
|
175
167
|
};
|
|
176
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
|
+
|
|
177
186
|
// ../core/src/logger.ts
|
|
178
|
-
var import_next_cookies = require("@c-rex/utils/next-cookies");
|
|
179
187
|
var CrexLogger = class {
|
|
180
188
|
customerConfig;
|
|
181
189
|
logger;
|
|
@@ -188,13 +196,13 @@ var CrexLogger = class {
|
|
|
188
196
|
async initLogger() {
|
|
189
197
|
try {
|
|
190
198
|
if (!this.customerConfig) {
|
|
191
|
-
this.customerConfig =
|
|
199
|
+
this.customerConfig = getServerConfig();
|
|
192
200
|
}
|
|
193
201
|
if (!this.logger) {
|
|
194
202
|
this.logger = this.createLogger();
|
|
195
203
|
}
|
|
196
204
|
} catch (error) {
|
|
197
|
-
console.
|
|
205
|
+
console.log("Error initializing logger:", error);
|
|
198
206
|
}
|
|
199
207
|
}
|
|
200
208
|
/**
|
|
@@ -230,11 +238,31 @@ var CrexLogger = class {
|
|
|
230
238
|
}
|
|
231
239
|
};
|
|
232
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
|
+
|
|
233
260
|
// ../core/src/requests.ts
|
|
234
261
|
var CrexApi = class {
|
|
235
262
|
customerConfig;
|
|
236
263
|
apiClient;
|
|
237
264
|
logger;
|
|
265
|
+
publicNextApiUrl;
|
|
238
266
|
/**
|
|
239
267
|
* Initializes the API client if it hasn't been initialized yet.
|
|
240
268
|
* Loads customer configuration, creates the axios instance, and initializes the logger.
|
|
@@ -244,16 +272,10 @@ var CrexApi = class {
|
|
|
244
272
|
async initAPI() {
|
|
245
273
|
this.logger = new CrexLogger();
|
|
246
274
|
if (!this.customerConfig) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
this.logger.log({
|
|
252
|
-
level: "error",
|
|
253
|
-
message: `utils.initAPI error: Config cookie not available`
|
|
254
|
-
});
|
|
255
|
-
throw new Error("Config cookie not available");
|
|
256
|
-
}
|
|
275
|
+
this.customerConfig = getServerConfig();
|
|
276
|
+
}
|
|
277
|
+
if (!this.publicNextApiUrl) {
|
|
278
|
+
this.publicNextApiUrl = "http://localhost:3002";
|
|
257
279
|
}
|
|
258
280
|
if (!this.apiClient) {
|
|
259
281
|
this.apiClient = import_axios.default.create({
|
|
@@ -261,36 +283,16 @@ var CrexApi = class {
|
|
|
261
283
|
});
|
|
262
284
|
}
|
|
263
285
|
}
|
|
264
|
-
async getToken() {
|
|
265
|
-
for (let retry = 0; retry < API.MAX_RETRY; retry++) {
|
|
266
|
-
try {
|
|
267
|
-
const response = await fetch(`${this.customerConfig.publicNextApiUrl}/api/token`, {
|
|
268
|
-
method: "POST",
|
|
269
|
-
credentials: "include"
|
|
270
|
-
});
|
|
271
|
-
const { token } = await response.json();
|
|
272
|
-
return token;
|
|
273
|
-
} catch (error) {
|
|
274
|
-
this.logger.log({
|
|
275
|
-
level: "error",
|
|
276
|
-
message: `utils.getToken ${retry + 1}\xBA error when request token. Error: ${error}`
|
|
277
|
-
});
|
|
278
|
-
await new Promise((resolve) => setTimeout(resolve, API.RETRY_DELAY));
|
|
279
|
-
if (retry === API.MAX_RETRY) {
|
|
280
|
-
throw error;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
286
|
async manageToken() {
|
|
286
287
|
try {
|
|
287
288
|
let token = "";
|
|
288
|
-
const hasToken = (0,
|
|
289
|
+
const hasToken = (0, import_headers2.cookies)().get(CREX_TOKEN_HEADER_KEY);
|
|
289
290
|
if (hasToken == void 0 || hasToken.value === null) {
|
|
290
|
-
const tokenResult = await
|
|
291
|
+
const { token: tokenResult } = await getToken();
|
|
291
292
|
if (tokenResult === null) throw new Error("Token is undefined");
|
|
292
293
|
token = tokenResult;
|
|
293
294
|
} else {
|
|
295
|
+
console.log("j\xE1 tinha o token");
|
|
294
296
|
token = hasToken.value;
|
|
295
297
|
}
|
|
296
298
|
return token;
|
|
@@ -321,38 +323,29 @@ var CrexApi = class {
|
|
|
321
323
|
body,
|
|
322
324
|
headers = {}
|
|
323
325
|
}) {
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
for (let retry = 0; retry < API.MAX_RETRY; retry++) {
|
|
335
|
-
try {
|
|
336
|
-
response = await this.apiClient.request({
|
|
337
|
-
url,
|
|
338
|
-
method,
|
|
339
|
-
data: body,
|
|
340
|
-
params,
|
|
341
|
-
headers
|
|
342
|
-
});
|
|
343
|
-
break;
|
|
344
|
-
} catch (error) {
|
|
345
|
-
this.logger.log({
|
|
346
|
-
level: "error",
|
|
347
|
-
message: `API.execute ${retry + 1}\xBA error when request ${url}. Error: ${error}`
|
|
348
|
-
});
|
|
349
|
-
if (retry === API.MAX_RETRY - 1) {
|
|
350
|
-
throw error;
|
|
351
|
-
}
|
|
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}`;
|
|
352
336
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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);
|
|
356
349
|
}
|
|
357
350
|
throw new Error("API.execute error: Failed to retrieve a valid response");
|
|
358
351
|
}
|
|
@@ -384,10 +377,15 @@ var import_clsx = require("clsx");
|
|
|
384
377
|
var import_tailwind_merge = require("tailwind-merge");
|
|
385
378
|
|
|
386
379
|
// ../utils/src/params.ts
|
|
387
|
-
var createParams = (fieldsList, key = "Fields") =>
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
}
|
|
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
|
+
};
|
|
391
389
|
var generateQueryParams = (params) => {
|
|
392
390
|
const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
|
|
393
391
|
return queryParams;
|
|
@@ -535,12 +533,11 @@ var DirectoryNodesService = class extends BaseService {
|
|
|
535
533
|
};
|
|
536
534
|
|
|
537
535
|
// src/transforms/documentTypes.ts
|
|
538
|
-
var
|
|
539
|
-
var
|
|
540
|
-
var transformDocumentTypes = (data) => {
|
|
536
|
+
var import_headers3 = require("next/headers");
|
|
537
|
+
var transformDocumentTypes = async (data) => {
|
|
541
538
|
const labels = [];
|
|
542
|
-
const config = (
|
|
543
|
-
const contentLanguage = (0,
|
|
539
|
+
const config = getClientConfig();
|
|
540
|
+
const contentLanguage = (0, import_headers3.cookies)().get(CONTENT_LANG_KEY)?.value || config.languageSwitcher.default;
|
|
544
541
|
const language = contentLanguage.split("-")[0];
|
|
545
542
|
data.items.forEach((documentItem) => {
|
|
546
543
|
const label = documentItem.labels.find((item) => item.language.toLowerCase() === language.toLowerCase());
|
|
@@ -575,57 +572,57 @@ var DocumentTypesService = class extends BaseService {
|
|
|
575
572
|
};
|
|
576
573
|
|
|
577
574
|
// src/transforms/information.ts
|
|
578
|
-
var
|
|
579
|
-
var import_headers3 = require("next/headers");
|
|
575
|
+
var import_headers4 = require("next/headers");
|
|
580
576
|
var import_logger2 = require("@c-rex/core/logger");
|
|
581
577
|
var transformInformationUnits = async (data) => {
|
|
582
578
|
const logger = new import_logger2.CrexLogger();
|
|
583
|
-
const
|
|
579
|
+
const frontEndConfig = getClientConfig();
|
|
580
|
+
const backEndConfig = getServerConfig();
|
|
584
581
|
const filteredTags = {};
|
|
585
582
|
const items = data.items.map((item) => {
|
|
586
583
|
const type = item.class.labels.filter((item2) => item2.language === EN_LANG)[0].value.toUpperCase();
|
|
587
584
|
const files = getFileRenditions({ renditions: item?.renditions });
|
|
588
585
|
let link = `/topics/${item.shortId}`;
|
|
589
|
-
if (
|
|
586
|
+
if (frontEndConfig.results.articlePageLayout == "BLOG") {
|
|
590
587
|
link = `/blog/${item.shortId}`;
|
|
591
588
|
} else if (type == RESULT_TYPES.DOCUMENT) {
|
|
592
589
|
link = `/documents/${item.shortId}`;
|
|
593
590
|
}
|
|
594
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
|
+
}
|
|
595
597
|
let language = "NO LANGUAGE";
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
language = item.labels[0].language;
|
|
603
|
-
}
|
|
604
|
-
} catch {
|
|
605
|
-
logger.log({
|
|
606
|
-
level: "error",
|
|
607
|
-
message: `No label or title on item ${item.shortId}`
|
|
608
|
-
});
|
|
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);
|
|
609
604
|
}
|
|
610
605
|
return {
|
|
611
606
|
language,
|
|
612
607
|
title,
|
|
613
608
|
type,
|
|
614
609
|
localeType: "",
|
|
610
|
+
revision: item.revision,
|
|
615
611
|
shortId: item.shortId,
|
|
616
|
-
|
|
612
|
+
multipleVersions: versionOf,
|
|
613
|
+
disabled: frontEndConfig.results.disabledResults.includes(type),
|
|
617
614
|
link,
|
|
618
615
|
files
|
|
619
616
|
};
|
|
620
617
|
});
|
|
621
618
|
if (data.tags) {
|
|
622
|
-
const contentLang = ((0,
|
|
619
|
+
const contentLang = ((0, import_headers4.cookies)().get(CONTENT_LANG_KEY)?.value || EN_LANG).toLowerCase();
|
|
623
620
|
const splittedContentLang = contentLang.split("-")[0];
|
|
624
621
|
for (const [key, value] of Object.entries(data.tags)) {
|
|
625
622
|
if (!value || !value.items || value.items.length === 0) {
|
|
626
623
|
continue;
|
|
627
624
|
}
|
|
628
|
-
if (!
|
|
625
|
+
if (!backEndConfig.search.tags.includes(key)) {
|
|
629
626
|
continue;
|
|
630
627
|
}
|
|
631
628
|
const aux = value.items.map((item) => {
|
|
@@ -720,7 +717,6 @@ var InformationUnitsService = class extends BaseService {
|
|
|
720
717
|
const remainFilters = createParams(filters, "Filter");
|
|
721
718
|
const restrictions = createParams(restrict, "Restrict");
|
|
722
719
|
const remainTags = createParams(tags, "Tags");
|
|
723
|
-
const languageParam = `VALUES ?lang { ${languages.map((lang) => `"${lang}"`).join(" ")} } ?s iirds:language ?lang .`;
|
|
724
720
|
const params = [
|
|
725
721
|
{ key: "pageSize", value: "12" },
|
|
726
722
|
{ key: "wildcard", value: wildcard.toLowerCase() },
|
|
@@ -733,6 +729,7 @@ var InformationUnitsService = class extends BaseService {
|
|
|
733
729
|
...restrictions
|
|
734
730
|
];
|
|
735
731
|
if (languages.length > 0) {
|
|
732
|
+
const languageParam = `VALUES ?lang { ${languages.map((lang) => `"${lang}"`).join(" ")} } ?s iirds:language ?lang .`;
|
|
736
733
|
params.push({ key: "sparqlWhere", value: languageParam });
|
|
737
734
|
}
|
|
738
735
|
if (queries.length > 0) {
|
|
@@ -796,10 +793,9 @@ var InformationUnitsService = class extends BaseService {
|
|
|
796
793
|
};
|
|
797
794
|
|
|
798
795
|
// src/language.ts
|
|
799
|
-
var import_next_cookies4 = require("@c-rex/utils/next-cookies");
|
|
800
796
|
var LanguageService = class extends BaseService {
|
|
801
797
|
constructor() {
|
|
802
|
-
const configs = (
|
|
798
|
+
const configs = getClientConfig();
|
|
803
799
|
super(configs.languageSwitcher.endpoint);
|
|
804
800
|
}
|
|
805
801
|
/**
|
|
@@ -836,13 +832,12 @@ var LanguageService = class extends BaseService {
|
|
|
836
832
|
};
|
|
837
833
|
|
|
838
834
|
// src/transforms/topics.ts
|
|
839
|
-
var
|
|
840
|
-
var import_headers4 = require("next/headers");
|
|
835
|
+
var import_headers5 = require("next/headers");
|
|
841
836
|
var import_logger3 = require("@c-rex/core/logger");
|
|
842
837
|
var transformTopics = async (data) => {
|
|
843
838
|
const logger = new import_logger3.CrexLogger();
|
|
844
|
-
const config = (
|
|
845
|
-
const uiLang = ((0,
|
|
839
|
+
const config = getClientConfig();
|
|
840
|
+
const uiLang = ((0, import_headers5.cookies)().get(UI_LANG_KEY)?.value || config.languageSwitcher.default).toLowerCase();
|
|
846
841
|
const items = data.items.map((item) => {
|
|
847
842
|
const type = item.class.labels.filter((item2) => item2.language === EN_LANG)[0].value.toUpperCase();
|
|
848
843
|
let link = `/topics/${item.shortId}`;
|