@c-rex/utils 0.1.11 → 0.1.13
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 +35 -2
- package/dist/index.d.ts +35 -2
- package/dist/index.js +26 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -19
- package/dist/index.mjs.map +1 -1
- package/dist/next-cookies.d.mts +1 -10
- package/dist/next-cookies.d.ts +1 -10
- package/dist/next-cookies.js +0 -50
- package/dist/next-cookies.js.map +1 -1
- package/dist/next-cookies.mjs +0 -24
- package/dist/next-cookies.mjs.map +1 -1
- package/package.json +1 -7
package/dist/index.d.mts
CHANGED
|
@@ -2,7 +2,6 @@ import { informationUnitsResponseItem, AvailableVersionsInterface, TreeOfContent
|
|
|
2
2
|
import { ClassValue } from 'clsx';
|
|
3
3
|
import { QueryParams, DocumentsType } from '@c-rex/types';
|
|
4
4
|
|
|
5
|
-
declare const _generateShaKey: (input: string) => string;
|
|
6
5
|
/**
|
|
7
6
|
* Retrieves the country code associated with a given language code.
|
|
8
7
|
* @param lang - The language code to look up (e.g., "en-US")
|
|
@@ -58,4 +57,38 @@ declare const getFileRenditions: ({ renditions }: {
|
|
|
58
57
|
*/
|
|
59
58
|
declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Sets a client-side cookie with the specified name, value, and expiration.
|
|
62
|
+
* This function manipulates cookies that are NOT httpOnly, meaning they are accessible via JavaScript.
|
|
63
|
+
* Cannot be used with httpOnly cookies as those are only accessible server-side.
|
|
64
|
+
*
|
|
65
|
+
* @param name - The name of the cookie to set
|
|
66
|
+
* @param value - The value to store in the cookie (will be URL encoded)
|
|
67
|
+
* @param days - Number of days until the cookie expires (default: 365)
|
|
68
|
+
* @throws {Error} When document is not defined (e.g., in server-side environment)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* setCookie('userToken', 'abc123', 30); // Expires in 30 days
|
|
73
|
+
* setCookie('theme', 'dark'); // Expires in 365 days (default)
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
declare const setCookie: (name: string, value: string, days?: number) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Retrieves the value of a client-side cookie by its name.
|
|
79
|
+
* This function reads cookies that are NOT httpOnly, meaning they are accessible via JavaScript.
|
|
80
|
+
* Cannot be used with httpOnly cookies as those are only accessible server-side.
|
|
81
|
+
*
|
|
82
|
+
* @param name - The name of the cookie to retrieve
|
|
83
|
+
* @returns The decoded cookie value, or an empty string if the cookie doesn't exist
|
|
84
|
+
* @throws {Error} When document is not defined (e.g., in server-side environment)
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const token = getCookie('userToken'); // Returns cookie value or ''
|
|
89
|
+
* const theme = getCookie('theme'); // Returns cookie value or ''
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare const getCookie: (name: string) => string;
|
|
93
|
+
|
|
94
|
+
export { call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, setCookie };
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { informationUnitsResponseItem, AvailableVersionsInterface, TreeOfContent
|
|
|
2
2
|
import { ClassValue } from 'clsx';
|
|
3
3
|
import { QueryParams, DocumentsType } from '@c-rex/types';
|
|
4
4
|
|
|
5
|
-
declare const _generateShaKey: (input: string) => string;
|
|
6
5
|
/**
|
|
7
6
|
* Retrieves the country code associated with a given language code.
|
|
8
7
|
* @param lang - The language code to look up (e.g., "en-US")
|
|
@@ -58,4 +57,38 @@ declare const getFileRenditions: ({ renditions }: {
|
|
|
58
57
|
*/
|
|
59
58
|
declare const call: <T = unknown>(method: string, params?: any) => Promise<T>;
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Sets a client-side cookie with the specified name, value, and expiration.
|
|
62
|
+
* This function manipulates cookies that are NOT httpOnly, meaning they are accessible via JavaScript.
|
|
63
|
+
* Cannot be used with httpOnly cookies as those are only accessible server-side.
|
|
64
|
+
*
|
|
65
|
+
* @param name - The name of the cookie to set
|
|
66
|
+
* @param value - The value to store in the cookie (will be URL encoded)
|
|
67
|
+
* @param days - Number of days until the cookie expires (default: 365)
|
|
68
|
+
* @throws {Error} When document is not defined (e.g., in server-side environment)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* setCookie('userToken', 'abc123', 30); // Expires in 30 days
|
|
73
|
+
* setCookie('theme', 'dark'); // Expires in 365 days (default)
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
declare const setCookie: (name: string, value: string, days?: number) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Retrieves the value of a client-side cookie by its name.
|
|
79
|
+
* This function reads cookies that are NOT httpOnly, meaning they are accessible via JavaScript.
|
|
80
|
+
* Cannot be used with httpOnly cookies as those are only accessible server-side.
|
|
81
|
+
*
|
|
82
|
+
* @param name - The name of the cookie to retrieve
|
|
83
|
+
* @returns The decoded cookie value, or an empty string if the cookie doesn't exist
|
|
84
|
+
* @throws {Error} When document is not defined (e.g., in server-side environment)
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const token = getCookie('userToken'); // Returns cookie value or ''
|
|
89
|
+
* const theme = getCookie('theme'); // Returns cookie value or ''
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare const getCookie: (name: string) => string;
|
|
93
|
+
|
|
94
|
+
export { call, cn, createAvailableVersionList, createParams, formatDateToLocale, generateBreadcrumbItems, generateQueryParams, generateTreeOfContent, getCookie, getCountryCodeByLang, getFileRenditions, setCookie };
|
package/dist/index.js
CHANGED
|
@@ -20,7 +20,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
-
_generateShaKey: () => _generateShaKey,
|
|
24
23
|
call: () => call,
|
|
25
24
|
cn: () => cn,
|
|
26
25
|
createAvailableVersionList: () => createAvailableVersionList,
|
|
@@ -29,8 +28,10 @@ __export(index_exports, {
|
|
|
29
28
|
generateBreadcrumbItems: () => generateBreadcrumbItems,
|
|
30
29
|
generateQueryParams: () => generateQueryParams,
|
|
31
30
|
generateTreeOfContent: () => generateTreeOfContent,
|
|
31
|
+
getCookie: () => getCookie,
|
|
32
32
|
getCountryCodeByLang: () => getCountryCodeByLang,
|
|
33
|
-
getFileRenditions: () => getFileRenditions
|
|
33
|
+
getFileRenditions: () => getFileRenditions,
|
|
34
|
+
setCookie: () => setCookie
|
|
34
35
|
});
|
|
35
36
|
module.exports = __toCommonJS(index_exports);
|
|
36
37
|
|
|
@@ -42,14 +43,6 @@ var FLAGS_BY_LANG = {
|
|
|
42
43
|
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
43
44
|
|
|
44
45
|
// src/utils.ts
|
|
45
|
-
var _generateShaKey = (input) => {
|
|
46
|
-
let hash = 0;
|
|
47
|
-
for (let i = 0; i < input.length; i++) {
|
|
48
|
-
hash = (hash << 5) - hash + input.charCodeAt(i);
|
|
49
|
-
hash |= 0;
|
|
50
|
-
}
|
|
51
|
-
return Math.abs(hash).toString(16);
|
|
52
|
-
};
|
|
53
46
|
var getCountryCodeByLang = (lang) => {
|
|
54
47
|
const mappedKeys = Object.keys(FLAGS_BY_LANG);
|
|
55
48
|
if (!mappedKeys.includes(lang)) {
|
|
@@ -115,11 +108,6 @@ var call = async (method, params) => {
|
|
|
115
108
|
});
|
|
116
109
|
const json = await res.json();
|
|
117
110
|
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
111
|
return json.data;
|
|
124
112
|
};
|
|
125
113
|
|
|
@@ -179,10 +167,15 @@ async function getChildrenInfo(childNodes, childItem) {
|
|
|
179
167
|
}
|
|
180
168
|
|
|
181
169
|
// src/params.ts
|
|
182
|
-
var createParams = (fieldsList, key = "Fields") =>
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
170
|
+
var createParams = (fieldsList, key = "Fields") => {
|
|
171
|
+
if (!fieldsList || fieldsList.length === 0) {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
return fieldsList.map((item) => ({
|
|
175
|
+
key,
|
|
176
|
+
value: item
|
|
177
|
+
}));
|
|
178
|
+
};
|
|
186
179
|
var generateQueryParams = (params) => {
|
|
187
180
|
const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
|
|
188
181
|
return queryParams;
|
|
@@ -213,9 +206,19 @@ var getFileRenditions = ({ renditions }) => {
|
|
|
213
206
|
});
|
|
214
207
|
return result;
|
|
215
208
|
};
|
|
209
|
+
|
|
210
|
+
// src/cookies.ts
|
|
211
|
+
var setCookie = (name, value, days = 365) => {
|
|
212
|
+
if (!document) throw new Error("Document is not defined");
|
|
213
|
+
const expires = new Date(Date.now() + days * 864e5).toUTCString();
|
|
214
|
+
document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
|
|
215
|
+
};
|
|
216
|
+
var getCookie = (name) => {
|
|
217
|
+
if (!document) throw new Error("Document is not defined");
|
|
218
|
+
return document.cookie.split("; ").find((row) => row.startsWith(name + "="))?.split("=")[1] || "";
|
|
219
|
+
};
|
|
216
220
|
// Annotate the CommonJS export names for ESM import in node:
|
|
217
221
|
0 && (module.exports = {
|
|
218
|
-
_generateShaKey,
|
|
219
222
|
call,
|
|
220
223
|
cn,
|
|
221
224
|
createAvailableVersionList,
|
|
@@ -224,7 +227,9 @@ var getFileRenditions = ({ renditions }) => {
|
|
|
224
227
|
generateBreadcrumbItems,
|
|
225
228
|
generateQueryParams,
|
|
226
229
|
generateTreeOfContent,
|
|
230
|
+
getCookie,
|
|
227
231
|
getCountryCodeByLang,
|
|
228
|
-
getFileRenditions
|
|
232
|
+
getFileRenditions,
|
|
233
|
+
setCookie
|
|
229
234
|
});
|
|
230
235
|
//# 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/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":[]}
|
|
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","../src/cookies.ts"],"sourcesContent":["export * from './utils';\nexport * from './breadcrumbs';\nexport * from './classMerge';\nexport * from './treeOfContent';\nexport * from './params';\nexport * from './renditions';\nexport * from './call';\nexport * from './cookies';","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 \"table-with-images\",\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};\n\nexport const MARKER_COLORS = [\n \"red-500\",\n \"orange-500\",\n \"yellow-400\",\n \"green-500\",\n \"teal-500\",\n \"blue-500\",\n \"sky-500\",\n \"purple-500\",\n \"pink-500\",\n \"gray-500\",\n \"neutral-800\",\n \"cyan-500\",\n \"lime-500\",\n \"amber-500\",\n \"indigo-500\",\n];","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\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 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 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 if (!fieldsList || fieldsList.length === 0) {\n return [];\n }\n\n return fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\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}","/**\n * Sets a client-side cookie with the specified name, value, and expiration.\n * This function manipulates cookies that are NOT httpOnly, meaning they are accessible via JavaScript.\n * Cannot be used with httpOnly cookies as those are only accessible server-side.\n * \n * @param name - The name of the cookie to set\n * @param value - The value to store in the cookie (will be URL encoded)\n * @param days - Number of days until the cookie expires (default: 365)\n * @throws {Error} When document is not defined (e.g., in server-side environment)\n * \n * @example\n * ```typescript\n * setCookie('userToken', 'abc123', 30); // Expires in 30 days\n * setCookie('theme', 'dark'); // Expires in 365 days (default)\n * ```\n */\nexport const setCookie = (name: string, value: string, days = 365) => {\n if (!document) throw new Error(\"Document is not defined\");\n\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;\n}\n\n/**\n * Retrieves the value of a client-side cookie by its name.\n * This function reads cookies that are NOT httpOnly, meaning they are accessible via JavaScript.\n * Cannot be used with httpOnly cookies as those are only accessible server-side.\n * \n * @param name - The name of the cookie to retrieve\n * @returns The decoded cookie value, or an empty string if the cookie doesn't exist\n * @throws {Error} When document is not defined (e.g., in server-side environment)\n * \n * @example\n * ```typescript\n * const token = getCookie('userToken'); // Returns cookie value or ''\n * const theme = getCookie('theme'); // Returns cookie value or ''\n * ```\n */\nexport const getCookie = (name: string): string => {\n if (!document) throw new Error(\"Document is not defined\");\n\n return document.cookie\n .split('; ')\n .find(row => row.startsWith(name + '='))\n ?.split('=')[1] || '';\n}"],"mappings":"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","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -6,14 +6,6 @@ var FLAGS_BY_LANG = {
|
|
|
6
6
|
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
7
7
|
|
|
8
8
|
// src/utils.ts
|
|
9
|
-
var _generateShaKey = (input) => {
|
|
10
|
-
let hash = 0;
|
|
11
|
-
for (let i = 0; i < input.length; i++) {
|
|
12
|
-
hash = (hash << 5) - hash + input.charCodeAt(i);
|
|
13
|
-
hash |= 0;
|
|
14
|
-
}
|
|
15
|
-
return Math.abs(hash).toString(16);
|
|
16
|
-
};
|
|
17
9
|
var getCountryCodeByLang = (lang) => {
|
|
18
10
|
const mappedKeys = Object.keys(FLAGS_BY_LANG);
|
|
19
11
|
if (!mappedKeys.includes(lang)) {
|
|
@@ -79,11 +71,6 @@ var call = async (method, params) => {
|
|
|
79
71
|
});
|
|
80
72
|
const json = await res.json();
|
|
81
73
|
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
74
|
return json.data;
|
|
88
75
|
};
|
|
89
76
|
|
|
@@ -143,10 +130,15 @@ async function getChildrenInfo(childNodes, childItem) {
|
|
|
143
130
|
}
|
|
144
131
|
|
|
145
132
|
// src/params.ts
|
|
146
|
-
var createParams = (fieldsList, key = "Fields") =>
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
133
|
+
var createParams = (fieldsList, key = "Fields") => {
|
|
134
|
+
if (!fieldsList || fieldsList.length === 0) {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
return fieldsList.map((item) => ({
|
|
138
|
+
key,
|
|
139
|
+
value: item
|
|
140
|
+
}));
|
|
141
|
+
};
|
|
150
142
|
var generateQueryParams = (params) => {
|
|
151
143
|
const queryParams = params.map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`).join("&");
|
|
152
144
|
return queryParams;
|
|
@@ -177,8 +169,18 @@ var getFileRenditions = ({ renditions }) => {
|
|
|
177
169
|
});
|
|
178
170
|
return result;
|
|
179
171
|
};
|
|
172
|
+
|
|
173
|
+
// src/cookies.ts
|
|
174
|
+
var setCookie = (name, value, days = 365) => {
|
|
175
|
+
if (!document) throw new Error("Document is not defined");
|
|
176
|
+
const expires = new Date(Date.now() + days * 864e5).toUTCString();
|
|
177
|
+
document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
|
|
178
|
+
};
|
|
179
|
+
var getCookie = (name) => {
|
|
180
|
+
if (!document) throw new Error("Document is not defined");
|
|
181
|
+
return document.cookie.split("; ").find((row) => row.startsWith(name + "="))?.split("=")[1] || "";
|
|
182
|
+
};
|
|
180
183
|
export {
|
|
181
|
-
_generateShaKey,
|
|
182
184
|
call,
|
|
183
185
|
cn,
|
|
184
186
|
createAvailableVersionList,
|
|
@@ -187,7 +189,9 @@ export {
|
|
|
187
189
|
generateBreadcrumbItems,
|
|
188
190
|
generateQueryParams,
|
|
189
191
|
generateTreeOfContent,
|
|
192
|
+
getCookie,
|
|
190
193
|
getCountryCodeByLang,
|
|
191
|
-
getFileRenditions
|
|
194
|
+
getFileRenditions,
|
|
195
|
+
setCookie
|
|
192
196
|
};
|
|
193
197
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":"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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","../src/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 \"table-with-images\",\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};\n\nexport const MARKER_COLORS = [\n \"red-500\",\n \"orange-500\",\n \"yellow-400\",\n \"green-500\",\n \"teal-500\",\n \"blue-500\",\n \"sky-500\",\n \"purple-500\",\n \"pink-500\",\n \"gray-500\",\n \"neutral-800\",\n \"cyan-500\",\n \"lime-500\",\n \"amber-500\",\n \"indigo-500\",\n];","import { FLAGS_BY_LANG } from \"@c-rex/constants\";\nimport { AvailableVersionsInterface, informationUnitsResponseItem } from \"@c-rex/interfaces\";\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 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 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 if (!fieldsList || fieldsList.length === 0) {\n return [];\n }\n\n return fieldsList.map((item) => ({\n key: key,\n value: item,\n }));\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}","/**\n * Sets a client-side cookie with the specified name, value, and expiration.\n * This function manipulates cookies that are NOT httpOnly, meaning they are accessible via JavaScript.\n * Cannot be used with httpOnly cookies as those are only accessible server-side.\n * \n * @param name - The name of the cookie to set\n * @param value - The value to store in the cookie (will be URL encoded)\n * @param days - Number of days until the cookie expires (default: 365)\n * @throws {Error} When document is not defined (e.g., in server-side environment)\n * \n * @example\n * ```typescript\n * setCookie('userToken', 'abc123', 30); // Expires in 30 days\n * setCookie('theme', 'dark'); // Expires in 365 days (default)\n * ```\n */\nexport const setCookie = (name: string, value: string, days = 365) => {\n if (!document) throw new Error(\"Document is not defined\");\n\n const expires = new Date(Date.now() + days * 864e5).toUTCString();\n document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;\n}\n\n/**\n * Retrieves the value of a client-side cookie by its name.\n * This function reads cookies that are NOT httpOnly, meaning they are accessible via JavaScript.\n * Cannot be used with httpOnly cookies as those are only accessible server-side.\n * \n * @param name - The name of the cookie to retrieve\n * @returns The decoded cookie value, or an empty string if the cookie doesn't exist\n * @throws {Error} When document is not defined (e.g., in server-side environment)\n * \n * @example\n * ```typescript\n * const token = getCookie('userToken'); // Returns cookie value or ''\n * const theme = getCookie('theme'); // Returns cookie value or ''\n * ```\n */\nexport const getCookie = (name: string): string => {\n if (!document) throw new Error(\"Document is not defined\");\n\n return document.cookie\n .split('; ')\n .find(row => row.startsWith(name + '='))\n ?.split('=')[1] || '';\n}"],"mappings":"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","names":[]}
|
package/dist/next-cookies.d.mts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
import { CookiesConfigs, ConfigInterface } from '@c-rex/interfaces';
|
|
2
1
|
|
|
3
|
-
|
|
4
|
-
* Retrieves and parses configuration data from a cookie.
|
|
5
|
-
* @returns The parsed configuration object
|
|
6
|
-
* @throws Error if the configuration cookie is not found or cannot be parsed
|
|
7
|
-
*/
|
|
8
|
-
declare const getClientConfigs: () => CookiesConfigs;
|
|
9
|
-
declare const getServerConfigs: () => Promise<ConfigInterface>;
|
|
10
|
-
|
|
11
|
-
export { getClientConfigs, getServerConfigs };
|
|
2
|
+
export { }
|
package/dist/next-cookies.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
import { CookiesConfigs, ConfigInterface } from '@c-rex/interfaces';
|
|
2
1
|
|
|
3
|
-
|
|
4
|
-
* Retrieves and parses configuration data from a cookie.
|
|
5
|
-
* @returns The parsed configuration object
|
|
6
|
-
* @throws Error if the configuration cookie is not found or cannot be parsed
|
|
7
|
-
*/
|
|
8
|
-
declare const getClientConfigs: () => CookiesConfigs;
|
|
9
|
-
declare const getServerConfigs: () => Promise<ConfigInterface>;
|
|
10
|
-
|
|
11
|
-
export { getClientConfigs, getServerConfigs };
|
|
2
|
+
export { }
|
package/dist/next-cookies.js
CHANGED
|
@@ -1,53 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
"use server";
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
|
|
21
|
-
// src/next-cookies.ts
|
|
22
|
-
var next_cookies_exports = {};
|
|
23
|
-
__export(next_cookies_exports, {
|
|
24
|
-
getClientConfigs: () => getClientConfigs,
|
|
25
|
-
getServerConfigs: () => getServerConfigs
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(next_cookies_exports);
|
|
28
|
-
|
|
29
|
-
// ../constants/src/index.ts
|
|
30
|
-
var SDK_CONFIG_KEY = "crex-sdk-config";
|
|
31
|
-
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
32
|
-
|
|
33
|
-
// src/next-cookies.ts
|
|
34
|
-
var import_headers = require("next/headers");
|
|
35
|
-
var getClientConfigs = () => {
|
|
36
|
-
const jsonConfigs = (0, import_headers.cookies)().get(SDK_CONFIG_KEY)?.value;
|
|
37
|
-
if (!jsonConfigs) {
|
|
38
|
-
throw new Error("Configs not found");
|
|
39
|
-
}
|
|
40
|
-
const configs = JSON.parse(jsonConfigs);
|
|
41
|
-
return configs;
|
|
42
|
-
};
|
|
43
|
-
var getServerConfigs = async () => {
|
|
44
|
-
const configs = await getClientConfigs();
|
|
45
|
-
const result = await fetch(`${configs.publicNextApiUrl}/api/config`);
|
|
46
|
-
return result.json();
|
|
47
|
-
};
|
|
48
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
-
0 && (module.exports = {
|
|
50
|
-
getClientConfigs,
|
|
51
|
-
getServerConfigs
|
|
52
|
-
});
|
|
53
3
|
//# sourceMappingURL=next-cookies.js.map
|
package/dist/next-cookies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/next-cookies.mjs
CHANGED
|
@@ -1,26 +1,2 @@
|
|
|
1
1
|
"use server";
|
|
2
|
-
|
|
3
|
-
// ../constants/src/index.ts
|
|
4
|
-
var SDK_CONFIG_KEY = "crex-sdk-config";
|
|
5
|
-
var DEFAULT_COOKIE_LIMIT = 30 * 24 * 60 * 60 * 1e3;
|
|
6
|
-
|
|
7
|
-
// src/next-cookies.ts
|
|
8
|
-
import { cookies } from "next/headers";
|
|
9
|
-
var getClientConfigs = () => {
|
|
10
|
-
const jsonConfigs = cookies().get(SDK_CONFIG_KEY)?.value;
|
|
11
|
-
if (!jsonConfigs) {
|
|
12
|
-
throw new Error("Configs not found");
|
|
13
|
-
}
|
|
14
|
-
const configs = JSON.parse(jsonConfigs);
|
|
15
|
-
return configs;
|
|
16
|
-
};
|
|
17
|
-
var getServerConfigs = async () => {
|
|
18
|
-
const configs = await getClientConfigs();
|
|
19
|
-
const result = await fetch(`${configs.publicNextApiUrl}/api/config`);
|
|
20
|
-
return result.json();
|
|
21
|
-
};
|
|
22
|
-
export {
|
|
23
|
-
getClientConfigs,
|
|
24
|
-
getServerConfigs
|
|
25
|
-
};
|
|
26
2
|
//# sourceMappingURL=next-cookies.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c-rex/utils",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist"
|
|
6
6
|
],
|
|
@@ -21,12 +21,6 @@
|
|
|
21
21
|
"import": "./dist/index.mjs",
|
|
22
22
|
"require": "./dist/index.js",
|
|
23
23
|
"default": "./dist/index.js"
|
|
24
|
-
},
|
|
25
|
-
"./next-cookies": {
|
|
26
|
-
"types": "./dist/next-cookies.d.ts",
|
|
27
|
-
"import": "./dist/next-cookies.mjs",
|
|
28
|
-
"require": "./dist/next-cookies.js",
|
|
29
|
-
"default": "./dist/next-cookies.js"
|
|
30
24
|
}
|
|
31
25
|
},
|
|
32
26
|
"devDependencies": {
|