@catalystsoftware/ui 1.0.5 → 1.0.6
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/data/data.tsx +29 -29
- package/dist/data/tailwind.config.js +3821 -261
- package/dist/data.tsx +29 -29
- package/package.json +4 -3
- package/components/catalyst-ui/buttons/burger.tsx +0 -207
- package/components/catalyst-ui/core/data-display/timeline.tsx +0 -210
- package/components/catalyst-ui/core/feedback/alert.tsx +0 -491
- package/components/catalyst-ui/core/feedback/spinner-1.tsx +0 -65
- package/components/catalyst-ui/core/feedback/toast.tsx +0 -1857
- package/components/catalyst-ui/core/navigation/menu.tsx +0 -164
- package/components/catalyst-ui/forms/toggle-class.tsx +0 -176
- package/components/catalyst-ui/hooks/use-copy-to-clipboard.tsx +0 -419
- package/components/catalyst-ui/hooks/use-counter.tsx +0 -13
- package/components/catalyst-ui/hooks/use-event-listener.tsx +0 -23
- package/components/catalyst-ui/hooks/use-export-markdown.tsx +0 -47
- package/components/catalyst-ui/hooks/use-focus.tsx +0 -17
- package/components/catalyst-ui/hooks/use-interval.tsx +0 -23
- package/components/catalyst-ui/hooks/use-is-client.tsx +0 -16
- package/components/catalyst-ui/hooks/use-media-query.tsx +0 -19
- package/components/catalyst-ui/hooks/use-mobile.tsx +0 -19
- package/components/catalyst-ui/hooks/use-resize-observer.tsx +0 -81
- package/components/catalyst-ui/hooks/use-timeout.tsx +0 -21
- package/components/catalyst-ui/hooks/use-timer.tsx +0 -209
- package/components/catalyst-ui/hooks/use-toggle.tsx +0 -12
- package/components/catalyst-ui/media/image.tsx +0 -13
- package/components/catalyst-ui/overlays/dual-sidebar.tsx +0 -4142
- package/components/catalyst-ui/overlays/sidebar-original.tsx +0 -726
- package/components/catalyst-ui/primitives/accordion.tsx +0 -250
- package/components/catalyst-ui/primitives/alert-dialog.tsx +0 -126
- package/components/catalyst-ui/primitives/aspect-ratio.tsx +0 -9
- package/components/catalyst-ui/primitives/avatar.tsx +0 -296
- package/components/catalyst-ui/primitives/badge.tsx +0 -57
- package/components/catalyst-ui/primitives/breadcrumb.tsx +0 -101
- package/components/catalyst-ui/primitives/button.tsx +0 -265
- package/components/catalyst-ui/primitives/calendar-v4.tsx +0 -208
- package/components/catalyst-ui/primitives/calendar.tsx +0 -295
- package/components/catalyst-ui/primitives/card.tsx +0 -618
- package/components/catalyst-ui/primitives/carousel.tsx +0 -238
- package/components/catalyst-ui/primitives/chart.tsx +0 -347
- package/components/catalyst-ui/primitives/checkbox.tsx +0 -225
- package/components/catalyst-ui/primitives/collapsible.tsx +0 -212
- package/components/catalyst-ui/primitives/command.tsx +0 -393
- package/components/catalyst-ui/primitives/context-menu.tsx +0 -236
- package/components/catalyst-ui/primitives/dialog.tsx +0 -471
- package/components/catalyst-ui/primitives/drawer.tsx +0 -761
- package/components/catalyst-ui/primitives/dropdown-menu.tsx +0 -290
- package/components/catalyst-ui/primitives/empty.tsx +0 -104
- package/components/catalyst-ui/primitives/field.tsx +0 -244
- package/components/catalyst-ui/primitives/hover-card.tsx +0 -124
- package/components/catalyst-ui/primitives/input-otp.tsx +0 -76
- package/components/catalyst-ui/primitives/input.tsx +0 -64
- package/components/catalyst-ui/primitives/item.tsx +0 -196
- package/components/catalyst-ui/primitives/kbd.tsx +0 -75
- package/components/catalyst-ui/primitives/label.tsx +0 -24
- package/components/catalyst-ui/primitives/navigation-menu.tsx +0 -150
- package/components/catalyst-ui/primitives/pagination.tsx +0 -198
- package/components/catalyst-ui/primitives/popover.tsx +0 -232
- package/components/catalyst-ui/primitives/progress.tsx +0 -34
- package/components/catalyst-ui/primitives/radio-group.tsx +0 -43
- package/components/catalyst-ui/primitives/resizable.tsx +0 -56
- package/components/catalyst-ui/primitives/select.tsx +0 -155
- package/components/catalyst-ui/primitives/separator.tsx +0 -74
- package/components/catalyst-ui/primitives/sheet.tsx +0 -126
- package/components/catalyst-ui/primitives/skeleton.tsx +0 -15
- package/components/catalyst-ui/primitives/slider.tsx +0 -27
- package/components/catalyst-ui/primitives/switch.tsx +0 -187
- package/components/catalyst-ui/primitives/tabs.tsx +0 -335
- package/components/catalyst-ui/primitives/textarea.tsx +0 -24
- package/components/catalyst-ui/primitives/toggle-group.tsx +0 -55
- package/components/catalyst-ui/primitives/toggle.tsx +0 -42
- package/components/catalyst-ui/primitives/tooltip.tsx +0 -116
- package/components/catalyst-ui/utils/basic-auth.tsx +0 -40
- package/components/catalyst-ui/utils/context-storage.tsx +0 -19
- package/components/catalyst-ui/utils/cors-middleware.tsx +0 -71
- package/components/catalyst-ui/utils/deferred-content.tsx +0 -595
- package/components/catalyst-ui/utils/honeypot-middleware.tsx +0 -38
- package/components/catalyst-ui/utils/incId.tsx +0 -75
- package/components/catalyst-ui/utils/jwk-auth.tsx +0 -36
- package/components/catalyst-ui/utils/request-id.tsx +0 -14
- package/components/catalyst-ui/utils/secure-headers.tsx +0 -37
- package/components/catalyst-ui/utils/server-timing.tsx +0 -23
- package/components/catalyst-ui/utils/utils.ts +0 -43
- package/components/catalyst-ui/utils/with-cookie.tsx +0 -43
- package/components/catalyst-ui/x/accordian-x.tsx +0 -428
- package/components/catalyst-ui/x/alert-x.tsx +0 -413
- package/components/catalyst-ui/x/animated-text-x.tsx +0 -2242
- package/components/catalyst-ui/x/avatar-x.tsx +0 -515
- package/components/catalyst-ui/x/badge-x.tsx +0 -670
- package/components/catalyst-ui/x/button-X.tsx +0 -2857
- package/components/catalyst-ui/x/button-group-x.tsx +0 -847
- package/components/catalyst-ui/x/calendar-x.tsx +0 -1910
- package/components/catalyst-ui/x/card-x.tsx +0 -2597
- package/components/catalyst-ui/x/checkbox-x.tsx +0 -656
- package/components/catalyst-ui/x/collapsible-x.tsx +0 -1360
- package/components/catalyst-ui/x/combobox-x.tsx +0 -911
- package/components/catalyst-ui/x/data-table-x.tsx +0 -1753
- package/components/catalyst-ui/x/date-picker-x.tsx +0 -648
- package/components/catalyst-ui/x/dialog-x.tsx +0 -659
- package/components/catalyst-ui/x/dropdown-menu-x.tsx +0 -612
- package/components/catalyst-ui/x/hover-card-x.tsx +0 -375
- package/components/catalyst-ui/x/icon-x.tsx +0 -840
- package/components/catalyst-ui/x/input-mask-x.tsx +0 -981
- package/components/catalyst-ui/x/input-otp-x.tsx +0 -659
- package/components/catalyst-ui/x/loader-x.tsx +0 -1757
- package/components/catalyst-ui/x/pagination-x.tsx +0 -622
- package/components/catalyst-ui/x/popover-x.tsx +0 -744
- package/components/catalyst-ui/x/radio-group-x.tsx +0 -499
- package/components/catalyst-ui/x/select-x.tsx +0 -1127
- package/components/catalyst-ui/x/sheet-x.tsx +0 -668
- package/components/catalyst-ui/x/switch-x.tsx +0 -681
- package/components/catalyst-ui/x/table-x.tsx +0 -574
- package/components/catalyst-ui/x/tabs-x.tsx +0 -839
- package/components/catalyst-ui/x/textarea-x.tsx +0 -1263
- package/components/catalyst-ui/x/tooltip-x.tsx +0 -396
- package/components/catalyst-ui/x/tracker-x.tsx +0 -560
- package/data/bg-data.tsx +0 -901
- package/data/buttons-data.tsx +0 -2327
- package/data/charts-data.tsx +0 -102
- package/data/chat-data.tsx +0 -83
- package/data/code-data.tsx +0 -1040
- package/data/comboboxes-data.tsx +0 -1843
- package/data/command-data.tsx +0 -1381
- package/data/core-data.tsx +0 -15953
- package/data/crm-data.tsx +0 -47
- package/data/data.tsx +0 -159
- package/data/date-and-time-data.tsx +0 -554
- package/data/dependencies.tsx +0 -7
- package/data/ecommerce-data.tsx +0 -1387
- package/data/forms-data.tsx +0 -7890
- package/data/hooks-data.tsx +0 -5487
- package/data/index.ts +0 -34
- package/data/inputs-data.tsx +0 -557
- package/data/interactive-data.tsx +0 -5394
- package/data/lofi-data.tsx +0 -18295
- package/data/marketing-data.tsx +0 -2546
- package/data/media-data.tsx +0 -1510
- package/data/motion-data.tsx +0 -5801
- package/data/overlay-data.tsx +0 -4136
- package/data/pdf-data.tsx +0 -124
- package/data/pos-data.tsx +0 -213
- package/data/postcss.config.js +0 -6
- package/data/primitive-data.tsx +0 -5170
- package/data/prompt-data.tsx +0 -1226
- package/data/requiredLibs.ts +0 -4
- package/data/sandbox-data.tsx +0 -1
- package/data/sidebars-data.tsx +0 -5421
- package/data/stacks-data.tsx +0 -32
- package/data/table-data.tsx +0 -706
- package/data/tailwind.config.js +0 -270
- package/data/tailwind.config.ngin.js +0 -3830
- package/data/tailwind.css +0 -431
- package/data/tools-data.tsx +0 -6910
- package/data/typography-data.tsx +0 -2050
- package/data/utils-data.tsx +0 -6500
- package/data/x-data.tsx +0 -1171
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { prisma } from "~/modules/libs/prisma";
|
|
2
|
-
|
|
3
|
-
export async function IncId({ type }) {
|
|
4
|
-
// const dealerId = await IncId({ type: "Client" });
|
|
5
|
-
// Client, PO, PO Inv, Sales, WO, Unit, FinanceTradeUnit, ServiceUnit, Service, ServicePackages, Dealer
|
|
6
|
-
let oldId;
|
|
7
|
-
let newId;
|
|
8
|
-
switch (type) {
|
|
9
|
-
case "Client":
|
|
10
|
-
const lastClient = await prisma.clientfile.findFirst({
|
|
11
|
-
orderBy: { createdAt: "desc" }, // Get the last created item
|
|
12
|
-
select: { dealerId: true },
|
|
13
|
-
});
|
|
14
|
-
oldId = lastClient?.dealerId || "CLIENT_0"; // Default to "CLIENT-0" if no items exist
|
|
15
|
-
newId = incrementId(oldId, "CLIENT");
|
|
16
|
-
break;
|
|
17
|
-
case "Order":
|
|
18
|
-
const lastPAC = await prisma.accOrder.findFirst({
|
|
19
|
-
orderBy: { createdAt: "desc" },
|
|
20
|
-
select: { dealerId: true },
|
|
21
|
-
});
|
|
22
|
-
oldId = lastPAC?.dealerId || "PO_0";
|
|
23
|
-
newId = incrementId(oldId, "PO");
|
|
24
|
-
break;
|
|
25
|
-
case "Acc Inv":
|
|
26
|
-
const lastAcc = await prisma.accessories.findFirst({
|
|
27
|
-
orderBy: { createdAt: "desc" },
|
|
28
|
-
select: { dealerId: true },
|
|
29
|
-
});
|
|
30
|
-
oldId = lastAcc?.dealerId || "INV_0";
|
|
31
|
-
newId = incrementId(oldId, "INV");
|
|
32
|
-
break;
|
|
33
|
-
case "Ticket":
|
|
34
|
-
const lastTicket = await prisma.clientTickets.findFirst({
|
|
35
|
-
orderBy: { createdAt: "desc" },
|
|
36
|
-
select: { dealerId: true },
|
|
37
|
-
});
|
|
38
|
-
oldId = lastTicket?.dealerId || "TICKET_0";
|
|
39
|
-
newId = incrementId(oldId, "TICKET");
|
|
40
|
-
break;
|
|
41
|
-
case "Receipt":
|
|
42
|
-
const lastPayment = await prisma.payment.findFirst({
|
|
43
|
-
orderBy: { createdAt: "desc" },
|
|
44
|
-
select: { dealerId: true },
|
|
45
|
-
});
|
|
46
|
-
oldId = lastPayment?.dealerId || "RECEIPT_0";
|
|
47
|
-
newId = incrementId(oldId, "RECEIPT");
|
|
48
|
-
break;
|
|
49
|
-
case "User":
|
|
50
|
-
const lastUser = await prisma.user.findFirst({
|
|
51
|
-
orderBy: { createdAt: "desc" },
|
|
52
|
-
select: { dealerId: true },
|
|
53
|
-
});
|
|
54
|
-
oldId = lastUser?.dealerId || "USER_0";
|
|
55
|
-
newId = incrementId(oldId, "USER");
|
|
56
|
-
break;
|
|
57
|
-
default:
|
|
58
|
-
throw new Error("Invalid type");
|
|
59
|
-
}
|
|
60
|
-
return newId;
|
|
61
|
-
}
|
|
62
|
-
function incrementId(oldId, prefix) {
|
|
63
|
-
// Extract the numeric part using a regular expression
|
|
64
|
-
const numericMatch = oldId.match(/\d+/);
|
|
65
|
-
|
|
66
|
-
// If no numeric part is found, default to 0
|
|
67
|
-
const numericPart = numericMatch ? parseInt(numericMatch[0], 10) : 0;
|
|
68
|
-
|
|
69
|
-
// Increment the numeric part
|
|
70
|
-
const newNumericPart = numericPart + 1;
|
|
71
|
-
|
|
72
|
-
// Return the new ID in the format "PREFIX_{incrementedNumber}"
|
|
73
|
-
const result = prefix+"_"+newNumericPart
|
|
74
|
-
return result
|
|
75
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export function JWKAuthMiddleware() {
|
|
5
|
-
const validateJWT = useCallback(async (
|
|
6
|
-
token: string,
|
|
7
|
-
options: JWKAuthOptions
|
|
8
|
-
): Promise<any> => {
|
|
9
|
-
try {
|
|
10
|
-
return { valid: true, payload: { sub: 'user123' } };
|
|
11
|
-
} catch (error) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
}, []);
|
|
15
|
-
|
|
16
|
-
const requireJWTAuth = useCallback(async (
|
|
17
|
-
request: Request,
|
|
18
|
-
options: JWKAuthOptions
|
|
19
|
-
) => {
|
|
20
|
-
const authHeader = request.headers.get('authorization');
|
|
21
|
-
if (!authHeader?.startsWith('Bearer ')) {
|
|
22
|
-
return new Response('Unauthorized', { status: 401 });
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const token = authHeader.slice(7);
|
|
26
|
-
const validation = await validateJWT(token, options);
|
|
27
|
-
|
|
28
|
-
if (!validation) {
|
|
29
|
-
return new Response('Invalid token', { status: 401 });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return null;
|
|
33
|
-
}, [validateJWT]);
|
|
34
|
-
|
|
35
|
-
return { validateJWT, requireJWTAuth };
|
|
36
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
|
-
|
|
3
|
-
export function RequestIDMiddleware() {
|
|
4
|
-
const generateRequestId = useCallback(() => {
|
|
5
|
-
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
6
|
-
}, []);
|
|
7
|
-
|
|
8
|
-
const addRequestId = useCallback((request: Request): string => {
|
|
9
|
-
const existingId = request.headers.get('x-request-id');
|
|
10
|
-
return existingId || generateRequestId();
|
|
11
|
-
}, [generateRequestId]);
|
|
12
|
-
|
|
13
|
-
return { addRequestId, generateRequestId };
|
|
14
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
|
-
|
|
3
|
-
export function SecureHeadersMiddleware() {
|
|
4
|
-
const addSecurityHeaders = useCallback((
|
|
5
|
-
response: Response,
|
|
6
|
-
options: SecurityHeaders
|
|
7
|
-
): Response => {
|
|
8
|
-
const headers = new Headers(response.headers);
|
|
9
|
-
|
|
10
|
-
if (options.contentTypeOptions) {
|
|
11
|
-
headers.set('X-Content-Type-Options', 'nosniff');
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (options.frameOptions) {
|
|
15
|
-
headers.set('X-Frame-Options', options.frameOptions);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (options.xssProtection) {
|
|
19
|
-
headers.set('X-XSS-Protection', '1; mode=block');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (options.hsts) {
|
|
23
|
-
const hstsValue = `max-age=${options.hsts.maxAge}${
|
|
24
|
-
options.hsts.includeSubDomains ? '; includeSubDomains' : ''
|
|
25
|
-
}`;
|
|
26
|
-
headers.set('Strict-Transport-Security', hstsValue);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return new Response(response.body, {
|
|
30
|
-
status: response.status,
|
|
31
|
-
statusText: response.statusText,
|
|
32
|
-
headers,
|
|
33
|
-
});
|
|
34
|
-
}, []);
|
|
35
|
-
|
|
36
|
-
return { addSecurityHeaders };
|
|
37
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export function ServerTimingMiddleware() {
|
|
6
|
-
const addServerTiming = useCallback((name: string, duration: number, description?: string) => {
|
|
7
|
-
const timing = description
|
|
8
|
-
? `${name};dur=${duration};desc="${description}"`
|
|
9
|
-
: `${name};dur=${duration}`;
|
|
10
|
-
|
|
11
|
-
return (response: Response) => {
|
|
12
|
-
const existingTiming = response.headers.get('Server-Timing') || '';
|
|
13
|
-
const newTiming = existingTiming
|
|
14
|
-
? `${existingTiming}, ${timing}`
|
|
15
|
-
: timing;
|
|
16
|
-
|
|
17
|
-
response.headers.set('Server-Timing', newTiming);
|
|
18
|
-
return response;
|
|
19
|
-
};
|
|
20
|
-
}, []);
|
|
21
|
-
|
|
22
|
-
return { addServerTiming };
|
|
23
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { clsx, type ClassValue } from "clsx"
|
|
2
|
-
import { twMerge } from "tailwind-merge"
|
|
3
|
-
|
|
4
|
-
export function cn(...inputs: ClassValue[]) {
|
|
5
|
-
return twMerge(clsx(inputs))
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export const focusInput = [
|
|
9
|
-
// base
|
|
10
|
-
'focus:ring-2',
|
|
11
|
-
// ring color
|
|
12
|
-
'focus:ring-blue-200 focus:dark:ring-blue-700/30',
|
|
13
|
-
// border color
|
|
14
|
-
'focus:border-blue-500 focus:dark:border-blue-700',
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
// Tremor focusRing [v0.0.1]
|
|
18
|
-
|
|
19
|
-
export const focusRing = [
|
|
20
|
-
// base
|
|
21
|
-
'outline outline-offset-2 outline-0 focus-visible:outline-2',
|
|
22
|
-
// outline color
|
|
23
|
-
'outline-blue-500 dark:outline-blue-500',
|
|
24
|
-
];
|
|
25
|
-
|
|
26
|
-
// Tremor hasErrorInput [v0.0.1]
|
|
27
|
-
|
|
28
|
-
export const hasErrorInput = [
|
|
29
|
-
// base
|
|
30
|
-
'ring-2',
|
|
31
|
-
// border color
|
|
32
|
-
'border-red-500 dark:border-red-700',
|
|
33
|
-
// ring color
|
|
34
|
-
'ring-red-200 dark:ring-red-700/30',
|
|
35
|
-
];
|
|
36
|
-
|
|
37
|
-
export const formatDate = (date: Date): string => {
|
|
38
|
-
return date.toLocaleDateString("en-US", {
|
|
39
|
-
year: "numeric",
|
|
40
|
-
month: "long",
|
|
41
|
-
day: "numeric",
|
|
42
|
-
})
|
|
43
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback, useRef } from "react";
|
|
2
|
-
|
|
3
|
-
export function WithCookieMiddleware() {
|
|
4
|
-
const getCookie = useCallback((request: Request, name: string): string | null => {
|
|
5
|
-
const cookieHeader = request.headers.get('cookie');
|
|
6
|
-
if (!cookieHeader) return null;
|
|
7
|
-
|
|
8
|
-
const cookies = cookieHeader.split(';').map(c => c.trim());
|
|
9
|
-
const targetCookie = cookies.find(c => c.startsWith(`${name}=`));
|
|
10
|
-
|
|
11
|
-
return targetCookie ? targetCookie.split('=')[1] : null;
|
|
12
|
-
}, []);
|
|
13
|
-
|
|
14
|
-
const setCookie = useCallback((
|
|
15
|
-
response: Response,
|
|
16
|
-
name: string,
|
|
17
|
-
value: string,
|
|
18
|
-
options: {
|
|
19
|
-
maxAge?: number;
|
|
20
|
-
expires?: Date;
|
|
21
|
-
path?: string;
|
|
22
|
-
domain?: string;
|
|
23
|
-
secure?: boolean;
|
|
24
|
-
httpOnly?: boolean;
|
|
25
|
-
sameSite?: 'strict' | 'lax' | 'none';
|
|
26
|
-
} = {}
|
|
27
|
-
): Response => {
|
|
28
|
-
const cookieParts = [`${name}=${value}`];
|
|
29
|
-
|
|
30
|
-
if (options.maxAge) cookieParts.push(`Max-Age=${options.maxAge}`);
|
|
31
|
-
if (options.expires) cookieParts.push(`Expires=${options.expires.toUTCString()}`);
|
|
32
|
-
if (options.path) cookieParts.push(`Path=${options.path}`);
|
|
33
|
-
if (options.domain) cookieParts.push(`Domain=${options.domain}`);
|
|
34
|
-
if (options.secure) cookieParts.push('Secure');
|
|
35
|
-
if (options.httpOnly) cookieParts.push('HttpOnly');
|
|
36
|
-
if (options.sameSite) cookieParts.push(`SameSite=${options.sameSite}`);
|
|
37
|
-
|
|
38
|
-
response.headers.set('Set-Cookie', cookieParts.join('; '));
|
|
39
|
-
return response;
|
|
40
|
-
}, []);
|
|
41
|
-
|
|
42
|
-
return { getCookie, setCookie };
|
|
43
|
-
}
|