c15t
Version:
Headless JavaScript consent management platform for cookie banners, privacy preferences, consent storage, and script gating.
98 lines (97 loc) • 2.64 kB
TypeScript
import type { InitOutput, JurisdictionCode } from '@c15t/schema/types';
import type { AllConsentNames } from './consent-types';
/**
* @packageDocumentation
* Provides types and interfaces for managing privacy compliance and consent across different regulatory frameworks.
*/
/**
* Represents the state of consents for different types of data processing.
*
* @remarks
* Maps each consent type to a boolean indicating whether consent has been granted.
* The consent types are defined by {@link AllConsentNames} and typically include
* categories like 'necessary', 'functional', 'analytics', etc.
*
* @example
* ```typescript
* const consentState: ConsentState = {
* necessary: true, // Required functionality
* functional: true, // Enhanced features
* analytics: false, // Usage tracking
* marketing: false // Marketing cookies
* };
* ```
*
* @public
*/
export type ConsentState = Record<AllConsentNames, boolean>;
/**
* Configuration for the consent manager's namespace.
*
* @remarks
* The namespace is used to:
* - Isolate consent manager instances
* - Prevent conflicts with other global variables
* - Support multiple consent managers on the same page
* - Maintain state persistence across page loads
*
* @example
* ```typescript
* // Basic usage with default namespace
* const defaultConfig: NamespaceProps = {};
*
* // Custom namespace for multiple instances
* const customConfig: NamespaceProps = {
* namespace: 'MyAppConsent'
* };
*
* // Multiple consent managers
* const configs = {
* main: { namespace: 'MainAppConsent' },
* subsite: { namespace: 'SubsiteConsent' }
* };
* ```
*
* @public
*/
export type NamespaceProps = {
/**
* Global namespace for the consent manager store.
*
* @defaultValue "c15tStore"
*/
namespace?: string;
};
/**
* Represents location information for the user.
*
* @remarks
* Contains country and region codes to determine applicable privacy regulations.
*
* @example
* ```typescript
* const location: LocationInfo = {
* countryCode: 'GB',
* regionCode: 'ENG'
* };
* ```
*
* @public
*/
export type LocationInfo = {
/** ISO country code (e.g., 'US', 'GB', 'DE') */
countryCode: string | null;
/** Region or state code within the country (e.g., 'CA', 'ENG') */
regionCode: string | null;
/** Jurisdiction code (e.g. 'GDPR') */
jurisdiction: JurisdictionCode | null;
};
/**
* Response from the consent banner API.
*
* @remarks
* Contains information about whether to show the consent banner and why.
*
* @public
*/
export type ConsentBannerResponse = InitOutput;