@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 +102 -103
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +102 -103
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -51,14 +51,7 @@ var LOG_LEVELS = {
|
|
|
51
51
|
info: 6,
|
|
52
52
|
debug: 7
|
|
53
53
|
};
|
|
54
|
-
var
|
|
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
|
|
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 =
|
|
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.
|
|
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 =
|
|
275
|
+
this.customerConfig = getServerConfig();
|
|
249
276
|
}
|
|
250
277
|
if (!this.publicNextApiUrl) {
|
|
251
|
-
this.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,
|
|
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
|
|
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
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
350
|
-
|
|
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") =>
|
|
383
|
-
|
|
384
|
-
|
|
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
|
|
534
|
-
var
|
|
535
|
-
var transformDocumentTypes = (data) => {
|
|
536
|
+
var import_headers3 = require("next/headers");
|
|
537
|
+
var transformDocumentTypes = async (data) => {
|
|
536
538
|
const labels = [];
|
|
537
|
-
const config = (
|
|
538
|
-
const contentLanguage = (0,
|
|
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
|
|
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 =
|
|
579
|
-
const backEndConfig =
|
|
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
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
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,
|
|
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 = (
|
|
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
|
|
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 = (
|
|
841
|
-
const uiLang = ((0,
|
|
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}`;
|