diff --git a/.changeset/happy-planets-hang.md b/.changeset/happy-planets-hang.md new file mode 100644 index 0000000..b411eb2 --- /dev/null +++ b/.changeset/happy-planets-hang.md @@ -0,0 +1,11 @@ +--- +'@theoplayer/adscript-connector-web': patch +'@theoplayer/comscore-connector-web': patch +'@theoplayer/conviva-connector-web': patch +'@theoplayer/nielsen-connector-web': patch +'@theoplayer/yospace-connector-web': patch +'@theoplayer/gemius-connector-web': patch +'@theoplayer/cmcd-connector-web': patch +--- + +Fixed an issue where Webpack would incorrectly prefer the UMD version over the ESM version. diff --git a/.changeset/sixty-candies-doubt.md b/.changeset/sixty-candies-doubt.md new file mode 100644 index 0000000..0bf2166 --- /dev/null +++ b/.changeset/sixty-candies-doubt.md @@ -0,0 +1,6 @@ +--- +'@theoplayer/conviva-connector-web': patch +--- + +Fixed an issue that prevented the ESM build from being loaded by certain bundlers. + - The ESM build now imports the Conviva SDK using a namespace import (`import * as Conviva from '@convivainc/conviva-js-coresdk'`) and will auto-detect if the Conviva SDK was exported as a single `default` export or as named exports. \ No newline at end of file diff --git a/adscript/package.json b/adscript/package.json index 85c36f5..906f2bd 100644 --- a/adscript/package.json +++ b/adscript/package.json @@ -10,6 +10,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/adscript-connector.esm.js", + "webpack": "./dist/adscript-connector.esm.js", "require": "./dist/adscript-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/cmcd/package.json b/cmcd/package.json index 6d1f037..652b7ae 100644 --- a/cmcd/package.json +++ b/cmcd/package.json @@ -19,6 +19,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/cmcd-connector.esm.js", + "webpack": "./dist/cmcd-connector.esm.js", "require": "./dist/cmcd-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/comscore/package.json b/comscore/package.json index 9707c21..920e17a 100644 --- a/comscore/package.json +++ b/comscore/package.json @@ -10,6 +10,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/comscore-connector.esm.js", + "webpack": "./dist/comscore-connector.esm.js", "require": "./dist/comscore-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/conviva/package.json b/conviva/package.json index 16fd715..a5a4eac 100644 --- a/conviva/package.json +++ b/conviva/package.json @@ -11,6 +11,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/conviva-connector.esm.js", + "webpack": "./dist/conviva-connector.esm.js", "require": "./dist/conviva-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/conviva/src/integration/ConvivaHandler.ts b/conviva/src/integration/ConvivaHandler.ts index d591b9d..2b27591 100644 --- a/conviva/src/integration/ConvivaHandler.ts +++ b/conviva/src/integration/ConvivaHandler.ts @@ -210,7 +210,7 @@ export class ConvivaHandler { this.player.removeEventListener('durationchange', this.onDurationChange); this.player.removeEventListener('destroy', this.onDestroy); - this.player.network.removeEventListener('offline', this.onNetworkOffline); + this.player.network?.removeEventListener('offline', this.onNetworkOffline); document.removeEventListener('visibilitychange', this.onVisibilityChange); window.removeEventListener('beforeunload', this.onBeforeUnload); diff --git a/conviva/src/utils/ConvivaSdk.ts b/conviva/src/utils/ConvivaSdk.ts index c9c0469..7297f93 100644 --- a/conviva/src/utils/ConvivaSdk.ts +++ b/conviva/src/utils/ConvivaSdk.ts @@ -1,7 +1,9 @@ -// Use default import, so Rollup can insert its interop helpers. -import Conviva from '@convivainc/conviva-js-coresdk'; +import * as Conviva from '@convivainc/conviva-js-coresdk'; -// Re-create Conviva's namespace. -const { Analytics, Constants } = Conviva; +// Conviva is distributed as CommonJS, so depending on the user's bundler choice +// we will either get a single default export or separate named exports. +const { Analytics, Constants } = 'Constants' in Conviva ? Conviva : ((Conviva as any).default as typeof Conviva); + +// Re-export the Conviva SDK as *actual* named exports. export { Analytics, Constants }; export type * from '@convivainc/conviva-js-coresdk'; diff --git a/gemius/package.json b/gemius/package.json index 1945ba4..0db5067 100644 --- a/gemius/package.json +++ b/gemius/package.json @@ -10,6 +10,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/gemius-connector.esm.js", + "webpack": "./dist/gemius-connector.esm.js", "require": "./dist/gemius-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/gemius/src/integration/GemiusTHEOIntegration.ts b/gemius/src/integration/GemiusTHEOIntegration.ts index af928c8..beaa75e 100644 --- a/gemius/src/integration/GemiusTHEOIntegration.ts +++ b/gemius/src/integration/GemiusTHEOIntegration.ts @@ -89,8 +89,10 @@ export class GemiusTHEOIntegration { this.player.removeEventListener('seeking', this.onSeeking); this.player.removeEventListener('ended', this.onEnded); this.player.removeEventListener('volumechange', this.onVolumeChange); - this.player.videoTracks.removeEventListener('addtrack', this.onAddTrack); - this.player.videoTracks.removeEventListener('removetrack', this.onRemoveTrack); + if (this.player.videoTracks) { + this.player.videoTracks.removeEventListener('addtrack', this.onAddTrack); + this.player.videoTracks.removeEventListener('removetrack', this.onRemoveTrack); + } if (this.player.ads) { this.player.ads.removeEventListener('adbreakbegin', this.onAdBreakBegin); this.player.ads.removeEventListener('adbreakend', this.onAdBreakEnd); diff --git a/nielsen/package.json b/nielsen/package.json index 5f2b07a..a0d8617 100644 --- a/nielsen/package.json +++ b/nielsen/package.json @@ -10,6 +10,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/nielsen-connector.esm.js", + "webpack": "./dist/nielsen-connector.esm.js", "require": "./dist/nielsen-connector.umd.js" }, "./dist/*": "./dist/*", diff --git a/nielsen/src/integration/NielsenHandler.ts b/nielsen/src/integration/NielsenHandler.ts index b0efc34..946e7c9 100644 --- a/nielsen/src/integration/NielsenHandler.ts +++ b/nielsen/src/integration/NielsenHandler.ts @@ -113,7 +113,7 @@ export class NielsenHandler { this.player.removeEventListener('durationchange', this.onDurationChange); this.player.removeEventListener('timeupdate', this.onTimeUpdate); - this.player.textTracks.removeEventListener('addtrack', this.onAddTrack); + this.player.textTracks?.removeEventListener('addtrack', this.onAddTrack); if (this.player.ads) { this.player.ads.removeEventListener('adbegin', this.onAdBegin); diff --git a/package-lock.json b/package-lock.json index ae222c4..5bff50a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,10 +12,10 @@ "adscript", "cmcd", "comscore", - "conviva", "gemius", "nielsen", - "yospace" + "yospace", + "conviva" ], "devDependencies": { "@changesets/cli": "^2.29.7", @@ -70,7 +70,7 @@ }, "conviva": { "name": "@theoplayer/conviva-connector-web", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "devDependencies": { "@convivainc/conviva-js-coresdk": "^4.8.0" diff --git a/yospace/package.json b/yospace/package.json index 07c2ab3..24cb29b 100644 --- a/yospace/package.json +++ b/yospace/package.json @@ -19,6 +19,7 @@ ".": { "types": "./dist/types/index.d.ts", "import": "./dist/yospace-connector.esm.js", + "webpack": "./dist/yospace-connector.esm.js", "require": "./dist/yospace-connector.umd.js" }, "./dist/*": "./dist/*",