open-index/open-npm huggingface dataset:
npm package: @orfon/didomi-types
Description: TypeScript definitions for Didomi Web SDK (window.Didomi)
Author: dev.ORF.at
Latest version: 1.0.0

# @orfon/didomi-types

TypeScript type definitions for the [Didomi Web SDK](https://developers.didomi.io/cmp/web-sdk/reference/api). This package augments the global `Window` interface so `window.Didomi`, `window.didomiOnReady`, `window.didomiConfig`, and `window.__tcfapi` are properly typed.

## Installation

```bash
npm install @orfon/didomi-types --save-dev
```

## Usage

After installing, the global `Window` interface is augmented automatically — no manual `import` needed for window properties.

### Typed `didomiOnReady` callback

The callback parameter is typed as `IDidomiObject`, so all SDK methods and their return types are available:

```typescript
window.didomiOnReady = window.didomiOnReady || [];
window.didomiOnReady.push((Didomi) => {
  // Didomi is typed as IDidomiObject
  // .getCurrentUserStatus() returns CurrentUserStatus
  const status = Didomi.getCurrentUserStatus();
  status.user_id; // string
  status.regulation; // string
  status.purposes; // Map<PurposeStatus>
  status.vendors; // Map<VendorStatus>
});
```

### Type-checked events

`EventType` is a string union — typos and invalid event names are caught at compile time:

```typescript
window.didomiOnReady?.push((Didomi) => {
  Didomi.on('consent.changed', () => {}); // ok
  Didomi.on('notice.shown', () => {});    // ok
  Didomi.on('conset.changed', () => {});  // TS error: not assignable to EventType
});
```

### Importing types directly

You can import types for use in your own function signatures:

```typescript
import type { CurrentUserStatus, Vendor, Purpose, EventType } from '@orfon/didomi-types';

function handleConsentChange(status: CurrentUserStatus): void {
  const enabledVendors = Object.values(status.vendors)
    .filter((v) => v.enabled);
  // ...
}
```

### Typed `didomiConfig`

Configuration is typed as `DidomiConfig`, giving you autocomplete and validation:

```typescript
window.didomiConfig = {
  app: {
    apiKey: 'your-api-key',
    name: 'Your App',
  },
  languages: {
    enabled: ['en', 'de'],
    default: 'en',
  },
};
```

## Exported Types

The main types provided by this package:

| Type | Description |
| --- | --- |
| `IDidomiObject` | The main SDK object (`window.Didomi`) |
| `CurrentUserStatus` | Return type of `getCurrentUserStatus()` |
| `Vendor` / `VendorStatus` | Vendor definitions and consent status |
| `Purpose` / `PurposeStatus` | Purpose definitions and consent status |
| `EventType` | String union of all SDK event names |
| `DidomiConfig` | Configuration object for `window.didomiConfig` |
| `CurrentUserStatusTransaction` | Transaction for batch consent updates |
| `TcfApi` | IAB TCF v2 API (`window.__tcfapi`) |

## License

[Modified BSD License (BSD-3)](LICENSE.md)