@c-rex/utils 0.1.8 → 0.1.10

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.d.mts CHANGED
@@ -9,28 +9,9 @@ declare const _generateShaKey: (input: string) => string;
9
9
  * @returns The corresponding country code, or the original language code if not found
10
10
  */
11
11
  declare const getCountryCodeByLang: (lang: string) => string;
12
- declare const getFromCookieString: (cookieString: string, key: string) => string;
13
12
  declare const formatDateToLocale: (date: string, locale: string) => string;
14
13
  declare const createAvailableVersionList: (versions: informationUnitsResponseItem[], articleLang: string, type: string) => AvailableVersionsInterface[];
15
14
 
16
- /**
17
- * Fetches a cookie value from the server API in client-side code.
18
- * @param key - The key of the cookie to retrieve
19
- * @returns A Promise resolving to an object containing the key and value of the cookie
20
- */
21
- declare const getCookie: (key: string) => Promise<{
22
- key: string;
23
- value: string | null;
24
- }>;
25
- /**
26
- * Sets a cookie value through the server API in client-side code.
27
- * @param key - The key of the cookie to set
28
- * @param value - The value to store in the cookie
29
- * @param maxAge - Optional maximum age of the cookie in seconds. Defaults to DEFAULT_COOKIE_LIMIT if not specified.
30
- * @returns A Promise that resolves when the cookie has been set
31
- */
32
- declare const setCookie: (key: string, value: string, maxAge?: number) => Promise<void>;
33
-
34
15
  /**
35
16
  * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.
36
17
  * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy
@@ -65,8 +46,6 @@ declare const createParams: (fieldsList: string[], key?: string) => {
65
46
  */
66
47
  declare const generateQueryParams: (params: QueryParams[]) => string;
67
48
 
68
- declare const manageToken: () => Promise<string | null>;
69
-
70
49
  declare const getFileRenditions: ({ renditions }: {
71
50
  renditions: informationUnitsRenditions[];
72
51
  }) => DocumentsType;
