diff --git a/tracker/tracker/.yarn/install-state.gz b/tracker/tracker/.yarn/install-state.gz new file mode 100644 index 000000000..ba1776744 Binary files /dev/null and b/tracker/tracker/.yarn/install-state.gz differ diff --git a/tracker/tracker/.yarnrc.yml b/tracker/tracker/.yarnrc.yml new file mode 100644 index 000000000..3186f3f07 --- /dev/null +++ b/tracker/tracker/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/tracker/tracker/bun.lockb b/tracker/tracker/bun.lockb deleted file mode 100755 index 6db3834eb..000000000 Binary files a/tracker/tracker/bun.lockb and /dev/null differ diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index c06370bfb..79b649e95 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -32,9 +32,10 @@ "@jest/globals": "^29.3.1", "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-terser": "0.4.4", "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", - "eslint": "^7.8.0", + "eslint": "^8.57.1", "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "jest": "^29.3.1", @@ -43,7 +44,6 @@ "prettier": "^3.0.3", "replace-in-files": "^2.0.3", "rollup": "^4.1.4", - "rollup-plugin-terser": "^7.0.2", "semver": "^6.3.0", "ts-jest": "^29.0.3", "typescript": "^4.9.4" @@ -65,5 +65,6 @@ "*.{json,md,html,js,jsx,ts,tsx}": [ "prettier --write" ] - } + }, + "packageManager": "yarn@4.5.0" } diff --git a/tracker/tracker/rollup.config.js b/tracker/tracker/rollup.config.js index c157eeaff..b06e29c7b 100644 --- a/tracker/tracker/rollup.config.js +++ b/tracker/tracker/rollup.config.js @@ -1,6 +1,6 @@ import resolve from '@rollup/plugin-node-resolve' import { babel } from '@rollup/plugin-babel' -import { terser } from 'rollup-plugin-terser' +import terser from '@rollup/plugin-terser'; export default { input: 'build/webworker/index.js', diff --git a/tracker/tracker/src/main/utils.ts b/tracker/tracker/src/main/utils.ts index 366c85204..f51e15831 100644 --- a/tracker/tracker/src/main/utils.ts +++ b/tracker/tracker/src/main/utils.ts @@ -95,6 +95,17 @@ export function canAccessIframe(iframe: HTMLIFrameElement) { } } +export function canAccessTarget(target: any) { + try { + if (target.contentWindow) { + // If this property is inaccessible, it will throw due to cross-origin restrictions + return Boolean(target.contentWindow.location) + } + } catch (e) { + return false + } +} + function dec2hex(dec: number) { return dec.toString(16).padStart(2, '0') } @@ -148,6 +159,10 @@ export function createEventListener( capture?: boolean, angularMode?: boolean, ) { + // we need to check if target is crossorigin frame or no and if we can access it + if (target instanceof HTMLIFrameElement && !canAccessIframe(target)) { + return + } let safeAddEventListener: 'addEventListener' if (angularMode) { safeAddEventListener = ngSafeBrowserMethod('addEventListener') as 'addEventListener' @@ -174,6 +189,9 @@ export function deleteEventListener( capture?: boolean, angularMode?: boolean, ) { + if (target instanceof HTMLIFrameElement && !canAccessIframe(target)) { + return + } let safeRemoveEventListener: 'removeEventListener' if (angularMode) { safeRemoveEventListener = ngSafeBrowserMethod('removeEventListener') as 'removeEventListener'