@c-rex/utils 0.1.6 → 0.1.7
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 +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -0
- package/dist/index.mjs.map +1 -1
- package/dist/next-cookies.js.map +1 -1
- package/dist/next-cookies.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -10,6 +10,7 @@ declare const _generateShaKey: (input: string) => Promise<string>;
|
|
|
10
10
|
*/
|
|
11
11
|
declare const getCountryCodeByLang: (lang: string) => string;
|
|
12
12
|
declare const getFromCookieString: (cookieString: string, key: string) => string;
|
|
13
|
+
declare const formatDateToLocale: (date: string, locale: string) => string;
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Fetches a cookie value from the server API in client-side code.
|
|
@@ -85,4 +86,4 @@ declare const getFileRenditions: ({ renditions }: {
|
|
|
85
86
|
*/
|
|
86
87
|
declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
|
|
87
88
|
|
|
88
|
-
export { _generateShaKey, call, cn, createParams, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
|
|
89
|
+
export { _generateShaKey, call, cn, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ declare const _generateShaKey: (input: string) => Promise<string>;
|
|
|
10
10
|
*/
|
|
11
11
|
declare const getCountryCodeByLang: (lang: string) => string;
|
|
12
12
|
declare const getFromCookieString: (cookieString: string, key: string) => string;
|
|
13
|
+
declare const formatDateToLocale: (date: string, locale: string) => string;
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Fetches a cookie value from the server API in client-side code.
|
|
@@ -85,4 +86,4 @@ declare const getFileRenditions: ({ renditions }: {
|
|
|
85
86
|
*/
|
|
86
87
|
declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
|
|
87
88
|
|
|
88
|
-
export { _generateShaKey, call, cn, createParams, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
|
|
89
|
+
export { _generateShaKey, call, cn, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, getFromCookieString, manageToken, setCookie };
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __export(index_exports, {
|
|
|
24
24
|
call: () => call,
|
|
25
25
|
cn: () => cn,
|
|
26
26
|
createParams: () => createParams,
|
|
27
|
+
formatDateToLocale: () => formatDateToLocale,
|
|
27
28
|
generateBreadcrumbItems: () => generateBreadcrumbItems,
|
|
28
29
|
generateQueryParams: () => generateQueryParams,
|
|
29
30
|
generateTreeOfContent: () => generateTreeOfContent,
|
|
@@ -71,6 +72,17 @@ var getFromCookieString = (cookieString, key) => {
|
|
|
71
72
|
}
|
|
72
73
|
return "";
|
|
73
74
|
};
|
|
75
|
+
var formatDateToLocale = (date, locale) => {
|
|
76
|
+
if (typeof date !== "string" || !date) {
|
|
77
|
+
return date;
|
|
78
|
+
}
|
|
79
|
+
const dateAux = new Date(date);
|
|
80
|
+
return new Intl.DateTimeFormat(locale, {
|
|
81
|
+
day: "2-digit",
|
|
82
|
+
month: "long",
|
|
83
|
+
year: "numeric"
|
|
84
|
+
}).format(dateAux);
|
|
85
|
+
};
|
|
74
86
|
|
|
75
87
|
// src/call.ts
|
|
76
88
|
var call = async (method, params) => {
|
|
@@ -303,6 +315,7 @@ var getFileRenditions = ({ renditions }) => {
|
|
|
303
315
|
call,
|
|
304
316
|
cn,
|
|
305
317
|
createParams,
|
|
318
|
+
formatDateToLocale,
|
|
306
319
|
generateBreadcrumbItems,
|
|
307
320
|
generateQueryParams,
|
|
308
321
|
generateTreeOfContent,
|
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\n","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\n\nexport const _generateShaKey = async (input: string): Promise<string> => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input);\n const hashBuffer = await crypto.subtle.digest('SHA-1', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64url = btoa(String.fromCharCode(...hashArray))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n\n return base64url.slice(0, 12);\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","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 = await _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, informationUnitsDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\ntype ReturnType = {\n rootNode: DirectoryNodes | null,\n result: TreeOfContent[],\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<ReturnType> => {\n if (!directoryNodes?.length) return { rootNode: null, result: [] };\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 { rootNode: null, 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 { rootNode: response, result };\n};\n\nasync function getChildrenInfo(\n childNodes: informationUnitsDirectories[] | 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 { FileRenditionType } from \"@c-rex/types\";\nimport { informationUnitsRenditions } from \"@c-rex/interfaces\";\n\ntype RenditionType = {\n filesToDownload: FileRenditionType[],\n filesToOpen: FileRenditionType[]\n}\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): RenditionType => {\n if (renditions == undefined || renditions.length == 0) {\n return {\n filesToDownload: [],\n filesToOpen: [],\n };\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 filesToDownload: [],\n filesToOpen: [],\n };\n }\n\n const filesToDownload = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"download\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n });\n\n const filesToOpen = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"view\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n })\n\n return {\n filesToDownload: filesToDownload,\n filesToOpen: filesToOpen,\n }\n}"],"mappings":"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","names":["item"]}
|
|
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","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\n\nexport const _generateShaKey = async (input: string): Promise<string> => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input);\n const hashBuffer = await crypto.subtle.digest('SHA-1', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64url = btoa(String.fromCharCode(...hashArray))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n\n return base64url.slice(0, 12);\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}","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 = await _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\ntype ReturnType = {\n rootNode: DirectoryNodes | null,\n result: TreeOfContent[],\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<ReturnType> => {\n if (!directoryNodes?.length) return { rootNode: null, result: [] };\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 { rootNode: null, 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 { rootNode: response, 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 { FileRenditionType } from \"@c-rex/types\";\nimport { informationUnitsRenditions } from \"@c-rex/interfaces\";\n\ntype RenditionType = {\n filesToDownload: FileRenditionType[],\n filesToOpen: FileRenditionType[]\n}\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): RenditionType => {\n if (renditions == undefined || renditions.length == 0) {\n return {\n filesToDownload: [],\n filesToOpen: [],\n };\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 filesToDownload: [],\n filesToOpen: [],\n };\n }\n\n const filesToDownload = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"download\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n });\n\n const filesToOpen = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"view\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n })\n\n return {\n filesToDownload: filesToDownload,\n filesToOpen: filesToOpen,\n }\n}"],"mappings":"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","names":["item"]}
|
package/dist/index.mjs
CHANGED
|
@@ -33,6 +33,17 @@ var getFromCookieString = (cookieString, key) => {
|
|
|
33
33
|
}
|
|
34
34
|
return "";
|
|
35
35
|
};
|
|
36
|
+
var formatDateToLocale = (date, locale) => {
|
|
37
|
+
if (typeof date !== "string" || !date) {
|
|
38
|
+
return date;
|
|
39
|
+
}
|
|
40
|
+
const dateAux = new Date(date);
|
|
41
|
+
return new Intl.DateTimeFormat(locale, {
|
|
42
|
+
day: "2-digit",
|
|
43
|
+
month: "long",
|
|
44
|
+
year: "numeric"
|
|
45
|
+
}).format(dateAux);
|
|
46
|
+
};
|
|
36
47
|
|
|
37
48
|
// src/call.ts
|
|
38
49
|
var call = async (method, params) => {
|
|
@@ -264,6 +275,7 @@ export {
|
|
|
264
275
|
call,
|
|
265
276
|
cn,
|
|
266
277
|
createParams,
|
|
278
|
+
formatDateToLocale,
|
|
267
279
|
generateBreadcrumbItems,
|
|
268
280
|
generateQueryParams,
|
|
269
281
|
generateTreeOfContent,
|
package/dist/index.mjs.map
CHANGED
|
@@ -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\n","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\n\nexport const _generateShaKey = async (input: string): Promise<string> => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input);\n const hashBuffer = await crypto.subtle.digest('SHA-1', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64url = btoa(String.fromCharCode(...hashArray))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n\n return base64url.slice(0, 12);\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","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 = await _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, informationUnitsDirectories, TreeOfContent } from \"@c-rex/interfaces\";\nimport { call } from \"./call\";\n\ntype ReturnType = {\n rootNode: DirectoryNodes | null,\n result: TreeOfContent[],\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<ReturnType> => {\n if (!directoryNodes?.length) return { rootNode: null, result: [] };\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 { rootNode: null, 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 { rootNode: response, result };\n};\n\nasync function getChildrenInfo(\n childNodes: informationUnitsDirectories[] | 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 { FileRenditionType } from \"@c-rex/types\";\nimport { informationUnitsRenditions } from \"@c-rex/interfaces\";\n\ntype RenditionType = {\n filesToDownload: FileRenditionType[],\n filesToOpen: FileRenditionType[]\n}\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): RenditionType => {\n if (renditions == undefined || renditions.length == 0) {\n return {\n filesToDownload: [],\n filesToOpen: [],\n };\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 filesToDownload: [],\n filesToOpen: [],\n };\n }\n\n const filesToDownload = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"download\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n });\n\n const filesToOpen = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"view\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n })\n\n return {\n filesToDownload: filesToDownload,\n filesToOpen: filesToOpen,\n }\n}"],"mappings":";AA4CO,IAAM,gBAAgB;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AACV;AA6BO,IAAM,uBAAuB,IAAI,KAAK,KAAK,KAAK;AAQhD,IAAM,wBAAwB;;;AClF9B,IAAM,kBAAkB,OAAO,UAAmC;AACrE,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,OAAO,QAAQ,OAAO,KAAK;AACjC,QAAM,aAAa,MAAM,OAAO,OAAO,OAAO,SAAS,IAAI;AAC3D,QAAM,YAAY,MAAM,KAAK,IAAI,WAAW,UAAU,CAAC;AACvD,QAAM,YAAY,KAAK,OAAO,aAAa,GAAG,SAAS,CAAC,EACnD,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,EAAE;AAEtB,SAAO,UAAU,MAAM,GAAG,EAAE;AAChC;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,sBAAsB,CAAC,cAAsB,QAAwB;AAC9E,QAAM,UAAU,aAAa,MAAM,GAAG;AAEtC,aAAW,UAAU,SAAS;AAC1B,UAAM,CAAC,WAAW,WAAW,IAAI,OAAO,KAAK,EAAE,MAAM,GAAG;AAExD,QAAI,cAAc,KAAK;AACnB,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;;;ACrCO,IAAM,OAAO,OAAmB,QAAgB,WAA6B;AAMhF,QAAM,SAAS,MAAM,gBAAgB,KAAK,UAAU,EAAE,QAAQ,OAAO,CAAC,CAAC;AACvE,QAAM,QAAQ,aAAa,QAAQ,MAAM;AAEzC,MAAI,UAAU,MAAM;AAChB,UAAM,EAAE,MAAM,WAAW,IAAI,KAAK,MAAM,KAAK;AAE7C,QAAI,IAAI,KAAK,UAAU,IAAI,oBAAI,KAAK,GAAG;AACnC,aAAO,KAAK,MAAM,IAAI;AAAA,IAC1B,OAAO;AACH,mBAAa,WAAW,MAAM;AAAA,IAClC;AAAA,EACJ;AAEA,QAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,YAAY;AAAA,IAClE,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,eAAa,QAAQ,QAAQ,KAAK,UAAU,MAAM,CAAC;AAEnD,SAAO,KAAK;AAChB;;;ACvCO,IAAM,YAAY,OAAO,QAAgE;AAC5F,QAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,oBAAoB,GAAG,EAAE;AAEnF,MAAI,CAAC,IAAI,IAAI;AACT,WAAO,EAAE,KAAU,OAAO,KAAK;AAAA,EACnC;AACA,QAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,SAAO;AACX;AASO,IAAM,YAAY,OAAO,KAAa,OAAe,WAAmC;AAC3F,MAAI;AAEA,QAAI,WAAW,QAAW;AACtB,eAAS;AAAA,IACb;AAEA,UAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,gBAAgB;AAAA,MAC1D,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,MAAM,KAAK,UAAU;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,IACL,CAAC;AAAA,EACL,SAAS,OAAO;AACZ,SAAK,kBAAkB;AAAA,MACnB,OAAO;AAAA,MACP,SAAS,0BAA0B,KAAK;AAAA,IAC5C,CAAC;AAAA,EACL;AACJ;;;ACzCO,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;;;ACHA,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,mBACsB;AACtB,MAAI,CAAC,gBAAgB,OAAQ,QAAO,EAAE,UAAU,MAAM,QAAQ,CAAC,EAAE;AAEjE,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,EAAE,UAAU,MAAM,OAAO;AAAA,IACpC;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,EAAE,UAAU,UAAU,OAAO;AACxC;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;;;AC1EO,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;AAAA,IACG,CAAC,UACG,GAAG,mBAAmB,MAAM,GAAG,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC;AAAA,EAC3E,EACC,KAAK,GAAG;AACb,SAAO;AACX;;;ACvBA,IAAM,cAAc,YAAoC;AACpD,MAAI;AACA,UAAM,WAAW,MAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,cAAc;AAAA,MACzE,QAAQ;AAAA,MACR,aAAa;AAAA,IACjB,CAAC;AAED,UAAM,UAAU,SAAS,QAAQ,IAAI,YAAY;AACjD,QAAI,YAAY,KAAM,QAAO;AAE7B,UAAM,MAAM,QAAQ,MAAM,GAAG,qBAAqB,GAAG;AACrD,QAAI,IAAI,UAAU,EAAG,QAAO;AAE5B,UAAM,QAAQ,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACjC,QAAI,UAAU,OAAW,OAAM,IAAI,MAAM,oBAAoB;AAE7D,WAAO;AAAA,EACX,SAAS,OAAO;AACZ,SAAK,kBAAkB;AAAA,MACnB,OAAO;AAAA,MACP,SAAS,4BAA4B,KAAK;AAAA,IAC9C,CAAC;AACD,WAAO;AAAA,EACX;AACJ;AAEO,IAAM,cAAc,YAAoC;AAC3D,MAAI;AACA,UAAM,WAAW,MAAM,UAAU,qBAAqB;AAEtD,QAAI,QAAQ;AACZ,QAAI,CAAC,YAAY,SAAS,UAAU,MAAM;AACtC,YAAM,cAAc,MAAM,YAAY;AAEtC,UAAI,gBAAgB,KAAM,OAAM,IAAI,MAAM,oBAAoB;AAE9D,cAAQ;AAAA,IACZ,OAAO;AACH,cAAQ,SAAS;AAAA,IACrB;AAEA,WAAO;AAAA,EACX,SAAS,OAAO;AACZ,SAAK,kBAAkB;AAAA,MACnB,OAAO;AAAA,MACP,SAAS,4BAA4B,KAAK;AAAA,IAC9C,CAAC;AAED,WAAO;AAAA,EACX;AACJ;;;AC/CO,IAAM,oBAAoB,CAAC,EAAE,WAAW,MAAmE;AAC9G,MAAI,cAAc,UAAa,WAAW,UAAU,GAAG;AACnD,WAAO;AAAA,MACH,iBAAiB,CAAC;AAAA,MAClB,aAAa,CAAC;AAAA,IAClB;AAAA,EACJ;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;AAAA,MACH,iBAAiB,CAAC;AAAA,MAClB,aAAa,CAAC;AAAA,IAClB;AAAA,EACJ;AAEA,QAAM,kBAAkB,mBAAmB,IAAI,CAAC,SAAS;AACrD,UAAM,gBAAgB,KAAK,MAAM,OAAO,CAACA,UAASA,MAAK,OAAO,UAAU;AACxE,WAAO;AAAA,MACH,QAAQ,KAAK;AAAA,MACb,MAAM,cAAc,CAAC,EAAE;AAAA,IAC3B;AAAA,EACJ,CAAC;AAED,QAAM,cAAc,mBAAmB,IAAI,CAAC,SAAS;AACjD,UAAM,gBAAgB,KAAK,MAAM,OAAO,CAACA,UAASA,MAAK,OAAO,MAAM;AACpE,WAAO;AAAA,MACH,QAAQ,KAAK;AAAA,MACb,MAAM,cAAc,CAAC,EAAE;AAAA,IAC3B;AAAA,EACJ,CAAC;AAED,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;","names":["item"]}
|
|
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","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\n\nexport const _generateShaKey = async (input: string): Promise<string> => {\n const encoder = new TextEncoder();\n const data = encoder.encode(input);\n const hashBuffer = await crypto.subtle.digest('SHA-1', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const base64url = btoa(String.fromCharCode(...hashArray))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n\n return base64url.slice(0, 12);\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}","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 = await _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\ntype ReturnType = {\n rootNode: DirectoryNodes | null,\n result: TreeOfContent[],\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<ReturnType> => {\n if (!directoryNodes?.length) return { rootNode: null, result: [] };\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 { rootNode: null, 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 { rootNode: response, 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 { FileRenditionType } from \"@c-rex/types\";\nimport { informationUnitsRenditions } from \"@c-rex/interfaces\";\n\ntype RenditionType = {\n filesToDownload: FileRenditionType[],\n filesToOpen: FileRenditionType[]\n}\nexport const getFileRenditions = ({ renditions }: { renditions: informationUnitsRenditions[] }): RenditionType => {\n if (renditions == undefined || renditions.length == 0) {\n return {\n filesToDownload: [],\n filesToOpen: [],\n };\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 filesToDownload: [],\n filesToOpen: [],\n };\n }\n\n const filesToDownload = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"download\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n });\n\n const filesToOpen = filteredRenditions.map((item) => {\n const filteredLinks = item.links.filter((item) => item.rel == \"view\");\n return {\n format: item.format,\n link: filteredLinks[0].href,\n };\n })\n\n return {\n filesToDownload: filesToDownload,\n filesToOpen: filesToOpen,\n }\n}"],"mappings":"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","names":["item"]}
|
package/dist/next-cookies.js.map
CHANGED
|
@@ -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\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 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"],"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 +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\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 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","'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":[]}
|