open-index/open-npm huggingface dataset:
npm package: @financial-times/ads-heavy-ad-reporting
Description: This package sets up an instance of the [`ReportingObserver`](https://developer.mozilla.org/en-US/docs/Web/API/ReportingObserver/ReportingObserver) class, which collects reports of type `intervention` generated by the browser.
Latest version: 7.4.0

# ads-heavy-ad-reporting
This package sets up an instance of the [`ReportingObserver`](https://developer.mozilla.org/en-US/docs/Web/API/ReportingObserver/ReportingObserver) class, which collects reports of type `intervention` generated by the browser.

A `callback` is executed every time a report is created, which subsequently sends a post message - with type `oAds.heavyAdIntervention` - to the parent window.

## Google Chrome's Heavy Ads Intervention
The Google Chrome browser generates a report whenever a heavy ad is detected, and immediately removes the third-party creative from the iframe.
Unfortunately the intervention is not guaranteed.

However, because the intervention will literally remove the page from the iframe, a failsafe is added to ensure that the report is definitely captured before the page is gone completely, for example, an ad within an iframe.
See also, Google's documentation [What happens when an ad is removed?](https://developer.chrome.com/blog/heavy-ad-interventions/#what-happens-when-an-ad-is-removed)

## Usage

```javascript
/** @typedef {import("$typings/heavy-ad-reporting")} */

import { monitorHeavyAdsIntervention } from '@financial-times/ads-heavy-ad-reporting';

/**
 * Process the reports
 * @param {HeavyAdReportingT.Report[]} reports
 */
const onReportsReceived = reports => {
	for (let report of reports) {
        console.log('Report detected', report);
	}
}

monitorHeavyAdsIntervention({
	onReportsReceived
})
```