
Security News
/Research
Popular node-ipc npm Package Infected with Credential Stealer
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.
@contentpass/react-native-contentpass-cmp-onetrust
Advanced tools
A OneTrust CMP adapter for @contentpass/react-native-contentpass. Bridges the OneTrust SDK (react-native-onetrust-cmp) to the Contentpass CmpAdapter interface, so the Contentpass consent layer can manage consent through OneTrust.
npm install @contentpass/react-native-contentpass-cmp-onetrust
# or
yarn add @contentpass/react-native-contentpass-cmp-onetrust
@contentpass/react-native-contentpassreact-native-onetrust-cmp — the OneTrust React Native SDK must be installed and configured in your projectreact-native-onetrust-cmpThe upstream react-native-onetrust-cmp package does not expose getPreferenceCenterData and getBannerData as native methods, which this adapter requires. You need to apply a patch using patch-package.
patch-package:
npm install --save-dev patch-package postinstall-postinstall
postinstall script to your package.json:
"scripts": {
"postinstall": "patch-package"
}
examples/onetrust/patches/ into a patches/ directory in your project root.npm install (or yarn) to apply the patch.This package ships an Expo config plugin that fixes a compatibility issue between react-native-app-auth and Expo SDK 55+. To use it, add both plugins to your app.json:
{
"expo": {
"plugins": [
"react-native-app-auth",
"@contentpass/react-native-contentpass-cmp-onetrust"
]
}
}
First, initialize the OneTrust SDK, then create the adapter using createOnetrustCmpAdapter:
import OTPublishersNativeSDK from 'react-native-onetrust-cmp';
import { createOnetrustCmpAdapter } from '@contentpass/react-native-contentpass-cmp-onetrust';
import type { CmpAdapter } from '@contentpass/react-native-contentpass';
// 1. Start the OneTrust SDK
await OTPublishersNativeSDK.startSDK(
'cdn.cookielaw.org', // CDN location
'YOUR_APP_ID', // OneTrust app ID
'en', // language code
{}, // params
false // auto-show banner
);
// 2. Create the CMP adapter
const cmpAdapter: CmpAdapter = await createOnetrustCmpAdapter(OTPublishersNativeSDK);
The returned cmpAdapter can then be passed to ContentpassConsentGate from @contentpass/react-native-contentpass-ui, or used directly via the CmpAdapter interface.
import { useEffect, useState } from 'react';
import { View, Text } from 'react-native';
import OTPublishersNativeSDK from 'react-native-onetrust-cmp';
import { ContentpassSdkProvider } from '@contentpass/react-native-contentpass';
import { ContentpassConsentGate } from '@contentpass/react-native-contentpass-ui';
import { createOnetrustCmpAdapter } from '@contentpass/react-native-contentpass-cmp-onetrust';
import type { CmpAdapter } from '@contentpass/react-native-contentpass';
export default function App() {
const [cmpAdapter, setCmpAdapter] = useState<CmpAdapter | null>(null);
useEffect(() => {
OTPublishersNativeSDK.startSDK('cdn.cookielaw.org', 'YOUR_APP_ID', 'en', {}, false)
.then(() => createOnetrustCmpAdapter(OTPublishersNativeSDK))
.then((adapter) => setCmpAdapter(adapter))
.catch((error) => console.error('Failed to initialize CMP', error));
}, []);
if (!cmpAdapter) {
return <Text>Loading...</Text>;
}
return (
<ContentpassSdkProvider contentpassConfig={contentpassConfig}>
<ContentpassConsentGate
cmpAdapter={cmpAdapter}
contentpassConfig={contentpassConfig}
>
<View>
<Text>Your app content</Text>
</View>
</ContentpassConsentGate>
</ContentpassSdkProvider>
);
}
For a complete working example, see the examples/onetrust directory.
createOnetrustCmpAdapter(sdk)Factory function that creates a CmpAdapter from an initialized OneTrust SDK instance.
| Parameter | Type | Description |
|---|---|---|
sdk | OTPublishersNativeSDK | An initialized OneTrust SDK instance (after startSDK has resolved). |
Returns Promise<CmpAdapter>.
The adapter fetches banner and preference center data from the OneTrust SDK during creation, and automatically extracts TCF purpose IDs and the vendor count.
CmpAdapter methods provided| Method | Description |
|---|---|
acceptAll() | Saves "accept all" consent via OneTrust. |
denyAll() | Saves "reject all" consent via OneTrust. |
hasFullConsent() | Checks whether all consent categories are granted. |
onConsentStatusChange(callback) | Registers a listener that fires whenever full-consent status changes. Returns an unsubscribe function. |
showSecondLayer(view) | Opens the OneTrust preference center ('purpose') or vendor list ('vendor') UI. The returned promise resolves when the user dismisses it. |
getRequiredPurposes() | Returns the list of TCF purpose identifiers extracted from OneTrust. |
getNumberOfVendors() | Returns the vendor count parsed from the OneTrust banner data. |
waitForInit() | Resolves immediately (OneTrust initialization is handled before adapter creation). |
MIT
FAQs
Contentpass OneTrust CMP adapter
We found that @contentpass/react-native-contentpass-cmp-onetrust demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
/Research
Socket detected malicious node-ipc versions with obfuscated stealer/backdoor behavior in a developing npm supply chain attack.

Security News
TeamPCP and BreachForums are promoting a Shai-Hulud supply chain attack contest with a $1,000 prize for the biggest package compromise.

Security News
Packagist urges PHP projects to update Composer after a GitHub token format change exposed some GitHub Actions tokens in CI logs.