@use-cookie-consent/core
Version:
React hook for managing GDPR cookie consent state.
68 lines (67 loc) • 2.67 kB
TypeScript
import { CookieAttributes } from 'js-cookie';
export interface DurationCookieTypes {
session?: boolean;
persistent?: boolean;
}
export interface PurposeCookieTypes {
necessary?: boolean;
preferences?: boolean;
statistics?: boolean;
marketing?: boolean;
}
export interface ProvenanceCookieTypes {
firstParty?: boolean;
thirdParty?: boolean;
}
declare type CookieTypes = PurposeCookieTypes & DurationCookieTypes & ProvenanceCookieTypes;
export declare type AllCookieTypeKeys = keyof CookieTypes;
export declare type CookieDurationType = keyof DurationCookieTypes;
export declare type CookiePurposeType = keyof PurposeCookieTypes;
export declare type CookieProvenanceType = keyof ProvenanceCookieTypes;
export interface SetCookieProps {
purpose: CookiePurposeType;
duration: CookieDurationType;
provenance: CookieProvenanceType;
}
export interface CookieWrapper {
set: <T extends object = object>(name: string, value: string | T, props: SetCookieProps, options?: Cookies.CookieAttributes) => string | undefined;
get: (name: string) => string | undefined;
getAll: () => Record<string, string>;
getJSON: (name: string) => any;
getAllJSON: () => Record<string, any>;
remove: (name: string, options?: CookieAttributes) => void;
}
export declare type DidDeclineAllHandler = (opts?: {
includingNecessary: boolean;
}) => boolean;
export interface ConsentHookActions {
acceptCookies: (cookies: CookieTypes, options?: AcceptCookiesOptions) => void;
declineAllCookies: () => void;
acceptAllCookies: () => void;
didAcceptAll: () => boolean;
didDeclineAll: DidDeclineAllHandler;
}
export declare type ConsentState = CookieTypes;
export interface CookieConsentHookState extends ConsentHookActions {
cookies?: CookieWrapper;
consent: ConsentState;
}
export interface StorageConsentHookState extends ConsentHookActions {
storage: Storage;
consent: ConsentState;
}
export declare type UseCookieConsentHookType = (options?: CookieConsentHookOptions) => CookieConsentHookState;
export declare type UseStorageConsentHookType = (options?: StorageConsentHookOptions) => StorageConsentHookState;
export declare type UseConsentHookType = UseCookieConsentHookType | UseStorageConsentHookType;
export interface CookieConsentHookOptions {
defaultConsent?: ConsentState;
consentCookieAttributes?: CookieAttributes;
}
export interface StorageConsentHookOptions {
defaultConsent?: ConsentState;
storage?: Storage;
}
export interface AcceptCookiesOptions {
allowChangingNecessary?: boolean;
}
export {};