@@ -79,4 +58,4 @@ declare const getFileRenditions: ({ renditions }: {
79
58
  */
80
59
  declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
81
60
 
82
- export { _generateShaKey, call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
61
+ export { _generateShaKey, call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCountryCodeByLang, getFileRenditions };
package/dist/index.d.ts CHANGED
@@ -9,28 +9,9 @@ declare const _generateShaKey: (input: string) => string;
9
9
  * @returns The corresponding country code, or the original language code if not found
10
10
  */
11
11
  declare const getCountryCodeByLang: (lang: string) => string;
12
- declare const getFromCookieString: (cookieString: string, key: string) => string;
13
12
  declare const formatDateToLocale: (date: string, locale: string) => string;
14
13
  declare const createAvailableVersionList: (versions: informationUnitsResponseItem[], articleLang: string, type: string) => AvailableVersionsInterface[];
15
14
 
16
- /**
17
- * Fetches a cookie value from the server API in client-side code.
18
- * @param key - The key of the cookie to retrieve
19
- * @returns A Promise resolving to an object containing the key and value of the cookie
20
- */
21
- declare const getCookie: (key: string) => Promise<{
22
- key: string;
23
- value: string | null;
24
- }>;
25
- /**
26
- * Sets a cookie value through the server API in client-side code.
27
- * @param key - The key of the cookie to set
28
- * @param value - The value to store in the cookie
29
- * @param maxAge - Optional maximum age of the cookie in seconds. Defaults to DEFAULT_COOKIE_LIMIT if not specified.
30
- * @returns A Promise that resolves when the cookie has been set
31
- */
32
- declare const setCookie: (key: string, value: string, maxAge?: number) => Promise<void>;
33
-
34
15
  /**
35
16
  * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.
36
17
  * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy
@@ -65,8 +46,6 @@ declare const createParams: (fieldsList: string[], key?: string) => {
65
46
  */
66
47
  declare const generateQueryParams: (params: QueryParams[]) => string;
67
48
 
68
- declare const manageToken: () => Promise<string | null>;
69
-
70
49
  declare const getFileRenditions: ({ renditions }: {
71
50
  renditions: informationUnitsRenditions[];
72
51
  }) => DocumentsType;
@@ -79,4 +58,4 @@ declare const getFileRenditions: ({ renditions }: {
79
58
  */
80
59
  declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
81
60
 
82
- export { _generateShaKey, call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
61
+ export { _generateShaKey, call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCountryCodeByLang, getFileRenditions };
package/dist/index.js CHANGED
@@ -29,12 +29,8 @@ __export(index_exports, {
29
29
  generateBreadcrumbItems: () => generateBreadcrumbItems,
30
30
  generateQueryParams: () => generateQueryParams,
31
31
  generateTreeOfContent: () => generateTreeOfContent,
32
- getCookie: () => getCookie,
33
32
  getCountryCodeByLang: () => getCountryCodeByLang,
34
- getFileRenditions: () => getFileRenditions,
35
- getFromCookieString: () => getFromCookieString,
36
- manageToken: () => manageToken,
37
- setCookie: () => setCookie
33
+ getFileRenditions: () => getFileRenditions
38
34
  });
39
35
  module.exports = __toCommonJS(index_exports);
40
36
 
@@ -43,8 +39,7 @@ var FLAGS_BY_LANG = {
43
39
  "en": "US",
44
40
  "de": "DE"
45
41
  };
46
- var DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1e3;
47
- var CREX_TOKEN_HEADER_KEY = "crex-token";
42
+ var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
48
43
 
49
44
  // src/utils.ts
50
45
  var _generateShaKey = (input) => {
@@ -63,16 +58,6 @@ var getCountryCodeByLang = (lang) => {
63
58
  const country = FLAGS_BY_LANG[lang];
64
59
  return country;
65
60
  };
66
- var getFromCookieString = (cookieString, key) => {
67
- const cookies = cookieString.split(";");
68
- for (const cookie of cookies) {
69
- const [cookieKey, cookieValue] = cookie.trim().split("=");
70
- if (cookieKey === key) {
71
- return cookieValue;
72
- }
73
- }
74
- return "";
75
- };
76
61
  var formatDateToLocale = (date, locale) => {
77
62
  if (typeof date !== "string" || !date) {
78
63
  return date;
@@ -101,66 +86,6 @@ var createAvailableVersionList = (versions, articleLang, type) => {
101
86
  return availableVersions;
102
87
  };
103
88
 
104
- // src/call.ts
105
- var call = async (method, params) => {
106
- const shaKey = _generateShaKey(JSON.stringify({ method, params }));
107
- const cache = localStorage.getItem(shaKey);
108
- if (cache !== null) {
109
- const { data, expireDate } = JSON.parse(cache);
110
- if (new Date(expireDate) > /* @__PURE__ */ new Date()) {
111
- return JSON.parse(data);
112
- } else {
113
- localStorage.removeItem(shaKey);
114
- }
115
- }
116
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/rpc`, {
117
- method: "POST",
118
- headers: { "Content-Type": "application/json" },
119
- body: JSON.stringify({ method, params }),
120
- credentials: "include"
121
- });
122
- const json = await res.json();
123
- if (!res.ok) throw new Error(json.error || "Unknown error");
124
- const today = /* @__PURE__ */ new Date();
125
- const result = {
126
- data: JSON.stringify(json.data),
127
- expireDate: new Date(today.getTime() + 1e3 * 60 * 60)
128
- };
129
- localStorage.setItem(shaKey, JSON.stringify(result));
130
- return json.data;
131
- };
132
-
133
- // src/memory.ts
134
- var getCookie = async (key) => {
135
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies?key=${key}`);
136
- if (!res.ok) {
137
- return { key, value: null };
138
- }
139
- const json = await res.json();
140
- return json;
141
- };
142
- var setCookie = async (key, value, maxAge) => {
143
- try {
144
- if (maxAge === void 0) {
145
- maxAge = DEFAULT_COOKIE_LIMIT;
146
- }
147
- await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies`, {
148
- method: "POST",
149
- credentials: "include",
150
- body: JSON.stringify({
151
- key,
152
- value,
153
- maxAge
154
- })
155
- });
156
- } catch (error) {
157
- call("CrexLogger.log", {
158
- level: "error",
159
- message: `utils.setCookie error: ${error}`
160
- });
161
- }
162
- };
163
-
164
89
  // src/breadcrumbs.ts
165
90
  var generateBreadcrumbItems = (treeOfContent) => {
166
91
  const result = [];
@@ -180,6 +105,24 @@ function cn(...inputs) {
180
105
  return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
181
106
  }
182
107
 
108
+ // src/call.ts
109
+ var call = async (method, params) => {
110
+ const res = await fetch(`/api/rpc`, {
111
+ method: "POST",
112
+ headers: { "Content-Type": "application/json" },
113
+ body: JSON.stringify({ method, params }),
114
+ credentials: "include"
115
+ });
116
+ const json = await res.json();
117
+ if (!res.ok) throw new Error(json.error || "Unknown error");
118
+ const today = /* @__PURE__ */ new Date();
119
+ const result = {
120
+ data: JSON.stringify(json.data),
121
+ expireDate: new Date(today.getTime() + 1e3 * 60 * 60)
122
+ };
123
+ return json.data;
124
+ };
125
+
183
126
  // src/treeOfContent.ts
184
127
  var itemCache = /* @__PURE__ */ new Map();
185
128
  async function getItemCached(id) {
@@ -241,55 +184,10 @@ var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
241
184
  value: item
242
185
  }));
243
186
  var generateQueryParams = (params) => {
244
- const queryParams = params.map(
245
- (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
246
- ).join("&");
187
+ const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
247
188
  return queryParams;
248
189
  };
249
190
 
250
- // src/token.ts
251
- var updateToken = async () => {
252
- try {
253
- const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/token`, {
254
- method: "POST",
255
- credentials: "include"
256
- });
257
- const cookies = response.headers.get("set-cookie");
258
- if (cookies === null) return null;
259
- const aux = cookies.split(`${CREX_TOKEN_HEADER_KEY}=`);
260
- if (aux.length == 0) return null;
261
- const token = aux[1].split(";")[0];
262
- if (token === void 0) throw new Error("Token is undefined");
263
- return token;
264
- } catch (error) {
265
- call("CrexLogger.log", {
266
- level: "error",
267
- message: `utils.updateToken error: ${error}`
268
- });
269
- return null;
270
- }
271
- };
272
- var manageToken = async () => {
273
- try {
274
- const hasToken = await getCookie(CREX_TOKEN_HEADER_KEY);
275
- let token = "";
276
- if (!hasToken || hasToken.value === null) {
277
- const tokenResult = await updateToken();
278
- if (tokenResult === null) throw new Error("Token is undefined");
279
- token = tokenResult;
280
- } else {
281
- token = hasToken.value;
282
- }
283
- return token;
284
- } catch (error) {
285
- call("CrexLogger.log", {
286
- level: "error",
287
- message: `utils.manageToken error: ${error}`
288
- });
289
- return null;
290
- }
291
- };
292
-
293
191
  // src/renditions.ts
294
192
  var getFileRenditions = ({ renditions }) => {
295
193
  if (renditions == void 0 || renditions.length == 0) {
@@ -326,11 +224,7 @@ var getFileRenditions = ({ renditions }) => {
326
224
  generateBreadcrumbItems,
327
225
  generateQueryParams,
328
226
  generateTreeOfContent,
329
- getCookie,
330
227
  getCountryCodeByLang,
331
- getFileRenditions,
332
- getFromCookieString,
333
- manageToken,
334
- setCookie
228
+ getFileRenditions
335
229
  });
336
230
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../constants/src/index.ts","../src/utils.ts","../src/call.ts","../src/memory.ts","../src/breadcrumbs.ts","../src/classMerge.ts","../src/treeOfContent.ts","../src/params.ts","../src/token.ts","../src/renditions.ts"],"sourcesContent":["export * from './utils';\nexport * from './memory';\nexport * from './breadcrumbs';\nexport * from './classMerge';\nexport * from './treeOfContent';\nexport * from './params';\nexport * from './token';\nexport * from './renditions';\nexport * from './call';","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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\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};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1000; // 7 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\n\nexport const _generateShaKey = (input: string): string => {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n hash = (hash << 5) - hash + input.charCodeAt(i);\n hash |= 0;\n }\n return Math.abs(hash).toString(16);\n}\n\n/**\n * Retrieves the country code associated with a given language code.\n * @param lang - The language code to look up (e.g., \"en-US\")\n * @returns The corresponding country code, or the original language code if not found\n */\nexport const getCountryCodeByLang = (lang: string): string => {\n const mappedKeys = Object.keys(FLAGS_BY_LANG);\n\n if (!mappedKeys.includes(lang)) {\n return lang\n }\n\n type LangKey = keyof typeof FLAGS_BY_LANG;\n const country = FLAGS_BY_LANG[lang as LangKey]\n\n return country\n}\n\nexport const getFromCookieString = (cookieString: string, key: string): string => {\n const cookies = cookieString.split(';')\n\n for (const cookie of cookies) {\n const [cookieKey, cookieValue] = cookie.trim().split('=')\n\n if (cookieKey === key) {\n return cookieValue as string;\n }\n }\n\n return ''\n}\n\nexport const formatDateToLocale = (date: string, locale: string): string => {\n if (typeof date !== 'string' || !date) {\n return date;\n }\n\n const dateAux = new Date(date);\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'long',\n year: 'numeric'\n }).format(dateAux);\n}\n\nexport const createAvailableVersionList = (\n versions: informationUnitsResponseItem[],\n articleLang: string,\n type: string\n): AvailableVersionsInterface[] => {\n\n const availableVersions = versions.map(item => {\n return {\n shortId: item.shortId,\n active: item.language === articleLang,\n lang: item.language,\n country: item.language.split(\"-\")[1],\n link: `/${type}/${item.shortId}`,\n }\n }).sort((a, b) => {\n if (a.lang < b.lang) return -1;\n if (a.lang > b.lang) return 1;\n return 0;\n }) as AvailableVersionsInterface[];\n\n return availableVersions;\n}","import { _generateShaKey } from \"./utils\"\n\n/**\n * Makes an asynchronous RPC API call to the server.\n * @param method - The RPC method name to call\n * @param params - Optional parameters to pass to the method\n * @returns A Promise resolving to the response data of type T\n */\nexport const call = async<T = unknown>(method: string, params?: any): Promise<T> => {\n type result = {\n data: string,\n expireDate: Date,\n }\n\n const shaKey = _generateShaKey(JSON.stringify({ method, params }))\n const cache = localStorage.getItem(shaKey)\n\n if (cache !== null) {\n const { data, expireDate } = JSON.parse(cache) as result\n\n if (new Date(expireDate) > new Date()) {\n return JSON.parse(data) as T\n } else {\n localStorage.removeItem(shaKey)\n }\n }\n\n const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/rpc`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ method, params }),\n credentials: 'include',\n });\n\n const json = await res.json();\n\n if (!res.ok) throw new Error(json.error || 'Unknown error');\n\n const today = new Date()\n const result: result = {\n data: JSON.stringify(json.data),\n expireDate: new Date(today.getTime() + 1000 * 60 * 60),\n }\n\n localStorage.setItem(shaKey, JSON.stringify(result))\n\n return json.data;\n}","import { DEFAULT_COOKIE_LIMIT } from \"@c-rex/constants\";\nimport { call } from \"./call\";\n\n/**\n * Fetches a cookie value from the server API in client-side code.\n * @param key - The key of the cookie to retrieve\n * @returns A Promise resolving to an object containing the key and value of the cookie\n */\nexport const getCookie = async (key: string): Promise<{ key: string, value: string | null }> => {\n const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies?key=${key}`);\n\n if (!res.ok) {\n return { key: key, value: null };\n }\n const json = await res.json();\n\n return json;\n}\n\n/**\n * Sets a cookie value through the server API in client-side code.\n * @param key - The key of the cookie to set\n * @param value - The value to store in the cookie\n * @param maxAge - Optional maximum age of the cookie in seconds. Defaults to DEFAULT_COOKIE_LIMIT if not specified.\n * @returns A Promise that resolves when the cookie has been set\n */\nexport const setCookie = async (key: string, value: string, maxAge?: number): Promise<void> => {\n try {\n\n if (maxAge === undefined) {\n maxAge = DEFAULT_COOKIE_LIMIT;\n }\n\n await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies`, {\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n key: key,\n value: value,\n maxAge: maxAge,\n }),\n });\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.setCookie error: ${error}`\n });\n }\n}\n\n","import { TreeOfContent } from \"@c-rex/interfaces\";\n\n/**\n * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.\n * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy\n * @returns A flattened array of active TreeOfContent items to be used as breadcrumbs\n */\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges multiple class values into a single string using clsx and tailwind-merge.\n * Useful for conditionally applying Tailwind CSS classes.\n * @param inputs - Any number of class values (strings, objects, arrays, etc.)\n * @returns A merged string of class names optimized for Tailwind CSS\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { DirectoryNodes, DefaultCrexDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\n\nconst itemCache = new Map<string, DirectoryNodes>();\n\nasync function getItemCached(id: string): Promise<DirectoryNodes> {\n if (itemCache.has(id)) return itemCache.get(id)!;\n\n const data = await call<DirectoryNodes>(\"DirectoryNodesService.getItem\", id);\n\n itemCache.set(id, data);\n\n return data;\n}\n\nexport const generateTreeOfContent = async (\n directoryNodes: DirectoryNodes[]\n): Promise<TreeOfContent[]> => {\n if (!directoryNodes?.length) return [];\n\n let response = await getItemCached(directoryNodes[0].shortId);\n let result = await getChildrenInfo(response.childNodes);\n\n while (response.parents?.[0]) {\n if (!response.labels?.[0] || !response.informationUnits?.[0]) {\n return result;\n }\n\n const infoId = response.informationUnits[0].shortId;\n\n const parentNode: TreeOfContent = {\n active: true,\n label: response.labels[0].value,\n id: response.shortId,\n link: `/topics/${infoId}`,\n children: result,\n };\n\n response = await getItemCached(response.parents[0].shortId);\n result = await getChildrenInfo(response.childNodes, parentNode);\n }\n\n return result;\n};\n\nasync function getChildrenInfo(\n childNodes: DefaultCrexDirectories[] | undefined,\n childItem?: TreeOfContent\n): Promise<TreeOfContent[]> {\n if (!childNodes?.length) return [];\n\n const validNodes = childNodes.filter((n) => n.labels?.[0]);\n\n const responses = await Promise.all(\n validNodes.map((n) =>\n getItemCached(n.shortId).catch((err) => {\n console.error(\"Erro em\", n.shortId, err);\n return undefined;\n })\n )\n );\n\n return responses.reduce<TreeOfContent[]>((acc, resp, idx) => {\n if (!resp?.informationUnits?.[0]) return acc;\n\n const node = validNodes[idx];\n const treeItem: TreeOfContent = {\n active: false,\n label: node.labels![0].value,\n link: `/topics/${resp.informationUnits[0].shortId}`,\n id: node.shortId,\n children: [],\n };\n\n acc.push(node.shortId === childItem?.id ? childItem : treeItem);\n return acc;\n }, []);\n}\n","import { QueryParams } from '@c-rex/types';\n\n/**\n * Creates an array of parameter objects from a list of field values.\n * @param fieldsList - Array of field values to transform into parameter objects\n * @param key - The key to use for each parameter object (defaults to \"Fields\")\n * @returns An array of objects with key-value pairs\n */\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\n/**\n * Generates a URL query string from an array of parameter objects.\n * @param params - Array of QueryParams objects containing key-value pairs\n * @returns A URL-encoded query string\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","import { CREX_TOKEN_HEADER_KEY } from \"@c-rex/constants\";\nimport { call } from \"./call\";\nimport { getCookie } from \"./memory\";\n\nconst updateToken = async (): Promise<string | null> => {\n try {\n const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/token`, {\n method: 'POST',\n credentials: 'include',\n });\n\n const cookies = response.headers.get(\"set-cookie\");\n if (cookies === null) return null\n\n const aux = cookies.split(`${CREX_TOKEN_HEADER_KEY}=`);\n if (aux.length == 0) return null\n\n const token = aux[1].split(\";\")[0];\n if (token === undefined) throw new Error(\"Token is undefined\");\n\n return token;\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.updateToken error: ${error}`\n });\n return null\n }\n}\n\nexport const manageToken = async (): Promise<string | null> => {\n try {\n const hasToken = await getCookie(CREX_TOKEN_HEADER_KEY);\n\n let token = \"\";\n if (!hasToken || hasToken.value === null) {\n const tokenResult = await updateToken();\n\n if (tokenResult === null) throw new Error(\"Token is undefined\");\n\n token = tokenResult;\n } else {\n token = hasToken.value;\n }\n\n return token;\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.manageToken error: ${error}`\n });\n\n return null\n }\n}","import { informationUnitsRenditions } from \"@c-rex/interfaces\";\nimport { DocumentsType } from \"@c-rex/types\";\n\n\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): DocumentsType => {\n if (renditions == undefined || renditions.length == 0) {\n return {};\n }\n\n const filteredRenditions = renditions.filter(\n (item) => item.format != \"application/xhtml+xml\" && item.format != \"application/json\" && item.format != \"application/llm+xml\"\n );\n\n if (filteredRenditions.length == 0 || filteredRenditions[0] == undefined) {\n return {};\n }\n\n const result: {\n [key: string]: {\n view: string;\n download: string;\n }\n } = {}\n\n filteredRenditions.forEach((item) => {\n const key = item.format\n\n if (result[key] == undefined) {\n result[key] = {\n view: \"\",\n download: \"\"\n }\n }\n\n result[key].download = item.links.filter((link) => link.rel == \"download\")[0]?.href\n result[key].view = item.links.filter((link) => link.rel == \"view\")[0]?.href\n })\n\n return result\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../../constants/src/index.ts","../src/utils.ts","../src/breadcrumbs.ts","../src/classMerge.ts","../src/call.ts","../src/treeOfContent.ts","../src/params.ts","../src/renditions.ts"],"sourcesContent":["export * from './utils';\nexport * from './breadcrumbs';\nexport * from './classMerge';\nexport * from './treeOfContent';\nexport * from './params';\nexport * from './renditions';\nexport * from './call';","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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\n\nexport const _generateShaKey = (input: string): string => {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n hash = (hash << 5) - hash + input.charCodeAt(i);\n hash |= 0;\n }\n return Math.abs(hash).toString(16);\n}\n\n/**\n * Retrieves the country code associated with a given language code.\n * @param lang - The language code to look up (e.g., \"en-US\")\n * @returns The corresponding country code, or the original language code if not found\n */\nexport const getCountryCodeByLang = (lang: string): string => {\n const mappedKeys = Object.keys(FLAGS_BY_LANG);\n\n if (!mappedKeys.includes(lang)) {\n return lang\n }\n\n type LangKey = keyof typeof FLAGS_BY_LANG;\n const country = FLAGS_BY_LANG[lang as LangKey]\n\n return country\n}\n\nexport const formatDateToLocale = (date: string, locale: string): string => {\n if (typeof date !== 'string' || !date) {\n return date;\n }\n\n const dateAux = new Date(date);\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'long',\n year: 'numeric'\n }).format(dateAux);\n}\n\nexport const createAvailableVersionList = (\n versions: informationUnitsResponseItem[],\n articleLang: string,\n type: string\n): AvailableVersionsInterface[] => {\n\n const availableVersions = versions.map(item => {\n return {\n shortId: item.shortId,\n active: item.language === articleLang,\n lang: item.language,\n country: item.language.split(\"-\")[1],\n link: `/${type}/${item.shortId}`,\n }\n }).sort((a, b) => {\n if (a.lang < b.lang) return -1;\n if (a.lang > b.lang) return 1;\n return 0;\n }) as AvailableVersionsInterface[];\n\n return availableVersions;\n}","import { TreeOfContent } from \"@c-rex/interfaces\";\n\n/**\n * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.\n * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy\n * @returns A flattened array of active TreeOfContent items to be used as breadcrumbs\n */\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges multiple class values into a single string using clsx and tailwind-merge.\n * Useful for conditionally applying Tailwind CSS classes.\n * @param inputs - Any number of class values (strings, objects, arrays, etc.)\n * @returns A merged string of class names optimized for Tailwind CSS\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Makes an asynchronous RPC API call to the server.\n * @param method - The RPC method name to call\n * @param params - Optional parameters to pass to the method\n * @returns A Promise resolving to the response data of type T\n */\nexport const call = async<T = unknown>(method: string, params?: any): Promise<T> => {\n type result = {\n data: string,\n expireDate: Date,\n }\n\n const res = await fetch(`/api/rpc`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ method, params }),\n credentials: 'include',\n });\n\n const json = await res.json();\n\n if (!res.ok) throw new Error(json.error || 'Unknown error');\n\n const today = new Date()\n const result: result = {\n data: JSON.stringify(json.data),\n expireDate: new Date(today.getTime() + 1000 * 60 * 60),\n }\n\n return json.data;\n}","import { DirectoryNodes, DefaultCrexDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\n\nconst itemCache = new Map<string, DirectoryNodes>();\n\nasync function getItemCached(id: string): Promise<DirectoryNodes> {\n if (itemCache.has(id)) return itemCache.get(id)!;\n\n const data = await call<DirectoryNodes>(\"DirectoryNodesService.getItem\", id);\n\n itemCache.set(id, data);\n\n return data;\n}\n\nexport const generateTreeOfContent = async (\n directoryNodes: DirectoryNodes[]\n): Promise<TreeOfContent[]> => {\n if (!directoryNodes?.length) return [];\n\n let response = await getItemCached(directoryNodes[0].shortId);\n let result = await getChildrenInfo(response.childNodes);\n\n while (response.parents?.[0]) {\n if (!response.labels?.[0] || !response.informationUnits?.[0]) {\n return result;\n }\n\n const infoId = response.informationUnits[0].shortId;\n\n const parentNode: TreeOfContent = {\n active: true,\n label: response.labels[0].value,\n id: response.shortId,\n link: `/topics/${infoId}`,\n children: result,\n };\n\n response = await getItemCached(response.parents[0].shortId);\n result = await getChildrenInfo(response.childNodes, parentNode);\n }\n\n return result;\n};\n\nasync function getChildrenInfo(\n childNodes: DefaultCrexDirectories[] | undefined,\n childItem?: TreeOfContent\n): Promise<TreeOfContent[]> {\n if (!childNodes?.length) return [];\n\n const validNodes = childNodes.filter((n) => n.labels?.[0]);\n\n const responses = await Promise.all(\n validNodes.map((n) =>\n getItemCached(n.shortId).catch((err) => {\n console.error(\"Erro em\", n.shortId, err);\n return undefined;\n })\n )\n );\n\n return responses.reduce<TreeOfContent[]>((acc, resp, idx) => {\n if (!resp?.informationUnits?.[0]) return acc;\n\n const node = validNodes[idx];\n const treeItem: TreeOfContent = {\n active: false,\n label: node.labels![0].value,\n link: `/topics/${resp.informationUnits[0].shortId}`,\n id: node.shortId,\n children: [],\n };\n\n acc.push(node.shortId === childItem?.id ? childItem : treeItem);\n return acc;\n }, []);\n}\n","import { QueryParams } from '@c-rex/types';\n\n/**\n * Creates an array of parameter objects from a list of field values.\n * @param fieldsList - Array of field values to transform into parameter objects\n * @param key - The key to use for each parameter object (defaults to \"Fields\")\n * @returns An array of objects with key-value pairs\n */\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\n/**\n * Generates a URL query string from an array of parameter objects.\n * @param params - Array of QueryParams objects containing key-value pairs\n * @returns A URL-encoded query string\n */\nexport const generateQueryParams = (params: QueryParams[]): string => {\n const queryParams = params\n .map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`)\n .join(\"&\");\n return queryParams;\n};\n","import { informationUnitsRenditions } from \"@c-rex/interfaces\";\nimport { DocumentsType } from \"@c-rex/types\";\n\n\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): DocumentsType => {\n if (renditions == undefined || renditions.length == 0) {\n return {};\n }\n\n const filteredRenditions = renditions.filter(\n (item) => item.format != \"application/xhtml+xml\" && item.format != \"application/json\" && item.format != \"application/llm+xml\"\n );\n\n if (filteredRenditions.length == 0 || filteredRenditions[0] == undefined) {\n return {};\n }\n\n const result: {\n [key: string]: {\n view: string;\n download: string;\n }\n } = {}\n\n filteredRenditions.forEach((item) => {\n const key = item.format\n\n if (result[key] == undefined) {\n result[key] = {\n view: \"\",\n download: \"\"\n }\n }\n\n result[key].download = item.links.filter((link) => link.rel == \"download\")[0]?.href\n result[key].view = item.links.filter((link) => link.rel == \"view\")[0]?.href\n })\n\n return result\n}"],"mappings":"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","names":[]}
package/dist/index.mjs CHANGED
@@ -3,8 +3,7 @@ var FLAGS_BY_LANG = {
3
3
  "en": "US",
4
4
  "de": "DE"
5
5
  };
6
- var DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1e3;
7
- var CREX_TOKEN_HEADER_KEY = "crex-token";
6
+ var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
8
7
 
9
8
  // src/utils.ts
10
9
  var _generateShaKey = (input) => {
@@ -23,16 +22,6 @@ var getCountryCodeByLang = (lang) => {
23
22
  const country = FLAGS_BY_LANG[lang];
24
23
  return country;
25
24
  };
26
- var getFromCookieString = (cookieString, key) => {
27
- const cookies = cookieString.split(";");
28
- for (const cookie of cookies) {
29
- const [cookieKey, cookieValue] = cookie.trim().split("=");
30
- if (cookieKey === key) {
31
- return cookieValue;
32
- }
33
- }
34
- return "";
35
- };
36
25
  var formatDateToLocale = (date, locale) => {
37
26
  if (typeof date !== "string" || !date) {
38
27
  return date;
@@ -61,66 +50,6 @@ var createAvailableVersionList = (versions, articleLang, type) => {
61
50
  return availableVersions;
62
51
  };
63
52
 
64
- // src/call.ts
65
- var call = async (method, params) => {
66
- const shaKey = _generateShaKey(JSON.stringify({ method, params }));
67
- const cache = localStorage.getItem(shaKey);
68
- if (cache !== null) {
69
- const { data, expireDate } = JSON.parse(cache);
70
- if (new Date(expireDate) > /* @__PURE__ */ new Date()) {
71
- return JSON.parse(data);
72
- } else {
73
- localStorage.removeItem(shaKey);
74
- }
75
- }
76
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/rpc`, {
77
- method: "POST",
78
- headers: { "Content-Type": "application/json" },
79
- body: JSON.stringify({ method, params }),
80
- credentials: "include"
81
- });
82
- const json = await res.json();
83
- if (!res.ok) throw new Error(json.error || "Unknown error");
84
- const today = /* @__PURE__ */ new Date();
85
- const result = {
86
- data: JSON.stringify(json.data),
87
- expireDate: new Date(today.getTime() + 1e3 * 60 * 60)
88
- };
89
- localStorage.setItem(shaKey, JSON.stringify(result));
90
- return json.data;
91
- };
92
-
93
- // src/memory.ts
94
- var getCookie = async (key) => {
95
- const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies?key=${key}`);
96
- if (!res.ok) {
97
- return { key, value: null };
98
- }
99
- const json = await res.json();
100
- return json;
101
- };
102
- var setCookie = async (key, value, maxAge) => {
103
- try {
104
- if (maxAge === void 0) {
105
- maxAge = DEFAULT_COOKIE_LIMIT;
106
- }
107
- await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies`, {
108
- method: "POST",
109
- credentials: "include",
110
- body: JSON.stringify({
111
- key,
112
- value,
113
- maxAge
114
- })
115
- });
116
- } catch (error) {
117
- call("CrexLogger.log", {
118
- level: "error",
119
- message: `utils.setCookie error: ${error}`
120
- });
121
- }
122
- };
123
-
124
53
  // src/breadcrumbs.ts
125
54
  var generateBreadcrumbItems = (treeOfContent) => {
126
55
  const result = [];
@@ -140,6 +69,24 @@ function cn(...inputs) {
140
69
  return twMerge(clsx(inputs));
141
70
  }
142
71
 
72
+ // src/call.ts
73
+ var call = async (method, params) => {
74
+ const res = await fetch(`/api/rpc`, {
75
+ method: "POST",
76
+ headers: { "Content-Type": "application/json" },
77
+ body: JSON.stringify({ method, params }),
78
+ credentials: "include"
79
+ });
80
+ const json = await res.json();
81
+ if (!res.ok) throw new Error(json.error || "Unknown error");
82
+ const today = /* @__PURE__ */ new Date();
83
+ const result = {
84
+ data: JSON.stringify(json.data),
85
+ expireDate: new Date(today.getTime() + 1e3 * 60 * 60)
86
+ };
87
+ return json.data;
88
+ };
89
+
143
90
  // src/treeOfContent.ts
144
91
  var itemCache = /* @__PURE__ */ new Map();
145
92
  async function getItemCached(id) {
@@ -201,55 +148,10 @@ var createParams = (fieldsList, key = "Fields") => fieldsList.map((item) => ({
201
148
  value: item
202
149
  }));
203
150
  var generateQueryParams = (params) => {
204
- const queryParams = params.map(
205
- (param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`
206
- ).join("&");
151
+ const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
207
152
  return queryParams;
208
153
  };
209
154
 
210
- // src/token.ts
211
- var updateToken = async () => {
212
- try {
213
- const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/token`, {
214
- method: "POST",
215
- credentials: "include"
216
- });
217
- const cookies = response.headers.get("set-cookie");
218
- if (cookies === null) return null;
219
- const aux = cookies.split(`${CREX_TOKEN_HEADER_KEY}=`);
220
- if (aux.length == 0) return null;
221
- const token = aux[1].split(";")[0];
222
- if (token === void 0) throw new Error("Token is undefined");
223
- return token;
224
- } catch (error) {
225
- call("CrexLogger.log", {
226
- level: "error",
227
- message: `utils.updateToken error: ${error}`
228
- });
229
- return null;
230
- }
231
- };
232
- var manageToken = async () => {
233
- try {
234
- const hasToken = await getCookie(CREX_TOKEN_HEADER_KEY);
235
- let token = "";
236
- if (!hasToken || hasToken.value === null) {
237
- const tokenResult = await updateToken();
238
- if (tokenResult === null) throw new Error("Token is undefined");
239
- token = tokenResult;
240
- } else {
241
- token = hasToken.value;
242
- }
243
- return token;
244
- } catch (error) {
245
- call("CrexLogger.log", {
246
- level: "error",
247
- message: `utils.manageToken error: ${error}`
248
- });
249
- return null;
250
- }
251
- };
252
-
253
155
  // src/renditions.ts
254
156
  var getFileRenditions = ({ renditions }) => {
255
157
  if (renditions == void 0 || renditions.length == 0) {
@@ -285,11 +187,7 @@ export {
285
187
  generateBreadcrumbItems,
286
188
  generateQueryParams,
287
189
  generateTreeOfContent,
288
- getCookie,
289
190
  getCountryCodeByLang,
290
- getFileRenditions,
291
- getFromCookieString,
292
- manageToken,
293
- setCookie
191
+ getFileRenditions
294
192
  };
295
193
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../constants/src/index.ts","../src/utils.ts","../src/call.ts","../src/memory.ts","../src/breadcrumbs.ts","../src/classMerge.ts","../src/treeOfContent.ts","../src/params.ts","../src/token.ts","../src/renditions.ts"],"sourcesContent":["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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\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};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1000; // 7 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\n\nexport const _generateShaKey = (input: string): string => {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n hash = (hash << 5) - hash + input.charCodeAt(i);\n hash |= 0;\n }\n return Math.abs(hash).toString(16);\n}\n\n/**\n * Retrieves the country code associated with a given language code.\n * @param lang - The language code to look up (e.g., \"en-US\")\n * @returns The corresponding country code, or the original language code if not found\n */\nexport const getCountryCodeByLang = (lang: string): string => {\n const mappedKeys = Object.keys(FLAGS_BY_LANG);\n\n if (!mappedKeys.includes(lang)) {\n return lang\n }\n\n type LangKey = keyof typeof FLAGS_BY_LANG;\n const country = FLAGS_BY_LANG[lang as LangKey]\n\n return country\n}\n\nexport const getFromCookieString = (cookieString: string, key: string): string => {\n const cookies = cookieString.split(';')\n\n for (const cookie of cookies) {\n const [cookieKey, cookieValue] = cookie.trim().split('=')\n\n if (cookieKey === key) {\n return cookieValue as string;\n }\n }\n\n return ''\n}\n\nexport const formatDateToLocale = (date: string, locale: string): string => {\n if (typeof date !== 'string' || !date) {\n return date;\n }\n\n const dateAux = new Date(date);\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'long',\n year: 'numeric'\n }).format(dateAux);\n}\n\nexport const createAvailableVersionList = (\n versions: informationUnitsResponseItem[],\n articleLang: string,\n type: string\n): AvailableVersionsInterface[] => {\n\n const availableVersions = versions.map(item => {\n return {\n shortId: item.shortId,\n active: item.language === articleLang,\n lang: item.language,\n country: item.language.split(\"-\")[1],\n link: `/${type}/${item.shortId}`,\n }\n }).sort((a, b) => {\n if (a.lang < b.lang) return -1;\n if (a.lang > b.lang) return 1;\n return 0;\n }) as AvailableVersionsInterface[];\n\n return availableVersions;\n}","import { _generateShaKey } from \"./utils\"\n\n/**\n * Makes an asynchronous RPC API call to the server.\n * @param method - The RPC method name to call\n * @param params - Optional parameters to pass to the method\n * @returns A Promise resolving to the response data of type T\n */\nexport const call = async<T = unknown>(method: string, params?: any): Promise<T> => {\n type result = {\n data: string,\n expireDate: Date,\n }\n\n const shaKey = _generateShaKey(JSON.stringify({ method, params }))\n const cache = localStorage.getItem(shaKey)\n\n if (cache !== null) {\n const { data, expireDate } = JSON.parse(cache) as result\n\n if (new Date(expireDate) > new Date()) {\n return JSON.parse(data) as T\n } else {\n localStorage.removeItem(shaKey)\n }\n }\n\n const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/rpc`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ method, params }),\n credentials: 'include',\n });\n\n const json = await res.json();\n\n if (!res.ok) throw new Error(json.error || 'Unknown error');\n\n const today = new Date()\n const result: result = {\n data: JSON.stringify(json.data),\n expireDate: new Date(today.getTime() + 1000 * 60 * 60),\n }\n\n localStorage.setItem(shaKey, JSON.stringify(result))\n\n return json.data;\n}","import { DEFAULT_COOKIE_LIMIT } from \"@c-rex/constants\";\nimport { call } from \"./call\";\n\n/**\n * Fetches a cookie value from the server API in client-side code.\n * @param key - The key of the cookie to retrieve\n * @returns A Promise resolving to an object containing the key and value of the cookie\n */\nexport const getCookie = async (key: string): Promise<{ key: string, value: string | null }> => {\n const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies?key=${key}`);\n\n if (!res.ok) {\n return { key: key, value: null };\n }\n const json = await res.json();\n\n return json;\n}\n\n/**\n * Sets a cookie value through the server API in client-side code.\n * @param key - The key of the cookie to set\n * @param value - The value to store in the cookie\n * @param maxAge - Optional maximum age of the cookie in seconds. Defaults to DEFAULT_COOKIE_LIMIT if not specified.\n * @returns A Promise that resolves when the cookie has been set\n */\nexport const setCookie = async (key: string, value: string, maxAge?: number): Promise<void> => {\n try {\n\n if (maxAge === undefined) {\n maxAge = DEFAULT_COOKIE_LIMIT;\n }\n\n await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/cookies`, {\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n key: key,\n value: value,\n maxAge: maxAge,\n }),\n });\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.setCookie error: ${error}`\n });\n }\n}\n\n","import { TreeOfContent } from \"@c-rex/interfaces\";\n\n/**\n * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.\n * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy\n * @returns A flattened array of active TreeOfContent items to be used as breadcrumbs\n */\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges multiple class values into a single string using clsx and tailwind-merge.\n * Useful for conditionally applying Tailwind CSS classes.\n * @param inputs - Any number of class values (strings, objects, arrays, etc.)\n * @returns A merged string of class names optimized for Tailwind CSS\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { DirectoryNodes, DefaultCrexDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\n\nconst itemCache = new Map<string, DirectoryNodes>();\n\nasync function getItemCached(id: string): Promise<DirectoryNodes> {\n if (itemCache.has(id)) return itemCache.get(id)!;\n\n const data = await call<DirectoryNodes>(\"DirectoryNodesService.getItem\", id);\n\n itemCache.set(id, data);\n\n return data;\n}\n\nexport const generateTreeOfContent = async (\n directoryNodes: DirectoryNodes[]\n): Promise<TreeOfContent[]> => {\n if (!directoryNodes?.length) return [];\n\n let response = await getItemCached(directoryNodes[0].shortId);\n let result = await getChildrenInfo(response.childNodes);\n\n while (response.parents?.[0]) {\n if (!response.labels?.[0] || !response.informationUnits?.[0]) {\n return result;\n }\n\n const infoId = response.informationUnits[0].shortId;\n\n const parentNode: TreeOfContent = {\n active: true,\n label: response.labels[0].value,\n id: response.shortId,\n link: `/topics/${infoId}`,\n children: result,\n };\n\n response = await getItemCached(response.parents[0].shortId);\n result = await getChildrenInfo(response.childNodes, parentNode);\n }\n\n return result;\n};\n\nasync function getChildrenInfo(\n childNodes: DefaultCrexDirectories[] | undefined,\n childItem?: TreeOfContent\n): Promise<TreeOfContent[]> {\n if (!childNodes?.length) return [];\n\n const validNodes = childNodes.filter((n) => n.labels?.[0]);\n\n const responses = await Promise.all(\n validNodes.map((n) =>\n getItemCached(n.shortId).catch((err) => {\n console.error(\"Erro em\", n.shortId, err);\n return undefined;\n })\n )\n );\n\n return responses.reduce<TreeOfContent[]>((acc, resp, idx) => {\n if (!resp?.informationUnits?.[0]) return acc;\n\n const node = validNodes[idx];\n const treeItem: TreeOfContent = {\n active: false,\n label: node.labels![0].value,\n link: `/topics/${resp.informationUnits[0].shortId}`,\n id: node.shortId,\n children: [],\n };\n\n acc.push(node.shortId === childItem?.id ? childItem : treeItem);\n return acc;\n }, []);\n}\n","import { QueryParams } from '@c-rex/types';\n\n/**\n * Creates an array of parameter objects from a list of field values.\n * @param fieldsList - Array of field values to transform into parameter objects\n * @param key - The key to use for each parameter object (defaults to \"Fields\")\n * @returns An array of objects with key-value pairs\n */\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\n/**\n * Generates a URL query string from an array of parameter objects.\n * @param params - Array of QueryParams objects containing key-value pairs\n * @returns A URL-encoded query string\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","import { CREX_TOKEN_HEADER_KEY } from \"@c-rex/constants\";\nimport { call } from \"./call\";\nimport { getCookie } from \"./memory\";\n\nconst updateToken = async (): Promise<string | null> => {\n try {\n const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/token`, {\n method: 'POST',\n credentials: 'include',\n });\n\n const cookies = response.headers.get(\"set-cookie\");\n if (cookies === null) return null\n\n const aux = cookies.split(`${CREX_TOKEN_HEADER_KEY}=`);\n if (aux.length == 0) return null\n\n const token = aux[1].split(\";\")[0];\n if (token === undefined) throw new Error(\"Token is undefined\");\n\n return token;\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.updateToken error: ${error}`\n });\n return null\n }\n}\n\nexport const manageToken = async (): Promise<string | null> => {\n try {\n const hasToken = await getCookie(CREX_TOKEN_HEADER_KEY);\n\n let token = \"\";\n if (!hasToken || hasToken.value === null) {\n const tokenResult = await updateToken();\n\n if (tokenResult === null) throw new Error(\"Token is undefined\");\n\n token = tokenResult;\n } else {\n token = hasToken.value;\n }\n\n return token;\n } catch (error) {\n call(\"CrexLogger.log\", {\n level: \"error\",\n message: `utils.manageToken error: ${error}`\n });\n\n return null\n }\n}","import { informationUnitsRenditions } from \"@c-rex/interfaces\";\nimport { DocumentsType } from \"@c-rex/types\";\n\n\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): DocumentsType => {\n if (renditions == undefined || renditions.length == 0) {\n return {};\n }\n\n const filteredRenditions = renditions.filter(\n (item) => item.format != \"application/xhtml+xml\" && item.format != \"application/json\" && item.format != \"application/llm+xml\"\n );\n\n if (filteredRenditions.length == 0 || filteredRenditions[0] == undefined) {\n return {};\n }\n\n const result: {\n [key: string]: {\n view: string;\n download: string;\n }\n } = {}\n\n filteredRenditions.forEach((item) => {\n const key = item.format\n\n if (result[key] == undefined) {\n result[key] = {\n view: \"\",\n download: \"\"\n }\n }\n\n result[key].download = item.links.filter((link) => link.rel == \"download\")[0]?.href\n result[key].view = item.links.filter((link) => link.rel == \"view\")[0]?.href\n })\n\n return result\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../constants/src/index.ts","../src/utils.ts","../src/breadcrumbs.ts","../src/classMerge.ts","../src/call.ts","../src/treeOfContent.ts","../src/params.ts","../src/renditions.ts"],"sourcesContent":["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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\n\nexport const _generateShaKey = (input: string): string => {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n hash = (hash << 5) - hash + input.charCodeAt(i);\n hash |= 0;\n }\n return Math.abs(hash).toString(16);\n}\n\n/**\n * Retrieves the country code associated with a given language code.\n * @param lang - The language code to look up (e.g., \"en-US\")\n * @returns The corresponding country code, or the original language code if not found\n */\nexport const getCountryCodeByLang = (lang: string): string => {\n const mappedKeys = Object.keys(FLAGS_BY_LANG);\n\n if (!mappedKeys.includes(lang)) {\n return lang\n }\n\n type LangKey = keyof typeof FLAGS_BY_LANG;\n const country = FLAGS_BY_LANG[lang as LangKey]\n\n return country\n}\n\nexport const formatDateToLocale = (date: string, locale: string): string => {\n if (typeof date !== 'string' || !date) {\n return date;\n }\n\n const dateAux = new Date(date);\n return new Intl.DateTimeFormat(locale, {\n day: '2-digit',\n month: 'long',\n year: 'numeric'\n }).format(dateAux);\n}\n\nexport const createAvailableVersionList = (\n versions: informationUnitsResponseItem[],\n articleLang: string,\n type: string\n): AvailableVersionsInterface[] => {\n\n const availableVersions = versions.map(item => {\n return {\n shortId: item.shortId,\n active: item.language === articleLang,\n lang: item.language,\n country: item.language.split(\"-\")[1],\n link: `/${type}/${item.shortId}`,\n }\n }).sort((a, b) => {\n if (a.lang < b.lang) return -1;\n if (a.lang > b.lang) return 1;\n return 0;\n }) as AvailableVersionsInterface[];\n\n return availableVersions;\n}","import { TreeOfContent } from \"@c-rex/interfaces\";\n\n/**\n * Generates breadcrumb items by recursively extracting active items and their active children from a TreeOfContent array.\n * @param treeOfContent - Array of TreeOfContent objects representing the content hierarchy\n * @returns A flattened array of active TreeOfContent items to be used as breadcrumbs\n */\nexport const generateBreadcrumbItems = (\n treeOfContent: TreeOfContent[],\n): TreeOfContent[] => {\n const result: TreeOfContent[] = [];\n\n treeOfContent.forEach((item) => {\n if (item.active) {\n const filteredChildren = generateBreadcrumbItems(item.children);\n result.push(item, ...filteredChildren);\n }\n });\n\n return result;\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges multiple class values into a single string using clsx and tailwind-merge.\n * Useful for conditionally applying Tailwind CSS classes.\n * @param inputs - Any number of class values (strings, objects, arrays, etc.)\n * @returns A merged string of class names optimized for Tailwind CSS\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","/**\n * Makes an asynchronous RPC API call to the server.\n * @param method - The RPC method name to call\n * @param params - Optional parameters to pass to the method\n * @returns A Promise resolving to the response data of type T\n */\nexport const call = async<T = unknown>(method: string, params?: any): Promise<T> => {\n type result = {\n data: string,\n expireDate: Date,\n }\n\n const res = await fetch(`/api/rpc`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ method, params }),\n credentials: 'include',\n });\n\n const json = await res.json();\n\n if (!res.ok) throw new Error(json.error || 'Unknown error');\n\n const today = new Date()\n const result: result = {\n data: JSON.stringify(json.data),\n expireDate: new Date(today.getTime() + 1000 * 60 * 60),\n }\n\n return json.data;\n}","import { DirectoryNodes, DefaultCrexDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\n\nconst itemCache = new Map<string, DirectoryNodes>();\n\nasync function getItemCached(id: string): Promise<DirectoryNodes> {\n if (itemCache.has(id)) return itemCache.get(id)!;\n\n const data = await call<DirectoryNodes>(\"DirectoryNodesService.getItem\", id);\n\n itemCache.set(id, data);\n\n return data;\n}\n\nexport const generateTreeOfContent = async (\n directoryNodes: DirectoryNodes[]\n): Promise<TreeOfContent[]> => {\n if (!directoryNodes?.length) return [];\n\n let response = await getItemCached(directoryNodes[0].shortId);\n let result = await getChildrenInfo(response.childNodes);\n\n while (response.parents?.[0]) {\n if (!response.labels?.[0] || !response.informationUnits?.[0]) {\n return result;\n }\n\n const infoId = response.informationUnits[0].shortId;\n\n const parentNode: TreeOfContent = {\n active: true,\n label: response.labels[0].value,\n id: response.shortId,\n link: `/topics/${infoId}`,\n children: result,\n };\n\n response = await getItemCached(response.parents[0].shortId);\n result = await getChildrenInfo(response.childNodes, parentNode);\n }\n\n return result;\n};\n\nasync function getChildrenInfo(\n childNodes: DefaultCrexDirectories[] | undefined,\n childItem?: TreeOfContent\n): Promise<TreeOfContent[]> {\n if (!childNodes?.length) return [];\n\n const validNodes = childNodes.filter((n) => n.labels?.[0]);\n\n const responses = await Promise.all(\n validNodes.map((n) =>\n getItemCached(n.shortId).catch((err) => {\n console.error(\"Erro em\", n.shortId, err);\n return undefined;\n })\n )\n );\n\n return responses.reduce<TreeOfContent[]>((acc, resp, idx) => {\n if (!resp?.informationUnits?.[0]) return acc;\n\n const node = validNodes[idx];\n const treeItem: TreeOfContent = {\n active: false,\n label: node.labels![0].value,\n link: `/topics/${resp.informationUnits[0].shortId}`,\n id: node.shortId,\n children: [],\n };\n\n acc.push(node.shortId === childItem?.id ? childItem : treeItem);\n return acc;\n }, []);\n}\n","import { QueryParams } from '@c-rex/types';\n\n/**\n * Creates an array of parameter objects from a list of field values.\n * @param fieldsList - Array of field values to transform into parameter objects\n * @param key - The key to use for each parameter object (defaults to \"Fields\")\n * @returns An array of objects with key-value pairs\n */\nexport const createParams = (fieldsList: string[], key: string = \"Fields\") =>\n fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\n\n/**\n * Generates a URL query string from an array of parameter objects.\n * @param params - Array of QueryParams objects containing key-value pairs\n * @returns A URL-encoded query string\n */\nexport const generateQueryParams = (params: QueryParams[]): string => {\n const queryParams = params\n .map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`)\n .join(\"&\");\n return queryParams;\n};\n","import { informationUnitsRenditions } from \"@c-rex/interfaces\";\nimport { DocumentsType } from \"@c-rex/types\";\n\n\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): DocumentsType => {\n if (renditions == undefined || renditions.length == 0) {\n return {};\n }\n\n const filteredRenditions = renditions.filter(\n (item) => item.format != \"application/xhtml+xml\" && item.format != \"application/json\" && item.format != \"application/llm+xml\"\n );\n\n if (filteredRenditions.length == 0 || filteredRenditions[0] == undefined) {\n return {};\n }\n\n const result: {\n [key: string]: {\n view: string;\n download: string;\n }\n } = {}\n\n filteredRenditions.forEach((item) => {\n const key = item.format\n\n if (result[key] == undefined) {\n result[key] = {\n view: \"\",\n download: \"\"\n }\n }\n\n result[key].download = item.links.filter((link) => link.rel == \"download\")[0]?.href\n result[key].view = item.links.filter((link) => link.rel == \"view\")[0]?.href\n })\n\n return result\n}"],"mappings":";AA6CO,IAAM,gBAAgB;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AACV;AA6BO,IAAM,uBAAuB,KAAK,KAAK,KAAK,KAAK;;;AC1EjD,IAAM,kBAAkB,CAAC,UAA0B;AACtD,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAQ,QAAQ,KAAK,OAAO,MAAM,WAAW,CAAC;AAC9C,YAAQ;AAAA,EACZ;AACA,SAAO,KAAK,IAAI,IAAI,EAAE,SAAS,EAAE;AACrC;AAOO,IAAM,uBAAuB,CAAC,SAAyB;AAC1D,QAAM,aAAa,OAAO,KAAK,aAAa;AAE5C,MAAI,CAAC,WAAW,SAAS,IAAI,GAAG;AAC5B,WAAO;AAAA,EACX;AAGA,QAAM,UAAU,cAAc,IAAe;AAE7C,SAAO;AACX;AAEO,IAAM,qBAAqB,CAAC,MAAc,WAA2B;AACxE,MAAI,OAAO,SAAS,YAAY,CAAC,MAAM;AACnC,WAAO;AAAA,EACX;AAEA,QAAM,UAAU,IAAI,KAAK,IAAI;AAC7B,SAAO,IAAI,KAAK,eAAe,QAAQ;AAAA,IACnC,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAC,EAAE,OAAO,OAAO;AACrB;AAEO,IAAM,6BAA6B,CACtC,UACA,aACA,SAC+B;AAE/B,QAAM,oBAAoB,SAAS,IAAI,UAAQ;AAC3C,WAAO;AAAA,MACH,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK,aAAa;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,SAAS,KAAK,SAAS,MAAM,GAAG,EAAE,CAAC;AAAA,MACnC,MAAM,IAAI,IAAI,IAAI,KAAK,OAAO;AAAA,IAClC;AAAA,EACJ,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM;AACd,QAAI,EAAE,OAAO,EAAE,KAAM,QAAO;AAC5B,QAAI,EAAE,OAAO,EAAE,KAAM,QAAO;AAC5B,WAAO;AAAA,EACX,CAAC;AAED,SAAO;AACX;;;ACzDO,IAAM,0BAA0B,CACnC,kBACkB;AAClB,QAAM,SAA0B,CAAC;AAEjC,gBAAc,QAAQ,CAAC,SAAS;AAC5B,QAAI,KAAK,QAAQ;AACb,YAAM,mBAAmB,wBAAwB,KAAK,QAAQ;AAC9D,aAAO,KAAK,MAAM,GAAG,gBAAgB;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,SAAO;AACX;;;ACpBA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAQjB,SAAS,MAAM,QAAsB;AACxC,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC/B;;;ACLO,IAAM,OAAO,OAAmB,QAAgB,WAA6B;AAMhF,QAAM,MAAM,MAAM,MAAM,YAAY;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAC9C,MAAM,KAAK,UAAU,EAAE,QAAQ,OAAO,CAAC;AAAA,IACvC,aAAa;AAAA,EACjB,CAAC;AAED,QAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,MAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,KAAK,SAAS,eAAe;AAE1D,QAAM,QAAQ,oBAAI,KAAK;AACvB,QAAM,SAAiB;AAAA,IACnB,MAAM,KAAK,UAAU,KAAK,IAAI;AAAA,IAC9B,YAAY,IAAI,KAAK,MAAM,QAAQ,IAAI,MAAO,KAAK,EAAE;AAAA,EACzD;AAEA,SAAO,KAAK;AAChB;;;AC1BA,IAAM,YAAY,oBAAI,IAA4B;AAElD,eAAe,cAAc,IAAqC;AAC9D,MAAI,UAAU,IAAI,EAAE,EAAG,QAAO,UAAU,IAAI,EAAE;AAE9C,QAAM,OAAO,MAAM,KAAqB,iCAAiC,EAAE;AAE3E,YAAU,IAAI,IAAI,IAAI;AAEtB,SAAO;AACX;AAEO,IAAM,wBAAwB,OACjC,mBAC2B;AAC3B,MAAI,CAAC,gBAAgB,OAAQ,QAAO,CAAC;AAErC,MAAI,WAAW,MAAM,cAAc,eAAe,CAAC,EAAE,OAAO;AAC5D,MAAI,SAAS,MAAM,gBAAgB,SAAS,UAAU;AAEtD,SAAO,SAAS,UAAU,CAAC,GAAG;AAC1B,QAAI,CAAC,SAAS,SAAS,CAAC,KAAK,CAAC,SAAS,mBAAmB,CAAC,GAAG;AAC1D,aAAO;AAAA,IACX;AAEA,UAAM,SAAS,SAAS,iBAAiB,CAAC,EAAE;AAE5C,UAAM,aAA4B;AAAA,MAC9B,QAAQ;AAAA,MACR,OAAO,SAAS,OAAO,CAAC,EAAE;AAAA,MAC1B,IAAI,SAAS;AAAA,MACb,MAAM,WAAW,MAAM;AAAA,MACvB,UAAU;AAAA,IACd;AAEA,eAAW,MAAM,cAAc,SAAS,QAAQ,CAAC,EAAE,OAAO;AAC1D,aAAS,MAAM,gBAAgB,SAAS,YAAY,UAAU;AAAA,EAClE;AAEA,SAAO;AACX;AAEA,eAAe,gBACX,YACA,WACwB;AACxB,MAAI,CAAC,YAAY,OAAQ,QAAO,CAAC;AAEjC,QAAM,aAAa,WAAW,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEzD,QAAM,YAAY,MAAM,QAAQ;AAAA,IAC5B,WAAW;AAAA,MAAI,CAAC,MACZ,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ;AACpC,gBAAQ,MAAM,WAAW,EAAE,SAAS,GAAG;AACvC,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,SAAO,UAAU,OAAwB,CAAC,KAAK,MAAM,QAAQ;AACzD,QAAI,CAAC,MAAM,mBAAmB,CAAC,EAAG,QAAO;AAEzC,UAAM,OAAO,WAAW,GAAG;AAC3B,UAAM,WAA0B;AAAA,MAC5B,QAAQ;AAAA,MACR,OAAO,KAAK,OAAQ,CAAC,EAAE;AAAA,MACvB,MAAM,WAAW,KAAK,iBAAiB,CAAC,EAAE,OAAO;AAAA,MACjD,IAAI,KAAK;AAAA,MACT,UAAU,CAAC;AAAA,IACf;AAEA,QAAI,KAAK,KAAK,YAAY,WAAW,KAAK,YAAY,QAAQ;AAC9D,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACT;;;ACtEO,IAAM,eAAe,CAAC,YAAsB,MAAc,aAC7D,WAAW,IAAI,CAAC,UAAU;AAAA,EACtB;AAAA,EACA,OAAO;AACX,EAAE;AAOC,IAAM,sBAAsB,CAAC,WAAkC;AAClE,QAAM,cAAc,OACf,IAAI,CAAC,UAAU,GAAG,mBAAmB,MAAM,GAAG,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC,EAAE,EACpF,KAAK,GAAG;AACb,SAAO;AACX;;;ACpBO,IAAM,oBAAoB,CAAC,EAAE,WAAW,MAAmE;AAC9G,MAAI,cAAc,UAAa,WAAW,UAAU,GAAG;AACnD,WAAO,CAAC;AAAA,EACZ;AAEA,QAAM,qBAAqB,WAAW;AAAA,IAClC,CAAC,SAAS,KAAK,UAAU,2BAA2B,KAAK,UAAU,sBAAsB,KAAK,UAAU;AAAA,EAC5G;AAEA,MAAI,mBAAmB,UAAU,KAAK,mBAAmB,CAAC,KAAK,QAAW;AACtE,WAAO,CAAC;AAAA,EACZ;AAEA,QAAM,SAKF,CAAC;AAEL,qBAAmB,QAAQ,CAAC,SAAS;AACjC,UAAM,MAAM,KAAK;AAEjB,QAAI,OAAO,GAAG,KAAK,QAAW;AAC1B,aAAO,GAAG,IAAI;AAAA,QACV,MAAM;AAAA,QACN,UAAU;AAAA,MACd;AAAA,IACJ;AAEA,WAAO,GAAG,EAAE,WAAW,KAAK,MAAM,OAAO,CAAC,SAAS,KAAK,OAAO,UAAU,EAAE,CAAC,GAAG;AAC/E,WAAO,GAAG,EAAE,OAAO,KAAK,MAAM,OAAO,CAAC,SAAS,KAAK,OAAO,MAAM,EAAE,CAAC,GAAG;AAAA,EAC3E,CAAC;AAED,SAAO;AACX;","names":[]}
@@ -27,7 +27,7 @@ module.exports = __toCommonJS(next_cookies_exports);
27
27
 
28
28
  // ../constants/src/index.ts
29
29
  var SDK_CONFIG_KEY = "crex-sdk-config";
30
- var DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1e3;
30
+ var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
31
31
 
32
32
  // src/next-cookies.ts
33
33
  var import_headers = require("next/headers");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/next-cookies.ts","../../constants/src/index.ts"],"sourcesContent":["'use server';\n\nimport { SDK_CONFIG_KEY } from '@c-rex/constants';\nimport { ConfigInterface } from '@c-rex/interfaces';\nimport { cookies } from 'next/headers';\n\n/**\n * Retrieves and parses configuration data from a cookie.\n * @returns The parsed configuration object\n * @throws Error if the configuration cookie is not found or cannot be parsed\n */\nexport const getConfigs = (): ConfigInterface => {\n const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;\n if (!jsonConfigs) {\n throw new Error('Configs not found');\n }\n\n const configs: ConfigInterface = JSON.parse(jsonConfigs);\n\n return configs;\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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\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};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1000; // 7 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACoCO,IAAM,iBAAiB;AAwCvB,IAAM,uBAAuB,IAAI,KAAK,KAAK,KAAK;;;ADxEvD,qBAAwB;AAOjB,IAAM,aAAa,MAAuB;AAC7C,QAAM,kBAAc,wBAAQ,EAAE,IAAI,cAAc,GAAG;AACnD,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACvC;AAEA,QAAM,UAA2B,KAAK,MAAM,WAAW;AAEvD,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../src/next-cookies.ts","../../constants/src/index.ts"],"sourcesContent":["'use server';\n\nimport { SDK_CONFIG_KEY } from '@c-rex/constants';\nimport { ConfigInterface } from '@c-rex/interfaces';\nimport { cookies } from 'next/headers';\n\n/**\n * Retrieves and parses configuration data from a cookie.\n * @returns The parsed configuration object\n * @throws Error if the configuration cookie is not found or cannot be parsed\n */\nexport const getConfigs = (): ConfigInterface => {\n const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;\n if (!jsonConfigs) {\n throw new Error('Configs not found');\n }\n\n const configs: ConfigInterface = JSON.parse(jsonConfigs);\n\n return configs;\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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACqCO,IAAM,iBAAiB;AAwCvB,IAAM,uBAAuB,KAAK,KAAK,KAAK,KAAK;;;ADzExD,qBAAwB;AAOjB,IAAM,aAAa,MAAuB;AAC7C,QAAM,kBAAc,wBAAQ,EAAE,IAAI,cAAc,GAAG;AACnD,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACvC;AAEA,QAAM,UAA2B,KAAK,MAAM,WAAW;AAEvD,SAAO;AACX;","names":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  // ../constants/src/index.ts
4
4
  var SDK_CONFIG_KEY = "crex-sdk-config";
5
- var DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1e3;
5
+ var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
6
6
 
7
7
  // src/next-cookies.ts
8
8
  import { cookies } from "next/headers";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../constants/src/index.ts","../src/next-cookies.ts"],"sourcesContent":["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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\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};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 7 * 24 * 60 * 60 * 1000; // 7 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","'use server';\n\nimport { SDK_CONFIG_KEY } from '@c-rex/constants';\nimport { ConfigInterface } from '@c-rex/interfaces';\nimport { cookies } from 'next/headers';\n\n/**\n * Retrieves and parses configuration data from a cookie.\n * @returns The parsed configuration object\n * @throws Error if the configuration cookie is not found or cannot be parsed\n */\nexport const getConfigs = (): ConfigInterface => {\n const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;\n if (!jsonConfigs) {\n throw new Error('Configs not found');\n }\n\n const configs: ConfigInterface = JSON.parse(jsonConfigs);\n\n return configs;\n}"],"mappings":";;;AAoCO,IAAM,iBAAiB;AAwCvB,IAAM,uBAAuB,IAAI,KAAK,KAAK,KAAK;;;ACxEvD,SAAS,eAAe;AAOjB,IAAM,aAAa,MAAuB;AAC7C,QAAM,cAAc,QAAQ,EAAE,IAAI,cAAc,GAAG;AACnD,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACvC;AAEA,QAAM,UAA2B,KAAK,MAAM,WAAW;AAEvD,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../../constants/src/index.ts","../src/next-cookies.ts"],"sourcesContent":["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 RESULT_VIEW_STYLES = [\n \"cards\",\n \"table\",\n] as const;\n\nexport const API = {\n MAX_RETRY: 3,\n API_TIMEOUT: 10000,\n RETRY_DELAY: 500,\n API_HEADERS: {\n \"content-Type\": \"application/json\",\n },\n};\n\nexport const SDK_CONFIG_KEY = \"crex-sdk-config\";\n\nexport const CONTENT_LANG_KEY = \"CONTENT_LANG_KEY\";\n\nexport const AVAILABLE_CONTENT_LANG_KEY = \"AVAILABLE_CONTENT_LANG_KEY\";\n\nexport const UI_LANG_KEY = \"UI_LANG_KEY\";\n\nexport const FLAGS_BY_LANG = {\n \"en\": \"US\",\n \"de\": \"DE\",\n};\n\nexport const DEFAULT_LANG = \"en-US\";\n\nexport const EN_LANG = \"en\";\n\nexport const UI_LANG_OPTIONS = [\"en-us\", \"de-de\"];\n\nexport const TOPICS_TYPE_AND_LINK = \"topics\";\nexport const BLOG_TYPE_AND_LINK = \"blog\";\nexport const DOCUMENTS_TYPE_AND_LINK = \"documents\";\n\nexport const TOPIC = \"TOPIC\";\nexport const DOCUMENT = \"DOCUMENT\";\nexport const PACKAGE = \"PACKAGE\";\nexport const FRAGMENT = \"FRAGMENT\";\n\nexport const RESULT_TYPES = {\n TOPIC: TOPIC,\n DOCUMENT: DOCUMENT,\n PACKAGE: PACKAGE,\n FRAGMENT: FRAGMENT\n} as const;\n\nexport const FILES_EXTENSIONS = {\n PDF: \"application/pdf\",\n HTML: \"text/html\",\n} as const;\n\nexport const DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1000; // 30 days in milliseconds\n\nexport const ICONS_BY_FILE_EXTENSION = {\n \"application/pdf\": \"FaFilePdf\",\n} as const;\n\nexport const DEFAULT_ICON = \"file\";\n\nexport const CREX_TOKEN_HEADER_KEY = \"crex-token\";\n\nexport const WILD_CARD_OPTIONS = {\n BOTH: \"BOTH\",\n END: \"END\",\n START: \"START\",\n NONE: \"NONE\",\n} as const;\n\nexport const OPERATOR_OPTIONS = {\n AND: \"AND\",\n OR: \"OR\",\n} as const;\n\nexport const ARTICLE_PAGE_LAYOUT = {\n BLOG: \"BLOG\",\n DOCUMENT: \"DOCUMENT\",\n} as const;\n\nexport const DEVICE_OPTIONS = {\n MOBILE: \"mobile\",\n TABLET: \"tablet\",\n DESKTOP: \"desktop\",\n}\nexport const BREAKPOINTS = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n \"2xl\": 1536,\n};","'use server';\n\nimport { SDK_CONFIG_KEY } from '@c-rex/constants';\nimport { ConfigInterface } from '@c-rex/interfaces';\nimport { cookies } from 'next/headers';\n\n/**\n * Retrieves and parses configuration data from a cookie.\n * @returns The parsed configuration object\n * @throws Error if the configuration cookie is not found or cannot be parsed\n */\nexport const getConfigs = (): ConfigInterface => {\n const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;\n if (!jsonConfigs) {\n throw new Error('Configs not found');\n }\n\n const configs: ConfigInterface = JSON.parse(jsonConfigs);\n\n return configs;\n}"],"mappings":";;;AAqCO,IAAM,iBAAiB;AAwCvB,IAAM,uBAAuB,KAAK,KAAK,KAAK,KAAK;;;ACzExD,SAAS,eAAe;AAOjB,IAAM,aAAa,MAAuB;AAC7C,QAAM,cAAc,QAAQ,EAAE,IAAI,cAAc,GAAG;AACnD,MAAI,CAAC,aAAa;AACd,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACvC;AAEA,QAAM,UAA2B,KAAK,MAAM,WAAW;AAEvD,SAAO;AACX;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c-rex/utils",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "files": [
5
5
  "dist"
6
6
  ],