Socket
Socket
Sign inDemoInstall

@schibsted/niche-ads

Package Overview
Dependencies
Maintainers
8
Versions
60
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@schibsted/niche-ads - npm Package Compare versions

Comparing version 5.1.9 to 5.2.0

4

lib/Ads.d.ts

@@ -45,2 +45,6 @@ import type { AdsConfig, Device, EidsConfig, GlimrConfig, LoadAdsArguments, Placement, PlacementConfig, Ppids, WallpaperConfig, invCodeBuilderSignature } from './types';

initialize: () => Promise<void>;
private _buildPlacementTag;
private _setPlacement;
private _cleanUpPlacements;
private _subscribeToEvents;
loadAds: ({ pageType, keywords, allowlist, blocklist }: LoadAdsArguments) => Promise<void>;

@@ -47,0 +51,0 @@ private _handleLoadAdsReload;

94

lib/Ads.js

@@ -112,2 +112,55 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

});
this._buildPlacementTag = (placementConfig, pageType) => {
const mergedPlacementConfig = Object.assign(Object.assign({}, this._adsConfig.placements.common), placementConfig);
return Object.assign(Object.assign({ invCode: this._invCodeBuilder(placementConfig, this._device, pageType) }, mergedPlacementConfig), { keywords: Object.assign({ 'no-sno-targetid': [placementConfig.targetId], 'no-sno-adformat': placementConfig.adFormat }, mergedPlacementConfig.keywords) });
};
this._setPlacement = (placement, placementConfig) => {
this._placements = Object.assign(Object.assign({}, this._placements), { [placementConfig.targetId]: placement });
this._sendPlacementEvent(placementConfig.targetId, placement, placementConfig);
};
this._cleanUpPlacements = (placementsConfig) => {
placementsConfig.forEach((placementConfig) => {
if (placementConfig.backfill) {
this._cleanUpPlacements([placementConfig.backfill]);
}
cleanUpPlacement(placementConfig.targetId);
});
};
this._subscribeToEvents = (placementConfig, pageType) => {
onEvent(APPNEXUS_EVENT_TYPES.adLoaded, placementConfig.targetId, (data) => {
if (data.source === 'csm') {
this._placementsMediation[placementConfig.targetId] = true;
}
if (this._placementsMediation[placementConfig.targetId] && data.source !== 'csm') {
this._setPlacement(data, placementConfig);
}
});
onEvent(APPNEXUS_EVENT_TYPES.adAvailable, placementConfig.targetId, (data) => {
this._setPlacement(data, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adBadRequest, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adError, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adCollapse, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adNoBid, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
if (placementConfig.backfill) {
const placementTag = this._buildPlacementTag(placementConfig.backfill, pageType);
defineTag(placementTag);
this._subscribeToEvents(placementConfig.backfill, pageType);
loadTags();
}
});
onEvent(APPNEXUS_EVENT_TYPES.adRequestFailure, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequested, placementConfig.targetId, () => {
this._setPlacement(undefined, placementConfig);
});
};
this.loadAds = ({ pageType, keywords, allowlist, blocklist }) => __awaiter(this, void 0, void 0, function* () {

@@ -170,46 +223,11 @@ var _a, _b, _c, _d, _e;

}
this._placementsConfig.forEach((placementConfig) => {
cleanUpPlacement(placementConfig.targetId);
});
this._cleanUpPlacements(this._placementsConfig);
this._placementsConfig = newPlacementConfig;
if (((_e = this._placementsConfig) === null || _e === void 0 ? void 0 : _e.length) > 0) {
const placementsConfigsChunks = splitEvery(APPNEXUS_PLACEMENTS_PER_REQUEST_LIMIT, this._placementsConfig);
const setPlacement = (placement, placementConfig) => {
this._placements = Object.assign(Object.assign({}, this._placements), { [placementConfig.targetId]: placement });
this._sendPlacementEvent(placementConfig.targetId, placement, placementConfig);
};
placementsConfigsChunks.forEach((placementsConfigChunk) => {
placementsConfigChunk.forEach((placementConfig) => {
const mergedPlacementConfig = Object.assign(Object.assign({}, this._adsConfig.placements.common), placementConfig);
const placementTag = Object.assign(Object.assign({ invCode: this._invCodeBuilder(placementConfig, this._device, pageType) }, mergedPlacementConfig), { keywords: Object.assign({ 'no-sno-targetid': [placementConfig.targetId], 'no-sno-adformat': placementConfig.adFormat }, mergedPlacementConfig.keywords) });
const placementTag = this._buildPlacementTag(placementConfig, pageType);
defineTag(placementTag);
onEvent(APPNEXUS_EVENT_TYPES.adLoaded, placementConfig.targetId, (data) => {
if (data.source === 'csm') {
this._placementsMediation[placementConfig.targetId] = true;
}
if (this._placementsMediation[placementConfig.targetId] && data.source !== 'csm') {
setPlacement(data, placementConfig);
}
});
onEvent(APPNEXUS_EVENT_TYPES.adAvailable, placementConfig.targetId, (data) => {
setPlacement(data, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adBadRequest, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adError, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adCollapse, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adNoBid, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequestFailure, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequested, placementConfig.targetId, () => {
setPlacement(undefined, placementConfig);
});
this._subscribeToEvents(placementConfig, pageType);
});

@@ -216,0 +234,0 @@ loadTags();

@@ -36,2 +36,3 @@ export declare enum Device {

keywords?: Keywords;
backfill?: PlacementConfig;
};

@@ -38,0 +39,0 @@ export type AppnexusPlacement = Partial<{

@@ -7,9 +7,17 @@ import { useEffect, useMemo, useState } from 'react';

useEffect(() => {
const backfillTargetIds = [];
const listener = (e) => {
const data = e.detail;
setPlacement(data.placement);
// placementConfig doesn't change so we save some computation not sending it when clearing placements
if (data.placementConfig) {
setPlacementConfig(data.placementConfig);
const placementConfig = data.placementConfig;
if (data.placement === null && (placementConfig === null || placementConfig === void 0 ? void 0 : placementConfig.backfill)) {
backfillTargetIds.push(placementConfig.backfill.targetId);
adsInstance.eventTarget.addEventListener(placementConfig.backfill.targetId, listener);
}
else {
setPlacement(data.placement);
// placementConfig doesn't change so we save some computation not sending it when clearing placements
if (placementConfig) {
setPlacementConfig(placementConfig);
}
}
};

@@ -21,2 +29,5 @@ const data = adsInstance.getPlacement(targetId);

adsInstance.eventTarget.removeEventListener(targetId, listener);
backfillTargetIds.forEach((backfillTargetId) => {
adsInstance.eventTarget.removeEventListener(backfillTargetId, listener);
});
};

@@ -23,0 +34,0 @@ }, [adsInstance, targetId]);

{
"name": "@schibsted/niche-ads",
"version": "5.1.9",
"version": "5.2.0",
"description": "Package containing ads logic reappearing across our projects",

@@ -30,3 +30,3 @@ "main": "lib/index.js",

},
"gitHead": "8d1c4ab6c38665305a7daecf4051a2d0179dac43"
"gitHead": "637b12b4fe671f42ea1611886ac259d5a7c6bce5"
}

@@ -212,2 +212,67 @@ import { script, eventTarget } from '@schibsted/niche-utils';

private _buildPlacementTag = (placementConfig: PlacementConfig, pageType: PageType) => {
const mergedPlacementConfig = { ...this._adsConfig.placements.common, ...placementConfig };
return {
invCode: this._invCodeBuilder(placementConfig, this._device as Device, pageType),
...mergedPlacementConfig,
keywords: {
'no-sno-targetid': [placementConfig.targetId],
'no-sno-adformat': placementConfig.adFormat,
...mergedPlacementConfig.keywords,
},
};
};
private _setPlacement = (placement: Placement, placementConfig: PlacementConfig) => {
this._placements = { ...this._placements, [placementConfig.targetId]: placement };
this._sendPlacementEvent(placementConfig.targetId, placement, placementConfig);
};
private _cleanUpPlacements = (placementsConfig: PlacementConfig[]) => {
placementsConfig.forEach((placementConfig) => {
if (placementConfig.backfill) {
this._cleanUpPlacements([placementConfig.backfill]);
}
cleanUpPlacement(placementConfig.targetId);
});
};
private _subscribeToEvents = (placementConfig: PlacementConfig, pageType: PageType) => {
onEvent(APPNEXUS_EVENT_TYPES.adLoaded, placementConfig.targetId, (data: AppnexusPlacement) => {
if (data.source === 'csm') {
this._placementsMediation[placementConfig.targetId] = true;
}
if (this._placementsMediation[placementConfig.targetId] && data.source !== 'csm') {
this._setPlacement(data, placementConfig);
}
});
onEvent(APPNEXUS_EVENT_TYPES.adAvailable, placementConfig.targetId, (data: AppnexusPlacement) => {
this._setPlacement(data, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adBadRequest, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adError, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adCollapse, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adNoBid, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
if (placementConfig.backfill) {
const placementTag = this._buildPlacementTag(placementConfig.backfill, pageType);
defineTag(placementTag);
this._subscribeToEvents(placementConfig.backfill, pageType);
loadTags();
}
});
onEvent(APPNEXUS_EVENT_TYPES.adRequestFailure, placementConfig.targetId, () => {
this._setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequested, placementConfig.targetId, () => {
this._setPlacement(undefined, placementConfig);
});
};
loadAds = async ({ pageType, keywords, allowlist, blocklist }: LoadAdsArguments) => {

@@ -295,5 +360,3 @@ this._hasClearPlacementsBeenCalledLast = false;

this._placementsConfig.forEach((placementConfig) => {
cleanUpPlacement(placementConfig.targetId);
});
this._cleanUpPlacements(this._placementsConfig);

@@ -305,50 +368,7 @@ this._placementsConfig = newPlacementConfig;

const setPlacement = (placement: Placement, placementConfig: PlacementConfig) => {
this._placements = { ...this._placements, [placementConfig.targetId]: placement };
this._sendPlacementEvent(placementConfig.targetId, placement, placementConfig);
};
placementsConfigsChunks.forEach((placementsConfigChunk: PlacementConfig[]) => {
placementsConfigChunk.forEach((placementConfig: PlacementConfig) => {
const mergedPlacementConfig = { ...this._adsConfig.placements.common, ...placementConfig };
const placementTag = {
invCode: this._invCodeBuilder(placementConfig, this._device as Device, pageType),
...mergedPlacementConfig,
keywords: {
'no-sno-targetid': [placementConfig.targetId],
'no-sno-adformat': placementConfig.adFormat,
...mergedPlacementConfig.keywords,
},
};
const placementTag = this._buildPlacementTag(placementConfig, pageType);
defineTag(placementTag);
onEvent(APPNEXUS_EVENT_TYPES.adLoaded, placementConfig.targetId, (data: AppnexusPlacement) => {
if (data.source === 'csm') {
this._placementsMediation[placementConfig.targetId] = true;
}
if (this._placementsMediation[placementConfig.targetId] && data.source !== 'csm') {
setPlacement(data, placementConfig);
}
});
onEvent(APPNEXUS_EVENT_TYPES.adAvailable, placementConfig.targetId, (data: AppnexusPlacement) => {
setPlacement(data, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adBadRequest, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adError, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adCollapse, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adNoBid, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequestFailure, placementConfig.targetId, () => {
setPlacement(null, placementConfig);
});
onEvent(APPNEXUS_EVENT_TYPES.adRequested, placementConfig.targetId, () => {
setPlacement(undefined, placementConfig);
});
this._subscribeToEvents(placementConfig, pageType);
});

@@ -355,0 +375,0 @@ loadTags();

@@ -40,2 +40,3 @@ export enum Device {

keywords?: Keywords;
backfill?: PlacementConfig;
};

@@ -42,0 +43,0 @@

@@ -12,9 +12,17 @@ import { useEffect, useMemo, useState } from 'react';

useEffect(() => {
const backfillTargetIds: string[] = [];
const listener = (e: Event) => {
const data = (e as CustomEvent).detail;
setPlacement(data.placement);
const placementConfig: PlacementConfig | undefined = data.placementConfig;
// placementConfig doesn't change so we save some computation not sending it when clearing placements
if (data.placementConfig) {
setPlacementConfig(data.placementConfig);
if (data.placement === null && placementConfig?.backfill) {
backfillTargetIds.push(placementConfig.backfill.targetId);
adsInstance.eventTarget.addEventListener(placementConfig.backfill.targetId, listener);
} else {
setPlacement(data.placement);
// placementConfig doesn't change so we save some computation not sending it when clearing placements
if (placementConfig) {
setPlacementConfig(placementConfig);
}
}

@@ -30,2 +38,5 @@ };

adsInstance.eventTarget.removeEventListener(targetId, listener);
backfillTargetIds.forEach((backfillTargetId) => {
adsInstance.eventTarget.removeEventListener(backfillTargetId, listener);
});
};

@@ -32,0 +43,0 @@ }, [adsInstance, targetId]);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc