diff --git a/.bundlemonrc.json b/.bundlemonrc.json index c221de744..61a914d94 100644 --- a/.bundlemonrc.json +++ b/.bundlemonrc.json @@ -22,7 +22,7 @@ }, { "path": "./libraries/browser-tracker-core/dist/index.module.js", - "maxSize": "26kb", + "maxSize": "26.5kb", "maxPercentIncrease": 10 }, { diff --git a/.github/scripts/classify-commits.sh b/.github/scripts/classify-commits.sh new file mode 100755 index 000000000..62e87ae72 --- /dev/null +++ b/.github/scripts/classify-commits.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash +# +# Classify release commits into categories for CHANGELOG entries and PR bodies. +# +# Reads annotated commit lines on stdin, one per line, in the format produced by +# the "Annotate commits with author + external flag" workflow step: +# +# -- author= external= +# +# Writes TSV to stdout, one line per included commit: +# +# \t\t\t\t +# +# where is one of: breaking, feature, fix, improvement, enhancement +# and is either "#NNN" or empty. +# +# Chore-type commits (chore/ci/docs/test/build/style, version-bump and +# release-automation commits) are dropped entirely. +# +# Classification order: +# 1. Conventional-commit prefix (feat:, fix:, perf:, ...). A "!" before the +# colon, or a "BREAKING CHANGE" marker, promotes the commit to breaking. +# 2. Leading imperative verb, for the many historical commits in these repos +# that predate conventional commits. +# 3. Anything left over becomes "enhancement". + +set -euo pipefail + +# Subjects matching these patterns are release-automation noise, never user-facing. +readonly SKIP_SUBJECT_RE='^(Prepare for |Bump versions|Update changelogs|Applying documentation updates|Merge (branch|pull request|remote-tracking)|Release/|Run rush change|Initial (commit|release)|Resync )' + +# Conventional-commit types that never appear in release notes. +readonly SKIP_TYPE_RE='^(chore|ci|docs|test|tests|build|style|revert)$' + +# Bare-subject chore detection, for the many commits predating conventional +# commits. Deliberately narrow: it requires a chore *object* (CI, README, API +# docs, the test suite, a linter) so that user-facing changes which merely +# mention a version or a dependency are still included. Verified against the +# existing hand-written CHANGELOGs, which omit exactly these. +readonly SKIP_BARE_RE='(^|[[:space:]])(ci|CI)([[:space:]]|$)|[Ll]inting|[Ll]int issues|(unit|integration|flaky)[[:space:]]+tests?|tests?[[:space:]]+(in|on)[[:space:]]+CI|README|API docs|api docs|[Dd]ocumentation (build|updates|page)|docs\.snowplow\.io|API ref|[Cc]hangelog|GitHub [Aa]ction|publish action|prepare-release|\[skip ci\]|[Cc]laude|CLAUDE\.md|[Aa]gent pipeline|instrumentation|jest tests|[Ss]igning config for demo|[Bb]undlemon|[Cc]overalls|[Dd]ependabot|[Aa]ddress (PR )?review|[Aa]ddress review comments|[Ff]ix(up)? review|[Aa]pply review|[Ss]elf-review|[Rr]ebase|[Mm]erge conflict|[Tt]ypo in (test|CI)' + +while IFS= read -r line; do + [[ -z "$line" ]] && continue + + # Split the trailing "-- author=... external=..." metadata off the subject. + # The separator is optional: dry runs and manual testing pipe bare + # " " lines, and treating those as metadata would leak the + # parsed fields into the description. + if [[ "$line" == *" -- author="* ]]; then + meta="${line##*" -- "}" + head="${line%" -- "*}" + else + meta="" + head="$line" + fi + + # The leading short sha is dropped; only the subject drives classification. + subject="${head#* }" + [[ "$subject" == "$head" ]] && subject="" + [[ -z "$subject" ]] && continue + + login="" + external="false" + if [[ -n "$meta" ]]; then + if [[ "$meta" =~ author=([^[:space:]]*) ]]; then + login="${BASH_REMATCH[1]}" + fi + if [[ "$meta" =~ external=([^[:space:]]*) ]]; then + external="${BASH_REMATCH[1]}" + fi + fi + + # Drop release-automation commits. + if [[ "$subject" =~ $SKIP_SUBJECT_RE ]]; then + continue + fi + + breaking="false" + # "BREAKING CHANGE" / "BREAKING-CHANGE" anywhere in the subject is a strong signal. + if [[ "$subject" == *"BREAKING CHANGE"* || "$subject" == *"BREAKING-CHANGE"* ]]; then + breaking="true" + fi + + category="" + description="$subject" + + # --- Rule 1: conventional-commit prefix --------------------------------- + # Matches "type: ", "type(scope): ", and the breaking "type!: " / "type(scope)!: ". + if [[ "$subject" =~ ^([a-zA-Z]+)(\(([^\)]*)\))?(!)?:[[:space:]]+(.*)$ ]]; then + type="$(printf '%s' "${BASH_REMATCH[1]}" | tr '[:upper:]' '[:lower:]')" + bang="${BASH_REMATCH[4]}" + rest="${BASH_REMATCH[5]}" + + if [[ "$type" =~ $SKIP_TYPE_RE ]]; then + continue + fi + + [[ -n "$bang" ]] && breaking="true" + + case "$type" in + feat|feature) category="feature" ;; + fix|bugfix) category="fix" ;; + perf|refactor) category="improvement" ;; + *) category="" ;; # unknown type: fall through to the verb rule + esac + + if [[ -n "$category" ]]; then + # Drop the scope. It duplicates information already obvious from the + # description in these repos (e.g. "emitter: wake emitter on signal"), + # and keeping it forces an awkward capitalisation of the scope token. + description="$rest" + fi + fi + + # --- Rule 2: leading imperative verb ----------------------------------- + # Covers the bare-subject style used throughout these repos' history. + if [[ -z "$category" ]]; then + # Bare chore commits (CI, docs, lint, test-suite upkeep) are not + # user-facing. Only applied here: an explicit "feat:"/"fix:" prefix in + # rule 1 always wins, so a genuine fix mentioning CI is never dropped. + if [[ "$subject" =~ $SKIP_BARE_RE ]]; then + continue + fi + + verb="$(printf '%s' "$subject" | awk '{print tolower($1)}')" + case "$verb" in + fix|fixes|fixed|resolve|resolves|correct|corrects|prevent|prevents|address|addresses|avoid|avoids|handle|handles|guard) + category="fix" ;; + add|adds|added|introduce|introduces|support|supports|expose|exposes|implement|implements|allow|allows|enable|enables|create|creates) + category="feature" ;; + improve|improves|update|updates|upgrade|upgrades|refactor|refactors|change|changes|make|makes|migrate|migrates|remove|removes|strip|strips|filter|filters|rename|renames|switch|switches|reduce|reduces|optimise|optimize|simplify|declare|deprecate|deprecates|move|moves|replace|replaces|drop|drops|adjust|adjusts|annotate|clean|unify|tidy|undeprecate|reintroduce) + category="improvement" ;; + *) + category="enhancement" ;; + esac + fi + + [[ "$breaking" == "true" ]] && category="breaking" + + # Extract a PR/issue reference to preserve at the end of the line. + # + # Subjects may carry two references: a trailing "(#NNN)" squash-merge marker + # added by GitHub, and an inline "(close #NNN)" issue link written by the + # author. Prefer the inline issue reference (it names the user-visible issue) + # and strip both markers so the formatters re-append exactly one. + pr_ref="" + if [[ "$description" =~ \((close[sd]?|fix(e[sd])?|resolve[sd]?)[[:space:]]+\#([0-9]+)\) ]]; then + # Preserve the "close" keyword: the existing CHANGELOGs write "(close #720)", + # and it keeps GitHub's issue-closing semantics visible in the notes. + pr_ref="${BASH_REMATCH[1]} #${BASH_REMATCH[3]}" + description="$(printf '%s' "$description" \ + | sed -E 's/[[:space:]]*\((close[sd]?|fix(e[sd])?|resolve[sd]?)[[:space:]]+#[0-9]+\)//I')" + # Drop a redundant trailing squash marker, e.g. "... (close #720) (#720)". + description="$(printf '%s' "$description" | sed -E 's/[[:space:]]*\(#[0-9]+\)[[:space:]]*$//')" + elif [[ "$description" =~ \(\#([0-9]+)\)[[:space:]]*$ ]]; then + pr_ref="#${BASH_REMATCH[1]}" + description="$(printf '%s' "$description" | sed -E 's/[[:space:]]*\(#[0-9]+\)[[:space:]]*$//')" + elif [[ "$description" =~ \#([0-9]+) ]]; then + pr_ref="#${BASH_REMATCH[1]}" + fi + + # Strip an inline BREAKING CHANGE marker; the category already conveys it. + description="$(printf '%s' "$description" \ + | sed -E 's/^BREAKING[ -]CHANGE:?[[:space:]]*//; s/[[:space:]]*BREAKING[ -]CHANGE:?[[:space:]]*/ /')" + + # Tidy whitespace and drop a trailing period for consistent list formatting. + description="$(printf '%s' "$description" | sed -E 's/[[:space:]]+/ /g; s/^ //; s/ $//; s/\.$//')" + [[ -z "$description" ]] && continue + + # Capitalise the first letter so bare conventional-commit bodies read as list items. + first="$(printf '%s' "${description:0:1}" | tr '[:lower:]' '[:upper:]')" + description="${first}${description:1}" + + # Empty fields are written as "-": bash's word splitting collapses runs of + # tabs, so a genuinely empty column would shift every later field left. + # The formatters translate "-" back to an empty string. + printf '%s\t%s\t%s\t%s\t%s\n' \ + "$category" "$description" "${pr_ref:--}" "${login:--}" "$external" +done diff --git a/.github/scripts/format-pr-body.sh b/.github/scripts/format-pr-body.sh new file mode 100755 index 000000000..016689db9 --- /dev/null +++ b/.github/scripts/format-pr-body.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash +# +# Format classified commits into a release PR body. +# +# Reads the TSV produced by classify-commits.sh on stdin and writes +# GitHub-flavoured markdown to stdout: bullets grouped under bold headers, +# with external contributors credited. +# +# Groups with no entries are omitted. If nothing at all is classifiable the +# script emits a short placeholder rather than an empty body, so the PR is +# never opened with a blank description. + +set -euo pipefail + +work="$(mktemp -d)" +trap 'rm -rf "$work"' EXIT + +# Bucket the incoming rows by category. +while IFS=$'\t' read -r category description pr_ref login external; do + [[ -z "${category:-}" ]] && continue + # classify-commits.sh writes "-" for empty columns; see the note there. + [[ "$pr_ref" == "-" ]] && pr_ref="" + [[ "$login" == "-" ]] && login="" + + line="- ${description}" + [[ -n "$pr_ref" ]] && line="${line} (${pr_ref})" + # Credit external contributors only; team members are not called out. + if [[ "$external" == "true" && -n "$login" ]]; then + line="${line} thanks to @${login}" + fi + printf '%s\n' "$line" >> "$work/$category" +done + +emit_group() { + local file="$1" header="$2" + [[ -s "$work/$file" ]] || return 0 + printf '%s\n' "$header" + cat "$work/$file" + printf '\n' +} + +{ + emit_group breaking '**Breaking changes:**' + emit_group feature '**New features:**' + emit_group improvement '**Improvements:**' + emit_group fix '**Bug fixes:**' + emit_group enhancement '**Enhancements:**' +} > "$work/body.md" + +if [[ -s "$work/body.md" ]]; then + # Trim the trailing blank line left by the last group. + awk 'NF || NR < prev_nonblank' prev_nonblank="$(awk 'NF{n=NR}END{print n}' "$work/body.md")" "$work/body.md" +else + printf '%s\n' 'No user-facing changes in this release.' +fi diff --git a/.github/scripts/prompts/pr-body.md b/.github/scripts/prompts/pr-body.md deleted file mode 100644 index b7018d884..000000000 --- a/.github/scripts/prompts/pr-body.md +++ /dev/null @@ -1,25 +0,0 @@ -You are writing the body of the GitHub release pull request for the Snowplow JavaScript tracker monorepo. - -Inputs you will be given: -- `VERSION`: the new version string, e.g. `4.9.0`. -- `COMMITS`: merge / squash commits going into this release, one per line, formatted as ` -- author= external=`. The workflow has already classified each commit's author as a Snowplow team member (`external=false`) or an external contributor (`external=true`). -- `PREVIOUS_PR_BODY`: the body of the previous release PR, provided verbatim as a style example. - -Produce exactly the new PR body in GitHub-flavoured markdown — nothing else. No preamble, no code fences around the whole output, no trailing commentary. - -Style (match `PREVIOUS_PR_BODY` — the JavaScript tracker's PR-body conventions): -- If there are 1–2 changes, a simple flat list of `- (#NNN)` bullets under a single `**Enhancements**` (or `**Bug fixes**`) header is fine. This matches the PR for 4.8.1. -- If there are 3+ changes, group them under short bold headers, in this order, omitting any group that has no entries: - - `**New features**` - - `**Enhancements**` - - `**Bug fixes**` - Under each header, list one bullet per change: `- (#NNN)`. -- For commits where `external=true`, append ` thanks to @` after the PR reference. Do **not** add this attribution for `external=false` commits. -- Keep bullets terse — one line each, similar wording to the commit subject. -- Skip pure chores (dependency bumps with no behaviour change, CI-only, docs-only, any "Prepare for ..." / "Bump versions" / "Update changelogs" / "Applying documentation updates" commit — Rush generates several of these automatically). -- Do not include a title, a version banner, or a closing summary — just the bullets (grouped or flat as above). - -Classification guidance: -- "Fix ...", "Resolve ...", "Handle ..." → Bug fixes -- "Add ...", "Introduce ...", "Support ..." (new capability) → New features -- "Improve ...", "Refactor ...", "Update ...", "Migrate ...", "Broaden ..." (existing capability) → Enhancements diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 5366cd6e1..4fd04babf 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -21,17 +21,21 @@ jobs: prepare: runs-on: ubuntu-latest env: - ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} BASE_BRANCH: master + # Workflow inputs are exposed as environment variables and referenced as + # "$RELEASE_BRANCH" in run: blocks, never interpolated as ${{ }} into an + # inline script. Direct interpolation splices the raw value into the shell + # before it runs, which is a script-injection sink (see ST-482). + RELEASE_BRANCH: ${{ inputs.release_branch }} + DRY_RUN: ${{ inputs.dry_run }} steps: - name: Validate inputs id: validate run: | set -euo pipefail - branch="${{ inputs.release_branch }}" - if [[ ! "$branch" =~ ^release/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then - echo "::error::release_branch must match 'release/X.Y.Z' (got: $branch)" + if [[ ! "$RELEASE_BRANCH" =~ ^release/([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then + echo "::error::release_branch must match 'release/X.Y.Z' (got: $RELEASE_BRANCH)" exit 1 fi version="${BASH_REMATCH[1]}" @@ -45,7 +49,7 @@ jobs: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - - name: Use Node.js 18 + - name: Use Node.js 22 uses: actions/setup-node@v4 with: node-version: 22 @@ -57,16 +61,16 @@ jobs: - name: Verify branch state id: state + env: + VERSION: ${{ steps.validate.outputs.version }} run: | set -euo pipefail - version='${{ steps.validate.outputs.version }}' - git fetch origin "$BASE_BRANCH" # Idempotent re-run: if HEAD is already "Prepare for X.Y.Z release", # skip the bump+commit and only refresh the PR body. head_subject="$(git log -1 --pretty=%s)" - if [[ "$head_subject" == "Prepare for $version release" ]]; then + if [[ "$head_subject" == "Prepare for $VERSION release" ]]; then echo "Branch HEAD is already the prepare-release commit; will skip bump+commit and only refresh the PR." echo "already_prepared=true" >> "$GITHUB_OUTPUT" else @@ -85,15 +89,11 @@ jobs: fi echo "prev_tag=$prev_tag" >> "$GITHUB_OUTPUT" - # Commits on the release branch since prev_tag. - # Filter out commits the JS publish pipeline creates automatically: - # - "Prepare for ..." (prepare-release commit) - # - "Bump versions [skip ci]" (rush version --bump) - # - "Update changelogs [skip ci]" (rush change --apply during publish) - # - "Applying documentation updates." (api-docs commit during publish) - git log --no-merges "$prev_tag..HEAD" --pretty='%h %s' \ - | grep -v -E '^[0-9a-f]+ (Prepare for |Bump versions |Update changelogs |Applying documentation updates)' \ - > commits-raw.txt || true + # Commits on the release branch since prev_tag. classify-commits.sh + # drops the commits the JS publish pipeline creates automatically + # ("Bump versions [skip ci]", "Update changelogs [skip ci]", + # "Applying documentation updates.") along with other chores. + git log --no-merges "$prev_tag..HEAD" --pretty='%h %s' > commits-raw.txt || true git log --merges "$prev_tag..HEAD" --pretty='%h %s' >> commits-raw.txt || true # De-dup by short sha, preserve order @@ -102,6 +102,8 @@ jobs: cat commits.txt - name: Annotate commits with author + external flag + env: + REPOSITORY: ${{ github.repository }} run: | set -euo pipefail : > commits-annotated.txt @@ -113,7 +115,7 @@ jobs: login="" external="false" if [[ -n "$pr_num" ]]; then - if json="$(gh api "repos/${{ github.repository }}/pulls/$pr_num" 2>/dev/null)"; then + if json="$(gh api "repos/$REPOSITORY/pulls/$pr_num" 2>/dev/null)"; then login="$(echo "$json" | jq -r '.user.login // ""')" assoc="$(echo "$json" | jq -r '.author_association // ""')" case "$assoc" in @@ -127,15 +129,16 @@ jobs: echo "Annotated commits:" cat commits-annotated.txt - - name: Install Claude Code CLI - run: npm install -g @anthropic-ai/claude-code - - name: Set nextBump in version-policies.json if: steps.state.outputs.already_prepared == 'false' - run: node .github/scripts/prepare-release.js '${{ steps.validate.outputs.version }}' + env: + VERSION: ${{ steps.validate.outputs.version }} + run: node .github/scripts/prepare-release.js "$VERSION" - name: Commit "Prepare for release" if: steps.state.outputs.already_prepared == 'false' && inputs.dry_run == false + env: + VERSION: ${{ steps.validate.outputs.version }} run: | set -euo pipefail git add common/config/rush/version-policies.json @@ -143,8 +146,8 @@ jobs: if git diff --cached --quiet; then echo "No staged changes; nextBump was already set correctly. Skipping commit." else - git commit -m 'Prepare for ${{ steps.validate.outputs.version }} release' - git push origin '${{ inputs.release_branch }}' + git commit -m "Prepare for $VERSION release" + git push origin "$RELEASE_BRANCH" fi - name: Show planned changes (dry run) @@ -154,48 +157,30 @@ jobs: git --no-pager diff echo "====================================" - - name: Generate PR body with Claude + - name: Generate PR body run: | set -euo pipefail - prev_pr_num="$(gh pr list --state merged --search 'Release in:title' --base "$BASE_BRANCH" --limit 1 --json number --jq '.[0].number' || true)" - if [[ -n "$prev_pr_num" ]]; then - gh pr view "$prev_pr_num" --json body --jq .body > previous-pr-body.txt - else - echo '(no previous release PR found)' > previous-pr-body.txt - fi + ./.github/scripts/classify-commits.sh < commits-annotated.txt > classified.tsv + ./.github/scripts/format-pr-body.sh < classified.tsv > pr-body.md - { - echo "VERSION: ${{ steps.validate.outputs.version }}" - echo "" - echo "COMMITS:" - cat commits-annotated.txt - echo "" - echo "PREVIOUS_PR_BODY:" - cat previous-pr-body.txt - echo "" - echo "---" - echo "Instructions:" - cat .github/scripts/prompts/pr-body.md - } > pr-body-prompt.txt - - claude -p --output-format text < pr-body-prompt.txt > pr-body.md echo "=== Generated PR body ===" cat pr-body.md echo "=========================" - name: Open or update release PR if: inputs.dry_run == false + env: + VERSION: ${{ steps.validate.outputs.version }} run: | set -euo pipefail - version='${{ steps.validate.outputs.version }}' - existing="$(gh pr list --head '${{ inputs.release_branch }}' --base "$BASE_BRANCH" --state open --json number --jq '.[0].number' || true)" + existing="$(gh pr list --head "$RELEASE_BRANCH" --base "$BASE_BRANCH" --state open --json number --jq '.[0].number' || true)" if [[ -n "$existing" ]]; then - gh pr edit "$existing" --title "Release/$version" --body-file pr-body.md + gh pr edit "$existing" --title "Release/$VERSION" --body-file pr-body.md echo "Updated existing PR #$existing" else gh pr create \ --base "$BASE_BRANCH" \ - --head '${{ inputs.release_branch }}' \ - --title "Release/$version" \ + --head "$RELEASE_BRANCH" \ + --title "Release/$VERSION" \ --body-file pr-body.md fi diff --git a/api-docs/docs/browser-tracker/browser-tracker.api.md b/api-docs/docs/browser-tracker/browser-tracker.api.md index 4c74daca1..00e3908cd 100644 --- a/api-docs/docs/browser-tracker/browser-tracker.api.md +++ b/api-docs/docs/browser-tracker/browser-tracker.api.md @@ -79,6 +79,7 @@ export interface BrowserTracker { enableAnonymousTracking: (configuration?: EnableAnonymousTrackingConfiguration) => void; flushBuffer: (configuration?: FlushBufferConfiguration) => void; getCookieName: (basename: string) => string; + getDomainSessionId: () => string; getDomainSessionIndex: () => number; getDomainUserId: () => string; getDomainUserInfo: () => ParsedIdCookie; @@ -341,6 +342,9 @@ export interface FlushBufferConfiguration { newBufferSize?: number; } +// @public +export function getDomainSessionId(trackerId?: string): string | undefined; + // @public export type JsonProcessor = (payloadBuilder: PayloadBuilder, jsonForProcessing: EventJson, contextEntitiesForProcessing: SelfDescribingJson[]) => void; @@ -550,7 +554,9 @@ export type TrackerConfiguration = { plugins?: Array; onSessionUpdateCallback?: (updatedSession: ClientSession) => void; preservePageViewIdForUrl?: PreservePageViewIdForUrl; + preserveOriginalReferrer?: boolean; synchronousCookieWrite?: boolean; + disableSessionContextWithinWebView?: boolean; } & EmitterConfigurationBase & LocalStorageEventStoreConfigurationBase; // @public diff --git a/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainsessionid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainsessionid.md new file mode 100644 index 000000000..0ba75df76 --- /dev/null +++ b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.getdomainsessionid.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [BrowserTracker](./browser-tracker.browsertracker.md) > [getDomainSessionId](./browser-tracker.browsertracker.getdomainsessionid.md) + +## BrowserTracker.getDomainSessionId property + +Get the current domain session ID (from first party cookie) + +Signature: + +```typescript +getDomainSessionId: () => string; +``` diff --git a/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md index 151168e3b..a08c031d1 100644 --- a/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md +++ b/api-docs/docs/browser-tracker/markdown/browser-tracker.browsertracker.md @@ -30,6 +30,7 @@ interface BrowserTracker | [enableAnonymousTracking](./browser-tracker.browsertracker.enableanonymoustracking.md) | (configuration?: EnableAnonymousTrackingConfiguration) => void | Enables anonymous tracking (ie. tracker initialized without anonymousTracking) | | [flushBuffer](./browser-tracker.browsertracker.flushbuffer.md) | (configuration?: FlushBufferConfiguration) => void | Send all events in the outQueue Only need to use this when sending events with a bufferSize of at least 2 | | [getCookieName](./browser-tracker.browsertracker.getcookiename.md) | (basename: string) => string | Get the cookie name as cookieNamePrefix + basename + . + domain. | +| [getDomainSessionId](./browser-tracker.browsertracker.getdomainsessionid.md) | () => string | Get the current domain session ID (from first party cookie) | | [getDomainSessionIndex](./browser-tracker.browsertracker.getdomainsessionindex.md) | () => number | Get the domain session index also known as current memorized visit count. | | [getDomainUserId](./browser-tracker.browsertracker.getdomainuserid.md) | () => string | Get visitor ID (from first party cookie) | | [getDomainUserInfo](./browser-tracker.browsertracker.getdomainuserinfo.md) | () => ParsedIdCookie | Get the visitor information (from first party cookie) | diff --git a/api-docs/docs/browser-tracker/markdown/browser-tracker.getdomainsessionid.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.getdomainsessionid.md new file mode 100644 index 000000000..bb8adc275 --- /dev/null +++ b/api-docs/docs/browser-tracker/markdown/browser-tracker.getdomainsessionid.md @@ -0,0 +1,26 @@ + + +[Home](./index.md) > [@snowplow/browser-tracker](./browser-tracker.md) > [getDomainSessionId](./browser-tracker.getdomainsessionid.md) + +## getDomainSessionId() function + +Get the domain session ID (from the first-party cookie) for a tracker. + +Signature: + +```typescript +declare function getDomainSessionId(trackerId?: string): string | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| trackerId | string | The tracker identifier which the domain session ID will be retrieved from. Defaults to the first initialised tracker. | + +Returns: + +string \| undefined + +The domain session ID, or undefined if no matching tracker is found + diff --git a/api-docs/docs/browser-tracker/markdown/browser-tracker.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.md index 908574e9e..71c0e88b7 100644 --- a/api-docs/docs/browser-tracker/markdown/browser-tracker.md +++ b/api-docs/docs/browser-tracker/markdown/browser-tracker.md @@ -28,6 +28,7 @@ | [enableActivityTrackingCallback(configuration, trackers)](./browser-tracker.enableactivitytrackingcallback.md) | Enables page activity tracking (replaces collector ping with callback). | | [enableAnonymousTracking(configuration, trackers)](./browser-tracker.enableanonymoustracking.md) | Enables anonymous tracking (ie. tracker initialized without anonymousTracking) | | [flushBuffer(configuration, trackers)](./browser-tracker.flushbuffer.md) | Send all events in the outQueue Only need to use this when sending events with a bufferSize of at least 2 | +| [getDomainSessionId(trackerId)](./browser-tracker.getdomainsessionid.md) | Get the domain session ID (from the first-party cookie) for a tracker. | | [newSession(trackers)](./browser-tracker.newsession.md) | Expires current session and starts a new session. | | [newTracker(trackerId, endpoint, configuration)](./browser-tracker.newtracker.md) | Initialise a new tracker | | [preservePageViewId(trackers)](./browser-tracker.preservepageviewid.md) | Stop regenerating pageViewId (available from web_page context) | diff --git a/api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md index 5aae2288c..1bd565422 100644 --- a/api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md +++ b/api-docs/docs/browser-tracker/markdown/browser-tracker.trackerconfiguration.md @@ -31,7 +31,9 @@ type TrackerConfiguration = { plugins?: Array; onSessionUpdateCallback?: (updatedSession: ClientSession) => void; preservePageViewIdForUrl?: PreservePageViewIdForUrl; + preserveOriginalReferrer?: boolean; synchronousCookieWrite?: boolean; + disableSessionContextWithinWebView?: boolean; } & EmitterConfigurationBase & LocalStorageEventStoreConfigurationBase; ``` diff --git a/common/config/rush/browser-approved-packages.json b/common/config/rush/browser-approved-packages.json index f157b3ec4..3b15c2084 100644 --- a/common/config/rush/browser-approved-packages.json +++ b/common/config/rush/browser-approved-packages.json @@ -162,6 +162,10 @@ "name": "@snowplow/browser-plugin-web-vitals", "allowedCategories": [ "trackers" ] }, + { + "name": "@snowplow/browser-plugin-webview", + "allowedCategories": [ "trackers" ] + }, { "name": "@snowplow/browser-plugin-youtube-tracking", "allowedCategories": [ "trackers" ] diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 213bc9edc..81b895e74 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -19,12 +19,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -40,9 +37,6 @@ importers: '@types/jsdom': specifier: ~16.2.14 version: 16.2.15 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -95,12 +89,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -113,9 +104,6 @@ importers: '@types/node': specifier: ~14.6.0 version: 14.6.4 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -165,9 +153,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -244,9 +229,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -314,9 +296,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -387,9 +366,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -463,9 +439,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -536,9 +509,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -606,9 +576,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -682,9 +649,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -758,9 +722,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -834,9 +795,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -904,9 +862,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -974,9 +929,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1044,9 +996,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1114,9 +1063,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1184,9 +1130,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1260,12 +1203,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1278,9 +1218,6 @@ importers: '@types/jsdom': specifier: ~16.2.14 version: 16.2.15 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -1339,12 +1276,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1357,9 +1291,6 @@ importers: '@types/jsdom': specifier: ~16.2.14 version: 16.2.15 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -1415,9 +1346,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1485,9 +1413,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1555,9 +1480,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1625,9 +1547,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1695,12 +1614,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1716,9 +1632,6 @@ importers: '@types/lodash': specifier: ~4.14.180 version: 4.14.202 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -1777,9 +1690,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1853,9 +1763,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -1932,9 +1839,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2014,9 +1918,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2090,9 +1991,6 @@ importers: specifier: ~4.2.4 version: 4.2.4 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2163,9 +2061,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2236,12 +2131,9 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2254,9 +2146,6 @@ importers: '@types/jsdom': specifier: ~16.2.14 version: 16.2.15 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@types/youtube': specifier: ~0.0.46 version: 0.0.50 @@ -2315,9 +2204,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-commonjs': specifier: ~21.0.2 version: 21.0.3(rollup@2.70.2) @@ -2453,6 +2339,9 @@ importers: '@snowplow/browser-plugin-web-vitals': specifier: workspace:* version: link:../../plugins/browser-plugin-web-vitals + '@snowplow/browser-plugin-webview': + specifier: workspace:* + version: link:../../plugins/browser-plugin-webview '@snowplow/browser-plugin-youtube-tracking': specifier: workspace:* version: link:../../plugins/browser-plugin-youtube-tracking @@ -2469,9 +2358,6 @@ importers: specifier: ^2.3.1 version: 2.8.1 devDependencies: - '@ampproject/rollup-plugin-closure-compiler': - specifier: ~0.27.0 - version: 0.27.0(rollup@2.70.2) '@rollup/plugin-alias': specifier: ~3.1.9 version: 3.1.9(rollup@2.70.2) @@ -2666,8 +2552,8 @@ importers: specifier: ^2.3.1 version: 2.8.1 uuid: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.1.1 + version: 11.1.1 devDependencies: '@react-native-async-storage/async-storage': specifier: ^2.0.0 @@ -2684,9 +2570,6 @@ importers: '@types/react': specifier: ^18.2.44 version: 18.3.18 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@typescript-eslint/eslint-plugin': specifier: ~5.15.0 version: 5.15.0(@typescript-eslint/parser@5.15.0(eslint@8.11.0)(typescript@4.6.4))(eslint@8.11.0)(typescript@4.6.4) @@ -2712,7 +2595,7 @@ importers: specifier: ^0.42.1 version: 0.42.1 react-native-get-random-values: - specifier: ^1.11.0 + specifier: ^1.11.0 || ^2.0.0 version: 1.11.0(react-native@0.74.5(@babel/preset-env@7.29.7(@babel/core@7.29.7))(@types/react@18.3.18)(encoding@0.1.13)(react@18.2.0)) ts-jest: specifier: ~28.0.8 @@ -2723,20 +2606,10 @@ importers: packages: - '@ampproject/remapping@0.2.0': - resolution: {integrity: sha512-a4EztS9/GOVQjX5Ol+Iz33TFhaXvYBF7aB6D8+Qz0/SCIxOm3UNRhGZiwcCuJ8/Ifc6NCogp3S48kc5hFxRpUw==} - engines: {node: '>=6.0.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@ampproject/rollup-plugin-closure-compiler@0.27.0': - resolution: {integrity: sha512-stpAOn2ZZEJuAV39HFw9cnKJYNhEeHtcsoa83orpLDhSxsxSbVEKwHaWlFBaQYpQRSOdapC4eJhJnCzocZxnqg==} - engines: {node: '>=10'} - peerDependencies: - rollup: '>=1.27' - '@ark/schema@0.56.0': resolution: {integrity: sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA==} @@ -3934,10 +3807,6 @@ packages: '@jridgewell/remapping@2.3.5': resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - '@jridgewell/resolve-uri@1.0.0': - resolution: {integrity: sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA==} - engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -4383,9 +4252,6 @@ packages: '@types/ua-parser-js@0.7.39': resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} - '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/vimeo__player@2.16.3': resolution: {integrity: sha512-hsOe6CZFTNyfjRjQUrNHBF4LDmjvjcU2yQIPWp5AglKeGxt11JYGToQhKUPM876gBXggqR6rMQ0/sNI06ec2Rg==} @@ -4579,10 +4445,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@7.1.1: - resolution: {integrity: sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==} - engines: {node: '>=0.4.0'} - acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -4591,11 +4453,6 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@7.3.1: - resolution: {integrity: sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -5207,10 +5064,6 @@ packages: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} - clone-buffer@1.0.0: - resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} - engines: {node: '>= 0.10'} - clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -5218,20 +5071,10 @@ packages: clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - clone-stats@1.0.0: - resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} - clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - cloneable-readable@1.1.3: - resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} - co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -5869,9 +5712,6 @@ packages: estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - estree-walker@2.0.1: - resolution: {integrity: sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==} - estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -6261,29 +6101,6 @@ packages: resolution: {integrity: sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==} engines: {node: '>= 0.10'} - google-closure-compiler-java@20210808.0.0: - resolution: {integrity: sha512-7dEQfBzOdwdjwa/Pq8VAypNBKyWRrOcKjnNYOO9gEg2hjh8XVMeQzTqw4uANfVvvANGdE/JjD+HF6zHVgLRwjg==} - - google-closure-compiler-linux@20210808.0.0: - resolution: {integrity: sha512-byKi5ITUiWRvEIcQo76i1siVnOwrTmG+GNcBG4cJ7x8IE6+4ki9rG5pUe4+DOYHkfk52XU6XHt9aAAgCcFDKpg==} - cpu: [x64, x86] - os: [linux] - - google-closure-compiler-osx@20210808.0.0: - resolution: {integrity: sha512-iwyAY6dGj1FrrBdmfwKXkjtTGJnqe8F+9WZbfXxiBjkWLtIsJt2dD1+q7g/sw3w8mdHrGQAdxtDZP/usMwj/Rg==} - cpu: [x64, x86, arm64] - os: [darwin] - - google-closure-compiler-windows@20210808.0.0: - resolution: {integrity: sha512-VI+UUYwtGWDYwpiixrWRD8EklHgl6PMbiEaHxQSrQbH8PDXytwaOKqmsaH2lWYd5Y/BOZie2MzjY7F5JI69q1w==} - cpu: [x64] - os: [win32] - - google-closure-compiler@20210808.0.0: - resolution: {integrity: sha512-+R2+P1tT1lEnDDGk8b+WXfyVZgWjcCK9n1mmZe8pMEzPaPWxqK7GMetLVWnqfTDJ5Q+LRspOiFBv3Is+0yuhCA==} - engines: {node: '>=10'} - hasBin: true - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -8377,13 +8194,6 @@ packages: resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true - remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - - replace-ext@1.0.1: - resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} - engines: {node: '>= 0.10'} - request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -9305,17 +9115,13 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@8.1.0: - resolution: {integrity: sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache-lib@3.0.1: @@ -9342,13 +9148,6 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - vinyl-sourcemaps-apply@0.2.1: - resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==} - - vinyl@2.2.1: - resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} - engines: {node: '>= 0.10'} - vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} @@ -9659,27 +9458,11 @@ packages: snapshots: - '@ampproject/remapping@0.2.0': - dependencies: - '@jridgewell/resolve-uri': 1.0.0 - sourcemap-codec: 1.4.8 - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@ampproject/rollup-plugin-closure-compiler@0.27.0(rollup@2.70.2)': - dependencies: - '@ampproject/remapping': 0.2.0 - acorn: 7.3.1 - acorn-walk: 7.1.1 - estree-walker: 2.0.1 - google-closure-compiler: 20210808.0.0 - magic-string: 0.25.7 - rollup: 2.70.2 - uuid: 8.1.0 - '@ark/schema@0.56.0': dependencies: '@ark/util': 0.56.0 @@ -11445,8 +11228,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@1.0.0': {} - '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} @@ -12120,8 +11901,6 @@ snapshots: '@types/ua-parser-js@0.7.39': {} - '@types/uuid@10.0.0': {} - '@types/vimeo__player@2.16.3': {} '@types/which@2.0.2': {} @@ -12485,16 +12264,12 @@ snapshots: dependencies: acorn: 8.14.0 - acorn-walk@7.1.1: {} - acorn-walk@7.2.0: {} acorn-walk@8.3.4: dependencies: acorn: 8.14.0 - acorn@7.3.1: {} - acorn@7.4.1: {} acorn@8.14.0: {} @@ -13334,8 +13109,6 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.2 - clone-buffer@1.0.0: {} - clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -13346,18 +13119,8 @@ snapshots: dependencies: mimic-response: 1.0.1 - clone-stats@1.0.0: {} - clone@1.0.4: {} - clone@2.1.2: {} - - cloneable-readable@1.1.3: - dependencies: - inherits: 2.0.4 - process-nextick-args: 2.0.1 - readable-stream: 2.3.8 - co@4.6.0: {} code-excerpt@4.0.0: @@ -14064,8 +13827,6 @@ snapshots: estree-walker@1.0.1: {} - estree-walker@2.0.1: {} - estree-walker@2.0.2: {} esutils@2.0.3: {} @@ -14580,29 +14341,6 @@ snapshots: lodash: 4.17.21 minimatch: 3.0.8 - google-closure-compiler-java@20210808.0.0: {} - - google-closure-compiler-linux@20210808.0.0: - optional: true - - google-closure-compiler-osx@20210808.0.0: - optional: true - - google-closure-compiler-windows@20210808.0.0: - optional: true - - google-closure-compiler@20210808.0.0: - dependencies: - chalk: 2.4.2 - google-closure-compiler-java: 20210808.0.0 - minimist: 1.2.8 - vinyl: 2.2.1 - vinyl-sourcemaps-apply: 0.2.1 - optionalDependencies: - google-closure-compiler-linux: 20210808.0.0 - google-closure-compiler-osx: 20210808.0.0 - google-closure-compiler-windows: 20210808.0.0 - gopd@1.2.0: {} got@11.8.6: @@ -17262,10 +17000,6 @@ snapshots: dependencies: jsesc: 3.1.0 - remove-trailing-separator@1.1.0: {} - - replace-ext@1.0.1: {} - request@2.88.2: dependencies: aws-sign2: 0.7.0 @@ -18291,12 +18025,10 @@ snapshots: utils-merge@1.0.1: {} - uuid@10.0.0: {} + uuid@11.1.1: {} uuid@3.4.0: {} - uuid@8.1.0: {} - v8-compile-cache-lib@3.0.1: {} v8-compile-cache@2.4.0: {} @@ -18324,19 +18056,6 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vinyl-sourcemaps-apply@0.2.1: - dependencies: - source-map: 0.5.7 - - vinyl@2.2.1: - dependencies: - clone: 2.1.2 - clone-buffer: 1.0.0 - clone-stats: 1.0.0 - cloneable-readable: 1.1.3 - remove-trailing-separator: 1.1.0 - replace-ext: 1.0.1 - vlq@1.0.1: {} w3c-hr-time@1.0.2: diff --git a/common/config/rush/repo-state.json b/common/config/rush/repo-state.json index abed72dd6..08792e831 100644 --- a/common/config/rush/repo-state.json +++ b/common/config/rush/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "9a816d9b355d66a3970b215b67a6ea8ca1dba3c5", + "pnpmShrinkwrapHash": "abc453596eaf2cd7ff26dca182f8e42042b6326e", "preferredVersionsHash": "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f" } diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 21ee7a405..60a66ed3d 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -2,7 +2,6 @@ * This is configuration file is used for advanced publishing configurations with Rush. * For full documentation, please see https://rushjs.io */ - /** * A list of version policy definitions. A "version policy" is a custom package versioning * strategy that affects "rush change", "rush version", and "rush publish". The strategy applies @@ -20,21 +19,18 @@ * SemVer range is usually restricted to a single version. */ "definitionName": "lockStepVersion", - /** * (Required) The name that will be used for the "versionPolicyName" field in rush.json. * This name is also used command-line parameters such as "--version-policy" * and "--to-version-policy". */ "policyName": "tracker", - /** * (Required) The current version. All packages belonging to the set should have this version * in the current branch. When bumping versions, Rush uses this to determine the next version. * (The "version" field in package.json is NOT considered.) */ - "version": "4.8.2", - + "version": "4.10.0", /** * (Required) The type of bump that will be performed when publishing the next release. * When creating a release branch in Git, this field should be updated according to the @@ -42,6 +38,6 @@ * * Valid values are: "prerelease", "release", "minor", "patch", "major" */ - "nextBump": "patch" + "nextBump": "minor" } -] +] diff --git a/libraries/browser-tracker-core/CHANGELOG.json b/libraries/browser-tracker-core/CHANGELOG.json index b1ce4c0f9..f68a4ad1c 100644 --- a/libraries/browser-tracker-core/CHANGELOG.json +++ b/libraries/browser-tracker-core/CHANGELOG.json @@ -1,6 +1,58 @@ { "name": "@snowplow/browser-tracker-core", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-tracker-core_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": { + "minor": [ + { + "comment": "Add disableSessionContextWithinWebView option to suppress client_session entity in hybrid native+WebView deployments" + } + ], + "none": [ + { + "comment": "Add preserveOriginalReferrer tracker configuration option for SPA referrer tracking" + } + ], + "patch": [ + { + "comment": "Remove forced layout read from tracker initialization: replace init-time getBrowserProperties() call with direct non-layout reads; defer the first readBrowserProperties() to first event build time." + } + ] + } + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-tracker-core_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": { + "patch": [ + { + "comment": "Support non-alphabetic characters in URL scheme detection and keep the detected scheme within the atomic schema length limit (close #1238)" + } + ] + } + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-tracker-core_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-tracker-core_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-tracker-core_v4.8.2", diff --git a/libraries/browser-tracker-core/CHANGELOG.md b/libraries/browser-tracker-core/CHANGELOG.md index deab95ad8..fd87ade61 100644 --- a/libraries/browser-tracker-core/CHANGELOG.md +++ b/libraries/browser-tracker-core/CHANGELOG.md @@ -1,6 +1,40 @@ # Change Log - @snowplow/browser-tracker-core -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +### Minor changes + +- Add disableSessionContextWithinWebView option to suppress client_session entity in hybrid native+WebView deployments + +### Patches + +- Remove forced layout read from tracker initialization: replace init-time getBrowserProperties() call with direct non-layout reads; defer the first readBrowserProperties() to first event build time. + +### Updates + +- Add preserveOriginalReferrer tracker configuration option for SPA referrer tracking + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +### Patches + +- Support non-alphabetic characters in URL scheme detection and keep the detected scheme within the atomic schema length limit (close #1238) + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/libraries/browser-tracker-core/package.json b/libraries/browser-tracker-core/package.json index f5a65cc52..4300af6c6 100644 --- a/libraries/browser-tracker-core/package.json +++ b/libraries/browser-tracker-core/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-tracker-core", - "version": "4.8.2", + "version": "4.10.0", "description": "Core functionality for Snowplow Browser trackers", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -24,15 +24,13 @@ "dependencies": { "@snowplow/tracker-core": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", "@types/jsdom": "~16.2.14", - "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", "eslint": "~8.11.0", diff --git a/libraries/browser-tracker-core/rollup.config.js b/libraries/browser-tracker-core/rollup.config.js index bc7e0d95b..3f02fc230 100644 --- a/libraries/browser-tracker-core/rollup.config.js +++ b/libraries/browser-tracker-core/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -50,7 +49,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, { diff --git a/libraries/browser-tracker-core/src/helpers/browser_props.ts b/libraries/browser-tracker-core/src/helpers/browser_props.ts index 4ebff1506..6af2b45d7 100644 --- a/libraries/browser-tracker-core/src/helpers/browser_props.ts +++ b/libraries/browser-tracker-core/src/helpers/browser_props.ts @@ -46,6 +46,16 @@ function initializeResizeObserver() { let cachedProperties: BrowserProperties; +/** + * Resets module-level browser property state. Used in tests to prevent state bleed between test cases. + * @internal + */ +export function resetBrowserPropertiesState() { + cachedProperties = undefined as any; + resizeObserverInitialized = false; + readBrowserPropertiesTask = null; +} + /** * Gets various browser properties (that are expensive to read!) * - Will use a "ResizeObserver" approach in modern browsers to update cached properties only on change @@ -55,6 +65,9 @@ let cachedProperties: BrowserProperties; */ export function getBrowserProperties() { if (!useResizeObserver()) { + // TODO: per-event forced reflow — each call re-reads layout geometry (offsetWidth, scrollHeight, + // etc.) for browsers without ResizeObserver. ResizeObserver has been in all major browsers since + // 2020 so this is an edge-case path. File a separate ticket to address if needed. return readBrowserProperties(); } diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts index edd8b5ea8..5521ea9a6 100755 --- a/libraries/browser-tracker-core/src/tracker/index.ts +++ b/libraries/browser-tracker-core/src/tracker/index.ts @@ -73,7 +73,7 @@ import { APPLICATION_CONTEXT_SCHEMA, ACTIVITY_METRICS_SCHEMA, } from './schemata'; -import { getBrowserProperties } from '../helpers/browser_props'; +import { getBrowserProperties, makeDimension } from '../helpers/browser_props'; import { asyncCookieStorage, syncCookieStorage } from './cookie_storage'; declare global { @@ -316,6 +316,7 @@ export function Tracker( configurations: {}, }, configSessionContext = trackerConfiguration.contexts?.session ?? false, + configDisableSessionInWebView = trackerConfiguration.disableSessionContextWithinWebView ?? false, toOptoutByCookie: string | boolean, onSessionUpdateCallback = trackerConfiguration.onSessionUpdateCallback, manualSessionUpdateCalled = false, @@ -327,7 +328,10 @@ export function Tracker( configCookieDomain = findRootDomain(configCookieSameSite, configCookieSecure); } - const { browserLanguage, resolution, colorDepth, cookiesEnabled } = getBrowserProperties(); + const cookiesEnabled = window.navigator.cookieEnabled; + const colorDepth = screen.colorDepth; + const browserLanguage = window.navigator.language || (window.navigator as any).userLanguage; + const resolution = makeDimension(screen.width, screen.height); const timeZone = getTimeZone(); // Set up unchanging name-value pairs @@ -363,6 +367,10 @@ export function Tracker( initializeIdsAndCookies(); + if (trackerConfiguration.preserveOriginalReferrer && configReferrerUrl) { + customReferrer = configReferrerUrl; + } + if (trackerConfiguration.crossDomainLinker) { decorateLinks(trackerConfiguration.crossDomainLinker); } @@ -456,10 +464,20 @@ export function Tracker( * Extract scheme/protocol from URL */ function getProtocolScheme(url: string) { - const e = new RegExp('^([a-z]+):'), + // RFC 3986: scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ), case-insensitive. + // A stricter [a-z]+ pattern misclassifies schemes such as chrome-extension as + // relative references, which then get appended to the base URL. + const e = new RegExp('^([a-z][a-z0-9+\\-.]*):', 'i'), matches = e.exec(url); - return matches ? matches[1] : null; + // The atomic event schema caps the url scheme at 16 characters + // (page_urlscheme / refr_urlscheme, maxLength 16). A longer scheme would only + // produce an event that fails validation downstream, so treat such URLs as + // relative references (the prior behaviour) rather than absolute URLs. + // Ref: com.snowplowanalytics.snowplow/atomic/jsonschema/1-0-0 + const MAX_SCHEME_LENGTH = 16; + + return matches && matches[1].length <= MAX_SCHEME_LENGTH ? matches[1] : null; } /* @@ -586,7 +604,8 @@ export function Tracker( if (isActivityMetricsEnabled()) { if (activityMetricsState.lastScrollX !== undefined && activityMetricsState.lastScrollY !== undefined) { - activityMetricsState.metrics.scrollDistance += Math.abs(x - activityMetricsState.lastScrollX) + Math.abs(y - activityMetricsState.lastScrollY); + activityMetricsState.metrics.scrollDistance += + Math.abs(x - activityMetricsState.lastScrollX) + Math.abs(y - activityMetricsState.lastScrollY); } activityMetricsState.lastScrollX = x; activityMetricsState.lastScrollY = y; @@ -1004,7 +1023,11 @@ export function Tracker( configStateStorageStrategy, configAnonymousTracking ); - if (configSessionContext && (!configAnonymousTracking || configAnonymousSessionTracking)) { + if ( + configSessionContext && + (!configAnonymousTracking || configAnonymousSessionTracking) && + !(configDisableSessionInWebView && isInWebView()) + ) { addSessionContextToPayload(payloadBuilder, clientSession); } @@ -1031,6 +1054,21 @@ export function Tracker( }; } + /** + * Returns true when the page is running inside a Snowplow V2 WebView interface. + * Mirrors the three-interface check in @snowplow/webview-tracker without introducing + * a package dependency on browser-tracker-core. + */ + function isInWebView(): boolean { + return !!( + (window as any).SnowplowWebInterfaceV2 || + ((window as any).webkit && + (window as any).webkit.messageHandlers && + (window as any).webkit.messageHandlers.snowplowV2) || + (window as any).ReactNativeWebView + ); + } + function addSessionContextToPayload(payloadBuilder: PayloadBuilder, clientSession: ClientSession) { let sessionContext: SelfDescribingJson = { schema: CLIENT_SESSION_SCHEMA, @@ -1353,6 +1391,10 @@ export function Tracker( return loadDomainUserIdCookie(); }, + getDomainSessionId: function () { + return memorizedSessionId || sessionIdFromIdCookie(loadDomainUserIdCookie()); + }, + setReferrerUrl: function (url: string) { customReferrer = url; }, diff --git a/libraries/browser-tracker-core/src/tracker/types.ts b/libraries/browser-tracker-core/src/tracker/types.ts index 24f83030d..f2a83b297 100755 --- a/libraries/browser-tracker-core/src/tracker/types.ts +++ b/libraries/browser-tracker-core/src/tracker/types.ts @@ -197,6 +197,26 @@ export type TrackerConfiguration = { */ preservePageViewIdForUrl?: PreservePageViewIdForUrl; + /** + * When enabled, the original external referrer captured at tracker initialisation is frozen and + * used as the referrer for all subsequent page view events in the same session, including + * client-side navigations in single-page applications (SPAs). + * + * Without this option, each SPA navigation sets the referrer to the previous internal route, + * making it difficult to determine how the user originally arrived at the site across their + * session. Enable this option to preserve the original external referrer (e.g. google.com) + * across all `trackPageView` calls. + * + * If `document.referrer` is empty at initialisation (e.g. direct navigation), this option + * has no effect and the default per-navigation referrer chain behaviour applies. + * + * Setting `setReferrerUrl` after initialisation will override this value, as `customReferrer` + * always takes precedence. + * + * @defaultValue false + */ + preserveOriginalReferrer?: boolean; + /** * Whether to write the cookies synchronously. * This can be useful for testing purposes to ensure that the cookies are written before the test continues. @@ -205,6 +225,22 @@ export type TrackerConfiguration = { * @defaultValue false */ synchronousCookieWrite?: boolean; + /** + * When set to `true`, the tracker will not attach the `client_session` context entity to events + * when running inside a mobile WebView (i.e. when a Snowplow V2 WebView interface is detected). + * + * In hybrid native+WebView deployments the mobile SDK already contributes its own `client_session` + * entity. Allowing a second one from the JavaScript tracker causes duplicate-session problems in + * downstream modelling (e.g. dbt-snowplow-unified). Setting this option suppresses the JavaScript + * tracker's copy while the `contexts.session` flag can remain `true`. + * + * Detection uses the same three V2 interface checks as `@snowplow/webview-tracker`: + * `window.SnowplowWebInterfaceV2`, `window.webkit?.messageHandlers?.snowplowV2`, and + * `window.ReactNativeWebView`. + * + * @defaultValue false + */ + disableSessionContextWithinWebView?: boolean; } & EmitterConfigurationBase & LocalStorageEventStoreConfigurationBase; @@ -405,6 +441,13 @@ export interface BrowserTracker { */ getDomainUserInfo: () => ParsedIdCookie; + /** + * Get the current domain session ID (from first party cookie) + * + * @returns Domain session ID + */ + getDomainSessionId: () => string; + /** * Override referrer * diff --git a/libraries/browser-tracker-core/test/browser_props.test.ts b/libraries/browser-tracker-core/test/browser_props.test.ts index 17ab43eaf..8e300eed8 100644 --- a/libraries/browser-tracker-core/test/browser_props.test.ts +++ b/libraries/browser-tracker-core/test/browser_props.test.ts @@ -1,4 +1,4 @@ -import { makeDimension, getBrowserProperties } from '../src/helpers/browser_props'; +import { makeDimension, getBrowserProperties, resetBrowserPropertiesState } from '../src/helpers/browser_props'; describe('Browser props', () => { it('makeDimension correctly floors dimension type values', () => { @@ -16,12 +16,133 @@ describe('Browser props', () => { }); describe('#getBrowserProperties', () => { + describe('caching behavior (modern browsers with ResizeObserver)', () => { + let savedResizeObserver: any; + + beforeEach(() => { + savedResizeObserver = (window as any).ResizeObserver; + // Provide a minimal ResizeObserver so the caching path is exercised + (window as any).ResizeObserver = class MockResizeObserver { + constructor(_cb: ResizeObserverCallback) {} + observe() {} + unobserve() {} + disconnect() {} + }; + resetBrowserPropertiesState(); + }); + + afterEach(() => { + (window as any).ResizeObserver = savedResizeObserver; + resetBrowserPropertiesState(); + jest.restoreAllMocks(); + }); + + it('returns the same cached reference on successive calls', () => { + const first = getBrowserProperties(); + const second = getBrowserProperties(); + expect(second).toBe(first); + }); + + it('reset clears the cache so the next call re-reads browser properties', () => { + getBrowserProperties(); + resetBrowserPropertiesState(); + const fresh = getBrowserProperties(); + expect(fresh).toBeDefined(); + expect(fresh.cookiesEnabled).toBeDefined(); + }); + + it('rAF callback triggered by ResizeObserver updates cachedProperties', () => { + let capturedResizeCallback: ResizeObserverCallback | undefined; + let capturedRafCallback: FrameRequestCallback | undefined; + + // Override the mock to capture the ResizeObserver callback so we can trigger it manually + (window as any).ResizeObserver = class CaptureResizeObserver { + constructor(cb: ResizeObserverCallback) { + capturedResizeCallback = cb; + } + observe() {} + unobserve() {} + disconnect() {} + }; + resetBrowserPropertiesState(); + + jest.spyOn(window, 'requestAnimationFrame').mockImplementation((cb) => { + capturedRafCallback = cb; + return 1; + }); + + const first = getBrowserProperties(); // populates cache + wires up ResizeObserver + + // Trigger the ResizeObserver callback to schedule a rAF + expect(capturedResizeCallback).toBeDefined(); + capturedResizeCallback!([], {} as ResizeObserver); + expect(capturedRafCallback).toBeDefined(); + + // rAF has been scheduled but not yet fired — cache still holds the original value + const beforeRaf = getBrowserProperties(); + expect(beforeRaf).toBe(first); + + // Fire the rAF callback to simulate the cache update + capturedRafCallback!(performance.now()); + + // Cache was refreshed by the rAF callback + const afterRaf = getBrowserProperties(); + expect(afterRaf).toBeDefined(); + }); + }); + + describe('old-browser fallback (no ResizeObserver)', () => { + let savedResizeObserver: any; + + beforeEach(() => { + savedResizeObserver = (window as any).ResizeObserver; + delete (window as any).ResizeObserver; + resetBrowserPropertiesState(); + }); + + afterEach(() => { + (window as any).ResizeObserver = savedResizeObserver; + resetBrowserPropertiesState(); + }); + + it('calls readBrowserProperties on every invocation — no caching', () => { + const first = getBrowserProperties(); + const second = getBrowserProperties(); + // Without ResizeObserver caching each call returns a fresh object + expect(second).not.toBe(first); + }); + }); + describe('with undefined document', () => { + let originalDocument: typeof document; + let savedResizeObserver: any; + beforeAll(() => { + originalDocument = document; + savedResizeObserver = (window as any).ResizeObserver; + + // Ensure the caching path is taken so initializeResizeObserver() guards against undefined document + (window as any).ResizeObserver = class MockResizeObserver { + constructor(_cb: ResizeObserverCallback) {} + observe() {} + unobserve() {} + disconnect() {} + }; + + // Pre-populate cache while document is still available + resetBrowserPropertiesState(); + getBrowserProperties(); + // @ts-expect-error document = undefined; }); + afterAll(() => { + document = originalDocument; + (window as any).ResizeObserver = savedResizeObserver; + resetBrowserPropertiesState(); + }); + it('does not invoke the resize observer if the document is null', () => { const browserProperties = getBrowserProperties(); expect(browserProperties).not.toEqual(null); diff --git a/libraries/browser-tracker-core/test/id_cookie.test.ts b/libraries/browser-tracker-core/test/id_cookie.test.ts index a3749d608..0638f4b50 100644 --- a/libraries/browser-tracker-core/test/id_cookie.test.ts +++ b/libraries/browser-tracker-core/test/id_cookie.test.ts @@ -31,7 +31,7 @@ import * as uuid from 'uuid'; jest.mock('uuid'); const MOCK_UUID = '123456789'; -jest.spyOn(uuid, 'v4').mockReturnValue(MOCK_UUID); +(jest.spyOn(uuid, 'v4') as jest.SpyInstance).mockReturnValue(MOCK_UUID); import { payloadBuilder } from '@snowplow/tracker-core'; import { @@ -173,7 +173,7 @@ describe('startNewIdCookieSession', () => { let before = sessionIdFromIdCookie(idCookie); - jest.spyOn(uuid, 'v4').mockReturnValueOnce('another_random_uuid'); + (jest.spyOn(uuid, 'v4') as jest.SpyInstance).mockReturnValueOnce('another_random_uuid'); startNewIdCookieSession(idCookie); let after = sessionIdFromIdCookie(idCookie); diff --git a/libraries/browser-tracker-core/test/tracker/cross_domain.test.ts b/libraries/browser-tracker-core/test/tracker/cross_domain.test.ts index c069fba6f..68e76fdc6 100644 --- a/libraries/browser-tracker-core/test/tracker/cross_domain.test.ts +++ b/libraries/browser-tracker-core/test/tracker/cross_domain.test.ts @@ -1,7 +1,7 @@ import * as uuid from 'uuid'; jest.mock('uuid'); const MOCK_UUID = '123456789'; -jest.spyOn(uuid, 'v4').mockReturnValue(MOCK_UUID); +(jest.spyOn(uuid, 'v4') as jest.SpyInstance).mockReturnValue(MOCK_UUID); import { createTracker } from '../helpers'; import { getByText, queryByText, waitFor } from '@testing-library/dom'; diff --git a/libraries/browser-tracker-core/test/tracker/page_view.test.ts b/libraries/browser-tracker-core/test/tracker/page_view.test.ts index 42d752d2d..0a56c5e97 100644 --- a/libraries/browser-tracker-core/test/tracker/page_view.test.ts +++ b/libraries/browser-tracker-core/test/tracker/page_view.test.ts @@ -28,6 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import * as browserProps from '../../src/helpers/browser_props'; import { createTracker } from '../helpers'; describe('Tracker API: page views', () => { @@ -55,6 +56,49 @@ describe('Tracker API: page views', () => { expect(titles).toEqual(['Title override', 'Page title 1']); }); + it('setCustomUrl keeps a URL whose scheme contains a hyphen (e.g. a browser extension)', () => { + let urls: string[] = []; + const tracker = createTracker({ + plugins: [ + { + afterTrack: (payload) => { + urls.push(payload.url as string); + }, + }, + ], + }); + + // chrome-extension is 16 chars, which is within the atomic event schema's + // 16-char scheme limit, so it is a real, schema-valid scheme the tracker + // must preserve as an absolute URL rather than resolve against the page. + tracker?.setCustomUrl('chrome-extension://abcdefg/index.html'); + tracker?.trackPageView(); + + expect(urls[0]).toBe('chrome-extension://abcdefg/index.html'); + }); + + it('setCustomUrl does not treat an over-length scheme as absolute (schema caps scheme at 16 chars)', () => { + let urls: string[] = []; + const tracker = createTracker({ + plugins: [ + { + afterTrack: (payload) => { + urls.push(payload.url as string); + }, + }, + ], + }); + + // safari-web-extension is 20 chars, exceeding the atomic event schema's + // 16-char scheme limit. Treating it as absolute would only produce an event + // that fails validation downstream, so it must be handled as a relative + // reference (resolved against the page) instead of preserved verbatim. + tracker?.setCustomUrl('safari-web-extension://abcdefg/index.html'); + tracker?.trackPageView(); + + expect(urls[0]).not.toBe('safari-web-extension://abcdefg/index.html'); + }); + it('Uses custom page title set using setDocumentTitle until overriden again', () => { let titles: string[] = []; const tracker = createTracker({ @@ -100,4 +144,31 @@ describe('Tracker API: page views', () => { expect(titles).toEqual(['Explicit title', 'Page title 1']); }); + + describe('getBrowserProperties deferred init', () => { + let getBrowserPropertiesSpy: jest.SpyInstance; + + beforeEach(() => { + browserProps.resetBrowserPropertiesState(); + getBrowserPropertiesSpy = jest.spyOn(browserProps, 'getBrowserProperties'); + }); + + afterEach(() => { + jest.restoreAllMocks(); + browserProps.resetBrowserPropertiesState(); + }); + + it('does not call getBrowserProperties during tracker construction', () => { + createTracker(); + expect(getBrowserPropertiesSpy).not.toHaveBeenCalled(); + }); + + it('calls getBrowserProperties exactly once on the first trackPageView (default config)', () => { + const tracker = createTracker(); + getBrowserPropertiesSpy.mockClear(); + + tracker?.trackPageView(); + expect(getBrowserPropertiesSpy).toHaveBeenCalledTimes(1); + }); + }); }); diff --git a/libraries/browser-tracker-core/test/tracker/referrer.test.ts b/libraries/browser-tracker-core/test/tracker/referrer.test.ts new file mode 100644 index 000000000..732ae419b --- /dev/null +++ b/libraries/browser-tracker-core/test/tracker/referrer.test.ts @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import { createTracker } from '../helpers'; + +const EXTERNAL_REFERRER = 'https://www.google.com/search?q=snowplow'; + +/** + * Simulate a SPA client-side navigation by updating window.location + * without a page reload, and advancing the tracker's internal URL state. + */ +function navigateTo(path: string) { + window.history.pushState({}, '', path); +} + +describe('Tracker API: preserveOriginalReferrer', () => { + let referrerSpy: jest.SpyInstance; + + beforeEach(() => { + // Reset URL to a known starting point before each test + window.history.pushState({}, '', '/test/page.html'); + referrerSpy = jest.spyOn(document, 'referrer', 'get').mockReturnValue(EXTERNAL_REFERRER); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('freezes the original external referrer across SPA navigations when enabled', () => { + const referrers: string[] = []; + const tracker = createTracker({ + preserveOriginalReferrer: true, + plugins: [ + { + afterTrack: (payload) => { + referrers.push(payload.refr as string); + }, + }, + ], + }); + + // First page view — referrer should be the external referrer + tracker?.trackPageView(); + + // Simulate SPA navigation to a different route + navigateTo('/test/about.html'); + tracker?.trackPageView(); + + // Simulate another SPA navigation + navigateTo('/test/contact.html'); + tracker?.trackPageView(); + + // All three page views should report the original external referrer + expect(referrers).toHaveLength(3); + expect(referrers[0]).toBe(EXTERNAL_REFERRER); + expect(referrers[1]).toBe(EXTERNAL_REFERRER); + expect(referrers[2]).toBe(EXTERNAL_REFERRER); + }); + + it('is a no-op when document.referrer is empty at init (direct navigation)', () => { + // Override the referrer spy to return empty string (direct navigation) + referrerSpy.mockReturnValue(''); + + const referrers: string[] = []; + const tracker = createTracker({ + preserveOriginalReferrer: true, + plugins: [ + { + afterTrack: (payload) => { + referrers.push((payload.refr as string) ?? ''); + }, + }, + ], + }); + + // First page view — no external referrer, so refr is empty + tracker?.trackPageView(); + const firstRefr = referrers[0]; + + // Navigate to a new route — now the previous internal URL becomes the referrer + navigateTo('/test/about.html'); + tracker?.trackPageView(); + + // The second page view should have the previous internal URL as referrer + // (not frozen to empty string), proving the no-op behaviour + expect(referrers).toHaveLength(2); + expect(firstRefr ?? '').toBe(''); + // The second referrer should be set to the previous page's URL (internal chain intact) + expect(referrers[1]).toContain('/test/page.html'); + }); + + it('allows setReferrerUrl to override the preserved referrer after init', () => { + const referrers: string[] = []; + const tracker = createTracker({ + preserveOriginalReferrer: true, + plugins: [ + { + afterTrack: (payload) => { + referrers.push(payload.refr as string); + }, + }, + ], + }); + + // Override with an explicit custom referrer after init + tracker?.setReferrerUrl('https://custom.com/landing'); + tracker?.trackPageView(); + + navigateTo('/test/about.html'); + tracker?.trackPageView(); + + // The explicit setReferrerUrl call wins (last-write-wins on customReferrer) + expect(referrers[0]).toBe('https://custom.com/landing'); + expect(referrers[1]).toBe('https://custom.com/landing'); + }); + + it('does not affect SPA referrer chain when option is absent', () => { + const referrers: string[] = []; + const tracker = createTracker({ + // preserveOriginalReferrer not set — default behaviour + plugins: [ + { + afterTrack: (payload) => { + referrers.push((payload.refr as string) ?? ''); + }, + }, + ], + }); + + // First page view uses document.referrer + tracker?.trackPageView(); + + // Navigate — second page view should use the previous internal URL as referrer + navigateTo('/test/about.html'); + tracker?.trackPageView(); + + expect(referrers).toHaveLength(2); + expect(referrers[0]).toBe(EXTERNAL_REFERRER); + // After SPA navigation the referrer becomes the previous internal URL + expect(referrers[1]).toContain('/test/page.html'); + }); +}); diff --git a/libraries/browser-tracker-core/test/tracker/session_data.test.ts b/libraries/browser-tracker-core/test/tracker/session_data.test.ts index c821818ae..d4b7277db 100644 --- a/libraries/browser-tracker-core/test/tracker/session_data.test.ts +++ b/libraries/browser-tracker-core/test/tracker/session_data.test.ts @@ -31,7 +31,7 @@ import * as uuid from 'uuid'; jest.mock('uuid'); const MOCK_UUID = '123456789'; -jest.spyOn(uuid, 'v4').mockReturnValue(MOCK_UUID); +(jest.spyOn(uuid, 'v4') as jest.SpyInstance).mockReturnValue(MOCK_UUID); import { createTestIdCookie, createTestSessionIdCookie, createTracker } from '../helpers'; @@ -131,6 +131,30 @@ describe('Tracker API: ', () => { expect(tracker?.getDomainSessionIndex()).toEqual(2); }); + it('Returns the current domain session id from an existing session', () => { + const sessionId = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; + document.cookie = createTestIdCookie({ sessionId }) + ' ' + createTestSessionIdCookie(); + const tracker = createTracker(); + + expect(tracker?.getDomainSessionId()).toEqual(sessionId); + }); + + it('Returns a newly generated domain session id on a new session', () => { + const tracker = createTracker(); + + expect(tracker?.getDomainSessionId()).toEqual(MOCK_UUID); + }); + + it('Returns the updated domain session id after newSession()', () => { + const sessionId = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'; + document.cookie = createTestIdCookie({ sessionId }) + ' ' + createTestSessionIdCookie(); + const tracker = createTracker(); + expect(tracker?.getDomainSessionId()).toEqual(sessionId); + + tracker?.newSession(); + expect(tracker?.getDomainSessionId()).toEqual(MOCK_UUID); + }); + it('Adds the client session context entity when enabled', (done) => { const tracker = createTracker({ contexts: { session: true }, @@ -189,6 +213,71 @@ describe('Tracker API: ', () => { tracker?.trackPageView(); }); + describe('disableSessionContextWithinWebView', () => { + afterEach(() => { + delete (window as any).ReactNativeWebView; + }); + + it('Suppresses client_session entity when in WebView and option is enabled', (done) => { + (window as any).ReactNativeWebView = { postMessage: () => {} }; + const tracker = createTracker({ + contexts: { session: true }, + encodeBase64: false, + disableSessionContextWithinWebView: true, + plugins: [ + { + afterTrack: (payload) => { + let context = payload.co as string; + expect(context).not.toContain('client_session'); + done(); + }, + }, + ], + }); + + tracker?.trackPageView(); + }); + + it('Includes client_session entity when in WebView but option is explicitly false', (done) => { + (window as any).ReactNativeWebView = { postMessage: () => {} }; + const tracker = createTracker({ + contexts: { session: true }, + encodeBase64: false, + disableSessionContextWithinWebView: false, + plugins: [ + { + afterTrack: (payload) => { + let context = payload.co as string; + expect(context).toContain('client_session'); + done(); + }, + }, + ], + }); + + tracker?.trackPageView(); + }); + + it('Includes client_session entity when in WebView but option is absent (backward compat)', (done) => { + (window as any).ReactNativeWebView = { postMessage: () => {} }; + const tracker = createTracker({ + contexts: { session: true }, + encodeBase64: false, + plugins: [ + { + afterTrack: (payload) => { + let context = payload.co as string; + expect(context).toContain('client_session'); + done(); + }, + }, + ], + }); + + tracker?.trackPageView(); + }); + }); + describe('onSessionUpdateCallback functionality', () => { beforeEach(() => { const standardDate = new Date('2023-01-01T00:00:00Z'); diff --git a/libraries/tracker-core/CHANGELOG.json b/libraries/tracker-core/CHANGELOG.json index afa4d8ba2..c043608d9 100644 --- a/libraries/tracker-core/CHANGELOG.json +++ b/libraries/tracker-core/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/tracker-core", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/tracker-core_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/tracker-core_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/tracker-core_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/tracker-core_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/tracker-core_v4.8.2", diff --git a/libraries/tracker-core/CHANGELOG.md b/libraries/tracker-core/CHANGELOG.md index f1f025830..a129f02ef 100644 --- a/libraries/tracker-core/CHANGELOG.md +++ b/libraries/tracker-core/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/tracker-core -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/libraries/tracker-core/package.json b/libraries/tracker-core/package.json index 1ba3d88af..2144f8c4c 100644 --- a/libraries/tracker-core/package.json +++ b/libraries/tracker-core/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/tracker-core", - "version": "4.8.2", + "version": "4.10.0", "description": "Core functionality for Snowplow JavaScript trackers", "keywords": [ "tracking", @@ -45,15 +45,13 @@ }, "dependencies": { "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-json": "~4.1.0", "@rollup/plugin-node-resolve": "~13.1.3", "@types/node": "~14.6.0", - "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", "ava": "~5.1.1", diff --git a/libraries/tracker-core/rollup.config.js b/libraries/tracker-core/rollup.config.js index 1a7544981..42c391285 100644 --- a/libraries/tracker-core/rollup.config.js +++ b/libraries/tracker-core/rollup.config.js @@ -33,7 +33,6 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], output: [{ file: pkg['umd:main'].replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, { diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.json b/plugins/browser-plugin-ad-tracking/CHANGELOG.json index d7c4a4fb6..1ea047a89 100644 --- a/plugins/browser-plugin-ad-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-ad-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-ad-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-ad-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-ad-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-ad-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-ad-tracking_v4.8.2", diff --git a/plugins/browser-plugin-ad-tracking/CHANGELOG.md b/plugins/browser-plugin-ad-tracking/CHANGELOG.md index 56e44e9d0..1d95c364a 100644 --- a/plugins/browser-plugin-ad-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-ad-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-ad-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-ad-tracking/package.json b/plugins/browser-plugin-ad-tracking/package.json index 5432594f4..b7c614b9b 100644 --- a/plugins/browser-plugin-ad-tracking/package.json +++ b/plugins/browser-plugin-ad-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-ad-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Ad tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-ad-tracking/rollup.config.js b/plugins/browser-plugin-ad-tracking/rollup.config.js index 396a09090..ed975dc0b 100644 --- a/plugins/browser-plugin-ad-tracking/rollup.config.js +++ b/plugins/browser-plugin-ad-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-bot-detection/CHANGELOG.json b/plugins/browser-plugin-bot-detection/CHANGELOG.json index bb536dd8d..fa527b37d 100644 --- a/plugins/browser-plugin-bot-detection/CHANGELOG.json +++ b/plugins/browser-plugin-bot-detection/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-bot-detection", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-bot-detection_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-bot-detection_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-bot-detection_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-bot-detection_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-bot-detection_v4.8.2", diff --git a/plugins/browser-plugin-bot-detection/CHANGELOG.md b/plugins/browser-plugin-bot-detection/CHANGELOG.md index 42cf6a272..c39461923 100644 --- a/plugins/browser-plugin-bot-detection/CHANGELOG.md +++ b/plugins/browser-plugin-bot-detection/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-bot-detection -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-bot-detection/package.json b/plugins/browser-plugin-bot-detection/package.json index 2ebe61659..2caced45d 100644 --- a/plugins/browser-plugin-bot-detection/package.json +++ b/plugins/browser-plugin-bot-detection/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-bot-detection", - "version": "4.8.2", + "version": "4.10.0", "description": "Detects bots client-side using FingerprintJS BotD and attaches the result as a context entity.", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -49,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-bot-detection/rollup.config.js b/plugins/browser-plugin-bot-detection/rollup.config.js index fe08aba48..f9d815c79 100644 --- a/plugins/browser-plugin-bot-detection/rollup.config.js +++ b/plugins/browser-plugin-bot-detection/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-button-click-tracking/CHANGELOG.json b/plugins/browser-plugin-button-click-tracking/CHANGELOG.json index dd0dd87dd..ba033f0d0 100644 --- a/plugins/browser-plugin-button-click-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-button-click-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-button-click-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-button-click-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-button-click-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-button-click-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-button-click-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-button-click-tracking_v4.8.2", diff --git a/plugins/browser-plugin-button-click-tracking/CHANGELOG.md b/plugins/browser-plugin-button-click-tracking/CHANGELOG.md index 555febd17..1e4620f31 100644 --- a/plugins/browser-plugin-button-click-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-button-click-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-button-click-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-button-click-tracking/package.json b/plugins/browser-plugin-button-click-tracking/package.json index 85c744564..a7528766b 100644 --- a/plugins/browser-plugin-button-click-tracking/package.json +++ b/plugins/browser-plugin-button-click-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-button-click-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Button Click tracking for Snowplow", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-button-click-tracking/rollup.config.js b/plugins/browser-plugin-button-click-tracking/rollup.config.js index 5654a26d7..6680f04e5 100644 --- a/plugins/browser-plugin-button-click-tracking/rollup.config.js +++ b/plugins/browser-plugin-button-click-tracking/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.json b/plugins/browser-plugin-client-hints/CHANGELOG.json index 6776ddc4f..85f3a6c68 100644 --- a/plugins/browser-plugin-client-hints/CHANGELOG.json +++ b/plugins/browser-plugin-client-hints/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-client-hints", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-client-hints_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-client-hints_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-client-hints_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-client-hints_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-client-hints_v4.8.2", diff --git a/plugins/browser-plugin-client-hints/CHANGELOG.md b/plugins/browser-plugin-client-hints/CHANGELOG.md index cef53dd2f..eb8863eb2 100644 --- a/plugins/browser-plugin-client-hints/CHANGELOG.md +++ b/plugins/browser-plugin-client-hints/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-client-hints -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-client-hints/package.json b/plugins/browser-plugin-client-hints/package.json index 39951aded..3c2ecb6cc 100644 --- a/plugins/browser-plugin-client-hints/package.json +++ b/plugins/browser-plugin-client-hints/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-client-hints", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches Client Hints to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -26,7 +26,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@snowplow/tracker-core": "workspace:*", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-client-hints/rollup.config.js b/plugins/browser-plugin-client-hints/rollup.config.js index dac6e4d83..f3aa0b7be 100644 --- a/plugins/browser-plugin-client-hints/rollup.config.js +++ b/plugins/browser-plugin-client-hints/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-debugger/CHANGELOG.json b/plugins/browser-plugin-debugger/CHANGELOG.json index 5a294c7c6..dbd76f9a1 100644 --- a/plugins/browser-plugin-debugger/CHANGELOG.json +++ b/plugins/browser-plugin-debugger/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-debugger", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-debugger_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-debugger_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-debugger_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-debugger_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-debugger_v4.8.2", diff --git a/plugins/browser-plugin-debugger/CHANGELOG.md b/plugins/browser-plugin-debugger/CHANGELOG.md index e4d613b71..fb63f5607 100644 --- a/plugins/browser-plugin-debugger/CHANGELOG.md +++ b/plugins/browser-plugin-debugger/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-debugger -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-debugger/package.json b/plugins/browser-plugin-debugger/package.json index 3d70a419b..be0c6c779 100644 --- a/plugins/browser-plugin-debugger/package.json +++ b/plugins/browser-plugin-debugger/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-debugger", - "version": "4.8.2", + "version": "4.10.0", "description": "Debugger for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-debugger/rollup.config.js b/plugins/browser-plugin-debugger/rollup.config.js index 28464b11d..6ae9d968b 100644 --- a/plugins/browser-plugin-debugger/rollup.config.js +++ b/plugins/browser-plugin-debugger/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-element-tracking/CHANGELOG.json b/plugins/browser-plugin-element-tracking/CHANGELOG.json index 765186bea..3bf0703b6 100644 --- a/plugins/browser-plugin-element-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-element-tracking/CHANGELOG.json @@ -1,6 +1,42 @@ { "name": "@snowplow/browser-plugin-element-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-element-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-element-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": { + "none": [ + { + "comment": "Fix element tracking plugin sending element_index of 0 on expose_element and obscure_element events" + } + ] + } + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-element-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-element-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-element-tracking_v4.8.2", diff --git a/plugins/browser-plugin-element-tracking/CHANGELOG.md b/plugins/browser-plugin-element-tracking/CHANGELOG.md index a1174a122..545fe47f6 100644 --- a/plugins/browser-plugin-element-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-element-tracking/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log - @snowplow/browser-plugin-element-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +### Updates + +- Fix element tracking plugin sending element_index of 0 on expose_element and obscure_element events + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-element-tracking/package.json b/plugins/browser-plugin-element-tracking/package.json index 189aa3a26..2b3b0c493 100644 --- a/plugins/browser-plugin-element-tracking/package.json +++ b/plugins/browser-plugin-element-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-element-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Snowplow element tracking", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-element-tracking/rollup.config.js b/plugins/browser-plugin-element-tracking/rollup.config.js index 5d23ce74f..07574f559 100644 --- a/plugins/browser-plugin-element-tracking/rollup.config.js +++ b/plugins/browser-plugin-element-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-element-tracking/src/api.ts b/plugins/browser-plugin-element-tracking/src/api.ts index 748ba95ae..89e41496d 100644 --- a/plugins/browser-plugin-element-tracking/src/api.ts +++ b/plugins/browser-plugin-element-tracking/src/api.ts @@ -527,7 +527,13 @@ function intersectionCallback(entries: IntersectionObserverEntry[], observer: In configurations.forEach((config) => { if (entry.target.matches(config.selector)) { const siblings = getMatchingElements(config); - const position = siblings.findIndex((el) => el.isSameNode(entry.target)) + 1; + const foundIndex = siblings.findIndex((el) => el.isSameNode(entry.target)); + const position = foundIndex !== -1 ? foundIndex + 1 : Math.max(state.lastPosition + 1, 1); + const matchCount = foundIndex !== -1 ? siblings.length : Math.max(siblings.length + 1, position); + + if (foundIndex !== -1) { + state.lastPosition = foundIndex; + } if (entry.isIntersecting) { if (state.state !== ElementStatus.EXPOSED && state.state !== ElementStatus.PENDING) { @@ -547,7 +553,7 @@ function intersectionCallback(entries: IntersectionObserverEntry[], observer: In trackEvent(Events.ELEMENT_EXPOSE, config, entry.target, { boundingRect: entry.boundingClientRect, position, - matches: siblings.length, + matches: matchCount, }); } } @@ -573,7 +579,7 @@ function intersectionCallback(entries: IntersectionObserverEntry[], observer: In trackEvent(Events.ELEMENT_OBSCURE, config, entry.target, { boundingRect: entry.boundingClientRect, position, - matches: siblings.length, + matches: matchCount, }); } diff --git a/plugins/browser-plugin-element-tracking/test/api.test.ts b/plugins/browser-plugin-element-tracking/test/api.test.ts index 33ff280ff..4fd77b224 100644 --- a/plugins/browser-plugin-element-tracking/test/api.test.ts +++ b/plugins/browser-plugin-element-tracking/test/api.test.ts @@ -548,4 +548,77 @@ describe('Element Tracking Plugin API', () => { }); }); }); + + describe('intersectionCallback position fallback', () => { + let intersectionCallback: IntersectionObserverCallback; + + beforeAll(() => { + // Mock IntersectionObserver to capture the callback + (globalThis as any).IntersectionObserver = class { + constructor(cb: IntersectionObserverCallback) { + intersectionCallback = cb; + } + observe() {} + unobserve() {} + disconnect() {} + }; + }); + + afterAll(() => { + delete (globalThis as any).IntersectionObserver; + }); + + it('uses last-known position when element is no longer in DOM during intersection callback', () => { + // Create two matching elements so position > 1 is testable + const div1 = document.createElement('div'); + div1.classList.add('disappearing'); + document.body.appendChild(div1); + + const div2 = document.createElement('div'); + div2.classList.add('disappearing'); + document.body.appendChild(div2); + + startElementTracking({ + elements: { + selector: '.disappearing', + expose: true, + }, + }); + + // Remove div2 from DOM before firing intersection + document.body.removeChild(div2); + + // Simulate intersection callback for the now-removed div2 + const fakeEntry = { + target: div2, + isIntersecting: true, + intersectionRatio: 1, + intersectionRect: { height: 100, width: 100 } as DOMRect, + boundingClientRect: { x: 0, y: 0, width: 100, height: 100 } as DOMRect, + rootBounds: null, + time: performance.now(), + } as IntersectionObserverEntry; + + intersectionCallback([fakeEntry], { + unobserve() {}, + observe() {}, + disconnect() {}, + } as unknown as IntersectionObserver); + + return inNewTask(() => { + expect(eventQueue.length).toBeGreaterThanOrEqual(1); + + const exposeEvent = eventQueue.find((e) => unstructOf(e, 'expose_element')); + expect(exposeEvent).toBeDefined(); + + const elementEntities = entityOf(exposeEvent!, 'element') as Record[]; + expect(elementEntities).toBeDefined(); + expect(elementEntities.length).toBeGreaterThanOrEqual(1); + + // element_index must be >= 1, never 0 + const elementEntity = elementEntities[0]; + expect(elementEntity.element_index).toBeGreaterThanOrEqual(1); + }); + }); + }); }); diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json index bdcb095b8..2680d876b 100644 --- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.json +++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-enhanced-consent", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-enhanced-consent_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-enhanced-consent_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-enhanced-consent_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-enhanced-consent_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-enhanced-consent_v4.8.2", diff --git a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md index a90198c07..1afa17057 100644 --- a/plugins/browser-plugin-enhanced-consent/CHANGELOG.md +++ b/plugins/browser-plugin-enhanced-consent/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-enhanced-consent -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-enhanced-consent/package.json b/plugins/browser-plugin-enhanced-consent/package.json index 52759ad4c..c3ebfc814 100644 --- a/plugins/browser-plugin-enhanced-consent/package.json +++ b/plugins/browser-plugin-enhanced-consent/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-enhanced-consent", - "version": "4.8.2", + "version": "4.10.0", "description": "Consent tracking for Snowplow", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", "repository": { @@ -26,7 +26,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -49,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-enhanced-consent/rollup.config.js b/plugins/browser-plugin-enhanced-consent/rollup.config.js index 93b14595b..fc20df5fe 100644 --- a/plugins/browser-plugin-enhanced-consent/rollup.config.js +++ b/plugins/browser-plugin-enhanced-consent/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json index 3b3f764e3..84c61b885 100644 --- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json +++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-enhanced-ecommerce", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-enhanced-ecommerce_v4.8.2", diff --git a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md index d9cd587e3..df0fafd2d 100644 --- a/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md +++ b/plugins/browser-plugin-enhanced-ecommerce/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-enhanced-ecommerce -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-enhanced-ecommerce/package.json b/plugins/browser-plugin-enhanced-ecommerce/package.json index 72f5c8461..4717fed7d 100644 --- a/plugins/browser-plugin-enhanced-ecommerce/package.json +++ b/plugins/browser-plugin-enhanced-ecommerce/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-enhanced-ecommerce", - "version": "4.8.2", + "version": "4.10.0", "description": "Enhanced Ecommerce tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-enhanced-ecommerce/rollup.config.js b/plugins/browser-plugin-enhanced-ecommerce/rollup.config.js index f6bc4733e..fe36add47 100644 --- a/plugins/browser-plugin-enhanced-ecommerce/rollup.config.js +++ b/plugins/browser-plugin-enhanced-ecommerce/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.json b/plugins/browser-plugin-error-tracking/CHANGELOG.json index fd150eeff..2c7b5871b 100644 --- a/plugins/browser-plugin-error-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-error-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-error-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-error-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-error-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-error-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-error-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-error-tracking_v4.8.2", diff --git a/plugins/browser-plugin-error-tracking/CHANGELOG.md b/plugins/browser-plugin-error-tracking/CHANGELOG.md index 62395fe39..257e8f02d 100644 --- a/plugins/browser-plugin-error-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-error-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-error-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-error-tracking/package.json b/plugins/browser-plugin-error-tracking/package.json index e0e754f14..42bf1af57 100644 --- a/plugins/browser-plugin-error-tracking/package.json +++ b/plugins/browser-plugin-error-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-error-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Error tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-error-tracking/rollup.config.js b/plugins/browser-plugin-error-tracking/rollup.config.js index 500087175..9d4e4080e 100644 --- a/plugins/browser-plugin-error-tracking/rollup.config.js +++ b/plugins/browser-plugin-error-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-event-specifications/CHANGELOG.json b/plugins/browser-plugin-event-specifications/CHANGELOG.json index bdfd3ee48..15a948ef1 100644 --- a/plugins/browser-plugin-event-specifications/CHANGELOG.json +++ b/plugins/browser-plugin-event-specifications/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-event-specifications", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-event-specifications_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-event-specifications_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-event-specifications_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-event-specifications_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-event-specifications_v4.8.2", diff --git a/plugins/browser-plugin-event-specifications/CHANGELOG.md b/plugins/browser-plugin-event-specifications/CHANGELOG.md index 1baf7b816..275ced3d8 100644 --- a/plugins/browser-plugin-event-specifications/CHANGELOG.md +++ b/plugins/browser-plugin-event-specifications/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-event-specifications -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-event-specifications/package.json b/plugins/browser-plugin-event-specifications/package.json index cd6608721..a07e56bfe 100644 --- a/plugins/browser-plugin-event-specifications/package.json +++ b/plugins/browser-plugin-event-specifications/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-event-specifications", - "version": "4.8.2", + "version": "4.10.0", "description": "Automatically adds Event Specifications context to event specifications of a Data Product template.", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-event-specifications/rollup.config.js b/plugins/browser-plugin-event-specifications/rollup.config.js index 5b5b37e67..2fdaec972 100644 --- a/plugins/browser-plugin-event-specifications/rollup.config.js +++ b/plugins/browser-plugin-event-specifications/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.json b/plugins/browser-plugin-focalmeter/CHANGELOG.json index af17c5ffc..6997bd19b 100644 --- a/plugins/browser-plugin-focalmeter/CHANGELOG.json +++ b/plugins/browser-plugin-focalmeter/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-focalmeter", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-focalmeter_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-focalmeter_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-focalmeter_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-focalmeter_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-focalmeter_v4.8.2", diff --git a/plugins/browser-plugin-focalmeter/CHANGELOG.md b/plugins/browser-plugin-focalmeter/CHANGELOG.md index 536766159..5a8378490 100644 --- a/plugins/browser-plugin-focalmeter/CHANGELOG.md +++ b/plugins/browser-plugin-focalmeter/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-focalmeter -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-focalmeter/package.json b/plugins/browser-plugin-focalmeter/package.json index e3492c2b6..4595b87d3 100644 --- a/plugins/browser-plugin-focalmeter/package.json +++ b/plugins/browser-plugin-focalmeter/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-focalmeter", - "version": "4.8.2", + "version": "4.10.0", "description": "Kantar FocalMeter integration for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-focalmeter/rollup.config.js b/plugins/browser-plugin-focalmeter/rollup.config.js index dfef86c7b..659f9438b 100644 --- a/plugins/browser-plugin-focalmeter/rollup.config.js +++ b/plugins/browser-plugin-focalmeter/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.json b/plugins/browser-plugin-form-tracking/CHANGELOG.json index 6846e88dd..d7035cb5b 100644 --- a/plugins/browser-plugin-form-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-form-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-form-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-form-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-form-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-form-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-form-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-form-tracking_v4.8.2", diff --git a/plugins/browser-plugin-form-tracking/CHANGELOG.md b/plugins/browser-plugin-form-tracking/CHANGELOG.md index 0ded93018..3ed1d5a32 100644 --- a/plugins/browser-plugin-form-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-form-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-form-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-form-tracking/package.json b/plugins/browser-plugin-form-tracking/package.json index ea157d036..23afb48b3 100644 --- a/plugins/browser-plugin-form-tracking/package.json +++ b/plugins/browser-plugin-form-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-form-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Form tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-form-tracking/rollup.config.js b/plugins/browser-plugin-form-tracking/rollup.config.js index 2396a31d0..48aa953de 100644 --- a/plugins/browser-plugin-form-tracking/rollup.config.js +++ b/plugins/browser-plugin-form-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.json b/plugins/browser-plugin-ga-cookies/CHANGELOG.json index 750bc1d96..71375c2c5 100644 --- a/plugins/browser-plugin-ga-cookies/CHANGELOG.json +++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-ga-cookies", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-ga-cookies_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-ga-cookies_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-ga-cookies_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-ga-cookies_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-ga-cookies_v4.8.2", diff --git a/plugins/browser-plugin-ga-cookies/CHANGELOG.md b/plugins/browser-plugin-ga-cookies/CHANGELOG.md index 5cfad87a3..3c3e4bb63 100644 --- a/plugins/browser-plugin-ga-cookies/CHANGELOG.md +++ b/plugins/browser-plugin-ga-cookies/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-ga-cookies -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-ga-cookies/package.json b/plugins/browser-plugin-ga-cookies/package.json index 1a785fab9..49aefdb36 100644 --- a/plugins/browser-plugin-ga-cookies/package.json +++ b/plugins/browser-plugin-ga-cookies/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-ga-cookies", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches GA cookie data to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-ga-cookies/rollup.config.js b/plugins/browser-plugin-ga-cookies/rollup.config.js index 837ac7417..4748aabab 100644 --- a/plugins/browser-plugin-ga-cookies/rollup.config.js +++ b/plugins/browser-plugin-ga-cookies/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.json b/plugins/browser-plugin-geolocation/CHANGELOG.json index a9cc1ab65..7ef792ae1 100644 --- a/plugins/browser-plugin-geolocation/CHANGELOG.json +++ b/plugins/browser-plugin-geolocation/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-geolocation", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-geolocation_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-geolocation_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-geolocation_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-geolocation_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-geolocation_v4.8.2", diff --git a/plugins/browser-plugin-geolocation/CHANGELOG.md b/plugins/browser-plugin-geolocation/CHANGELOG.md index a68ecb70c..1f2a78159 100644 --- a/plugins/browser-plugin-geolocation/CHANGELOG.md +++ b/plugins/browser-plugin-geolocation/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-geolocation -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-geolocation/package.json b/plugins/browser-plugin-geolocation/package.json index 33f633b2b..901ab6d62 100644 --- a/plugins/browser-plugin-geolocation/package.json +++ b/plugins/browser-plugin-geolocation/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-geolocation", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches Geolocation data to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-geolocation/rollup.config.js b/plugins/browser-plugin-geolocation/rollup.config.js index 762f93b25..ae1d93d44 100644 --- a/plugins/browser-plugin-geolocation/rollup.config.js +++ b/plugins/browser-plugin-geolocation/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json index 6c3529099..d46303677 100644 --- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-link-click-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-link-click-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-link-click-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-link-click-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-link-click-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-link-click-tracking_v4.8.2", diff --git a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md index 1e06efdbe..1de7ae1d8 100644 --- a/plugins/browser-plugin-link-click-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-link-click-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-link-click-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-link-click-tracking/package.json b/plugins/browser-plugin-link-click-tracking/package.json index 4efa8d5db..00be780d0 100644 --- a/plugins/browser-plugin-link-click-tracking/package.json +++ b/plugins/browser-plugin-link-click-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-link-click-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Link Click tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-link-click-tracking/rollup.config.js b/plugins/browser-plugin-link-click-tracking/rollup.config.js index afc39459d..132b51fdb 100644 --- a/plugins/browser-plugin-link-click-tracking/rollup.config.js +++ b/plugins/browser-plugin-link-click-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.json b/plugins/browser-plugin-media-tracking/CHANGELOG.json index 455e43732..d712cff36 100644 --- a/plugins/browser-plugin-media-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-media-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-media-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-media-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-media-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-media-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-media-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-media-tracking_v4.8.2", diff --git a/plugins/browser-plugin-media-tracking/CHANGELOG.md b/plugins/browser-plugin-media-tracking/CHANGELOG.md index 31ea1a782..4e1c3549e 100644 --- a/plugins/browser-plugin-media-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-media-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-media-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-media-tracking/package.json b/plugins/browser-plugin-media-tracking/package.json index 994893f6f..1936da501 100644 --- a/plugins/browser-plugin-media-tracking/package.json +++ b/plugins/browser-plugin-media-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-media-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Audio/Video tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -25,15 +25,13 @@ "@snowplow/browser-tracker-core": "workspace:*", "@snowplow/tracker-core": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", "@types/jsdom": "~16.2.14", - "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", "eslint": "~8.11.0", @@ -50,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-media-tracking/rollup.config.js b/plugins/browser-plugin-media-tracking/rollup.config.js index 576bbf899..1003a0d5b 100644 --- a/plugins/browser-plugin-media-tracking/rollup.config.js +++ b/plugins/browser-plugin-media-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner(true)], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner(true)], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-media/CHANGELOG.json b/plugins/browser-plugin-media/CHANGELOG.json index 2b5204e9d..a77afc59b 100644 --- a/plugins/browser-plugin-media/CHANGELOG.json +++ b/plugins/browser-plugin-media/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-media", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-media_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-media_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-media_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-media_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-media_v4.8.2", diff --git a/plugins/browser-plugin-media/CHANGELOG.md b/plugins/browser-plugin-media/CHANGELOG.md index 3473e8d0d..1fa6268b0 100644 --- a/plugins/browser-plugin-media/CHANGELOG.md +++ b/plugins/browser-plugin-media/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-media -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-media/package.json b/plugins/browser-plugin-media/package.json index daf4b443d..79a8b76ae 100644 --- a/plugins/browser-plugin-media/package.json +++ b/plugins/browser-plugin-media/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-media", - "version": "4.8.2", + "version": "4.10.0", "description": "Snowplow media tracking", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -25,15 +25,13 @@ "@snowplow/browser-tracker-core": "workspace:*", "@snowplow/tracker-core": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", "@types/jsdom": "~16.2.14", - "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", "eslint": "~8.11.0", @@ -50,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-media/rollup.config.js b/plugins/browser-plugin-media/rollup.config.js index 67bc856d7..dd69f312d 100644 --- a/plugins/browser-plugin-media/rollup.config.js +++ b/plugins/browser-plugin-media/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.json b/plugins/browser-plugin-optimizely-x/CHANGELOG.json index c6e01d0d2..bcc878688 100644 --- a/plugins/browser-plugin-optimizely-x/CHANGELOG.json +++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-optimizely-x", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-optimizely-x_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-optimizely-x_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-optimizely-x_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-optimizely-x_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-optimizely-x_v4.8.2", diff --git a/plugins/browser-plugin-optimizely-x/CHANGELOG.md b/plugins/browser-plugin-optimizely-x/CHANGELOG.md index 9b224771d..8c06b772e 100644 --- a/plugins/browser-plugin-optimizely-x/CHANGELOG.md +++ b/plugins/browser-plugin-optimizely-x/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-optimizely-x -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-optimizely-x/package.json b/plugins/browser-plugin-optimizely-x/package.json index 1400fac57..8671e087b 100644 --- a/plugins/browser-plugin-optimizely-x/package.json +++ b/plugins/browser-plugin-optimizely-x/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-optimizely-x", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches OptimizelyX data to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-optimizely-x/rollup.config.js b/plugins/browser-plugin-optimizely-x/rollup.config.js index f2f698d48..5fc40253c 100644 --- a/plugins/browser-plugin-optimizely-x/rollup.config.js +++ b/plugins/browser-plugin-optimizely-x/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json index 572141386..55e97b9f3 100644 --- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json +++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-performance-navigation-timing", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-performance-navigation-timing_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-performance-navigation-timing_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-performance-navigation-timing_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-performance-navigation-timing_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-performance-navigation-timing_v4.8.2", diff --git a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md index 3a907571e..30f497dff 100644 --- a/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md +++ b/plugins/browser-plugin-performance-navigation-timing/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-performance-navigation-timing -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-performance-navigation-timing/package.json b/plugins/browser-plugin-performance-navigation-timing/package.json index c8a1e6aa6..0477cf797 100644 --- a/plugins/browser-plugin-performance-navigation-timing/package.json +++ b/plugins/browser-plugin-performance-navigation-timing/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-performance-navigation-timing", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches Performance Navigation Timing data to Snowplow events", "homepage": "https://docs.snowplow.io/", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-performance-navigation-timing/rollup.config.js b/plugins/browser-plugin-performance-navigation-timing/rollup.config.js index b20e36f3b..661f032a4 100644 --- a/plugins/browser-plugin-performance-navigation-timing/rollup.config.js +++ b/plugins/browser-plugin-performance-navigation-timing/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.json b/plugins/browser-plugin-performance-timing/CHANGELOG.json index 4d22e2f71..3514d9023 100644 --- a/plugins/browser-plugin-performance-timing/CHANGELOG.json +++ b/plugins/browser-plugin-performance-timing/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-performance-timing", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-performance-timing_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-performance-timing_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-performance-timing_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-performance-timing_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-performance-timing_v4.8.2", diff --git a/plugins/browser-plugin-performance-timing/CHANGELOG.md b/plugins/browser-plugin-performance-timing/CHANGELOG.md index 3c8404df8..cbdab8a5a 100644 --- a/plugins/browser-plugin-performance-timing/CHANGELOG.md +++ b/plugins/browser-plugin-performance-timing/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-performance-timing -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-performance-timing/package.json b/plugins/browser-plugin-performance-timing/package.json index 7c56845ad..a68192bd0 100644 --- a/plugins/browser-plugin-performance-timing/package.json +++ b/plugins/browser-plugin-performance-timing/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-performance-timing", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches Performance Timing data to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-performance-timing/rollup.config.js b/plugins/browser-plugin-performance-timing/rollup.config.js index d521628e7..a4f9a4981 100644 --- a/plugins/browser-plugin-performance-timing/rollup.config.js +++ b/plugins/browser-plugin-performance-timing/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json index 030cb463a..cab4ee625 100644 --- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json +++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-privacy-sandbox", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-privacy-sandbox_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-privacy-sandbox_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-privacy-sandbox_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-privacy-sandbox_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-privacy-sandbox_v4.8.2", diff --git a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md index 4b98e2eb7..37f7aa1bc 100644 --- a/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md +++ b/plugins/browser-plugin-privacy-sandbox/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-privacy-sandbox -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-privacy-sandbox/package.json b/plugins/browser-plugin-privacy-sandbox/package.json index e655e4693..21d0984a5 100644 --- a/plugins/browser-plugin-privacy-sandbox/package.json +++ b/plugins/browser-plugin-privacy-sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-privacy-sandbox", - "version": "4.8.2", + "version": "4.10.0", "description": "Allows for the collection of Privacy Sandbox specific data.", "homepage": "https://docs.snowplow.io/", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -48,6 +47,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-privacy-sandbox/rollup.config.js b/plugins/browser-plugin-privacy-sandbox/rollup.config.js index 6c968d34c..a6bb93344 100644 --- a/plugins/browser-plugin-privacy-sandbox/rollup.config.js +++ b/plugins/browser-plugin-privacy-sandbox/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-screen-tracking/CHANGELOG.json b/plugins/browser-plugin-screen-tracking/CHANGELOG.json index 6eea794e4..3b71081d9 100644 --- a/plugins/browser-plugin-screen-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-screen-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-screen-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-screen-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-screen-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-screen-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-screen-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-screen-tracking_v4.8.2", diff --git a/plugins/browser-plugin-screen-tracking/CHANGELOG.md b/plugins/browser-plugin-screen-tracking/CHANGELOG.md index bd106828d..362c77d45 100644 --- a/plugins/browser-plugin-screen-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-screen-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-screen-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-screen-tracking/package.json b/plugins/browser-plugin-screen-tracking/package.json index 92c05fd99..f4df9c91d 100644 --- a/plugins/browser-plugin-screen-tracking/package.json +++ b/plugins/browser-plugin-screen-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-screen-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Snowplow screen tracking", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -25,16 +25,14 @@ "@snowplow/browser-tracker-core": "workspace:*", "@snowplow/tracker-core": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", "@types/jsdom": "~16.2.14", "@types/lodash": "~4.14.180", - "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", "eslint": "~8.11.0", @@ -52,6 +50,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-screen-tracking/rollup.config.js b/plugins/browser-plugin-screen-tracking/rollup.config.js index 817d14255..078114499 100644 --- a/plugins/browser-plugin-screen-tracking/rollup.config.js +++ b/plugins/browser-plugin-screen-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.json b/plugins/browser-plugin-site-tracking/CHANGELOG.json index 2060ebbca..4bf371e17 100644 --- a/plugins/browser-plugin-site-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-site-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-site-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-site-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-site-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-site-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-site-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-site-tracking_v4.8.2", diff --git a/plugins/browser-plugin-site-tracking/CHANGELOG.md b/plugins/browser-plugin-site-tracking/CHANGELOG.md index 5d0a8fade..f043bfe17 100644 --- a/plugins/browser-plugin-site-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-site-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-site-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-site-tracking/package.json b/plugins/browser-plugin-site-tracking/package.json index bb5b79359..d3e29fdfd 100644 --- a/plugins/browser-plugin-site-tracking/package.json +++ b/plugins/browser-plugin-site-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-site-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Site tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-site-tracking/rollup.config.js b/plugins/browser-plugin-site-tracking/rollup.config.js index ed8d2fa44..71cebc6a2 100644 --- a/plugins/browser-plugin-site-tracking/rollup.config.js +++ b/plugins/browser-plugin-site-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json index fceac41d4..0f189a91d 100644 --- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json +++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-snowplow-ecommerce", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-snowplow-ecommerce_v4.8.2", diff --git a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md index 235d66480..b7558a9c0 100644 --- a/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md +++ b/plugins/browser-plugin-snowplow-ecommerce/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-snowplow-ecommerce -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-snowplow-ecommerce/package.json b/plugins/browser-plugin-snowplow-ecommerce/package.json index 1f2ba1cd0..93a980687 100644 --- a/plugins/browser-plugin-snowplow-ecommerce/package.json +++ b/plugins/browser-plugin-snowplow-ecommerce/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-snowplow-ecommerce", - "version": "4.8.2", + "version": "4.10.0", "description": "Snowplow ecommerce tracking", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -27,7 +27,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-snowplow-ecommerce/rollup.config.js b/plugins/browser-plugin-snowplow-ecommerce/rollup.config.js index 7184f0fa3..e2fef0d06 100644 --- a/plugins/browser-plugin-snowplow-ecommerce/rollup.config.js +++ b/plugins/browser-plugin-snowplow-ecommerce/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-timezone/CHANGELOG.json b/plugins/browser-plugin-timezone/CHANGELOG.json index 0fe7c6eeb..64dc8e9d8 100644 --- a/plugins/browser-plugin-timezone/CHANGELOG.json +++ b/plugins/browser-plugin-timezone/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-timezone", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-timezone_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-timezone_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-timezone_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-timezone_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-timezone_v4.8.2", diff --git a/plugins/browser-plugin-timezone/CHANGELOG.md b/plugins/browser-plugin-timezone/CHANGELOG.md index db315c300..f0ccfc585 100644 --- a/plugins/browser-plugin-timezone/CHANGELOG.md +++ b/plugins/browser-plugin-timezone/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-timezone -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-timezone/package.json b/plugins/browser-plugin-timezone/package.json index 4d271e460..64a190911 100644 --- a/plugins/browser-plugin-timezone/package.json +++ b/plugins/browser-plugin-timezone/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-timezone", - "version": "4.8.2", + "version": "4.10.0", "description": "Attaches timezone to Snowplow events", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -51,6 +50,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-timezone/rollup.config.js b/plugins/browser-plugin-timezone/rollup.config.js index bc665d362..6a08dff32 100644 --- a/plugins/browser-plugin-timezone/rollup.config.js +++ b/plugins/browser-plugin-timezone/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json index 5bdb4f63a..657eedfa8 100644 --- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-vimeo-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-vimeo-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-vimeo-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-vimeo-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-vimeo-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-vimeo-tracking_v4.8.2", diff --git a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md index d71bd389c..101e8d814 100644 --- a/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-vimeo-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-vimeo-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-vimeo-tracking/package.json b/plugins/browser-plugin-vimeo-tracking/package.json index ae262c904..895da65d2 100644 --- a/plugins/browser-plugin-vimeo-tracking/package.json +++ b/plugins/browser-plugin-vimeo-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-vimeo-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "Vimeo tracking for Snowplow", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "@vimeo/player": "2.16.4" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -50,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-vimeo-tracking/rollup.config.js b/plugins/browser-plugin-vimeo-tracking/rollup.config.js index 474f254a8..ed22079ee 100644 --- a/plugins/browser-plugin-vimeo-tracking/rollup.config.js +++ b/plugins/browser-plugin-vimeo-tracking/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.json b/plugins/browser-plugin-web-vitals/CHANGELOG.json index 2a7b8397d..a09262dbb 100644 --- a/plugins/browser-plugin-web-vitals/CHANGELOG.json +++ b/plugins/browser-plugin-web-vitals/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-web-vitals", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-web-vitals_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-web-vitals_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-web-vitals_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-web-vitals_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-web-vitals_v4.8.2", diff --git a/plugins/browser-plugin-web-vitals/CHANGELOG.md b/plugins/browser-plugin-web-vitals/CHANGELOG.md index 2493581c1..b7f296cbe 100644 --- a/plugins/browser-plugin-web-vitals/CHANGELOG.md +++ b/plugins/browser-plugin-web-vitals/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-web-vitals -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-web-vitals/package.json b/plugins/browser-plugin-web-vitals/package.json index 104a9a103..15ce1f000 100644 --- a/plugins/browser-plugin-web-vitals/package.json +++ b/plugins/browser-plugin-web-vitals/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-web-vitals", - "version": "4.8.2", + "version": "4.10.0", "description": "Adds the capability to track web performance metrics categorized as Web Vitals.", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "web-vitals": "~4.2.4" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -49,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-web-vitals/rollup.config.js b/plugins/browser-plugin-web-vitals/rollup.config.js index 48d2287f5..16fe5d140 100644 --- a/plugins/browser-plugin-web-vitals/rollup.config.js +++ b/plugins/browser-plugin-web-vitals/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-webview/CHANGELOG.json b/plugins/browser-plugin-webview/CHANGELOG.json index d47f7a3e5..d77af85c6 100644 --- a/plugins/browser-plugin-webview/CHANGELOG.json +++ b/plugins/browser-plugin-webview/CHANGELOG.json @@ -1,6 +1,42 @@ { "name": "@snowplow/browser-plugin-webview", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-webview_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": { + "none": [ + { + "comment": "Add test coverage for disableSessionContextWithinWebView option suppressing client_session entity in hybrid native+WebView deployments" + } + ] + } + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-webview_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-webview_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-webview_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-webview_v4.8.2", diff --git a/plugins/browser-plugin-webview/CHANGELOG.md b/plugins/browser-plugin-webview/CHANGELOG.md index 0a49d4570..12343cc28 100644 --- a/plugins/browser-plugin-webview/CHANGELOG.md +++ b/plugins/browser-plugin-webview/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log - @snowplow/browser-plugin-webview -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +### Updates + +- Add test coverage for disableSessionContextWithinWebView option suppressing client_session entity in hybrid native+WebView deployments + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-webview/package.json b/plugins/browser-plugin-webview/package.json index 66ea82015..144399f90 100644 --- a/plugins/browser-plugin-webview/package.json +++ b/plugins/browser-plugin-webview/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-webview", - "version": "4.8.2", + "version": "4.10.0", "description": "Automatically forwards events to Snowplow mobile trackers running in a WebView.", "homepage": "https://github.com/snowplow/snowplow-javascript-tracker", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -28,7 +28,6 @@ "@snowplow/webview-tracker": "^0.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", @@ -49,6 +48,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-webview/rollup.config.js b/plugins/browser-plugin-webview/rollup.config.js index 1787590e2..7bf700326 100644 --- a/plugins/browser-plugin-webview/rollup.config.js +++ b/plugins/browser-plugin-webview/rollup.config.js @@ -2,7 +2,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; // Preferred over @rollup/plugin-typescript as it bundles .d.ts files import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -21,7 +20,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/plugins/browser-plugin-webview/test/webview.test.ts b/plugins/browser-plugin-webview/test/webview.test.ts index 21ec35114..9b33e93f8 100644 --- a/plugins/browser-plugin-webview/test/webview.test.ts +++ b/plugins/browser-plugin-webview/test/webview.test.ts @@ -181,6 +181,33 @@ describe('WebView plugin', () => { }); }); + it('Does not forward client_session entity when disableSessionContextWithinWebView is true', async () => { + mockHasMobileInterface.mockImplementation(() => true); + (window as any).ReactNativeWebView = { postMessage: () => {} }; + + eventStore = newInMemoryEventStore({}); + const customFetch = async () => new Response(null, { status: 500 }); + tracker = addTracker(`sp${idx++}`, `sp${idx++}`, 'js-4.0.0', '', new SharedState(), { + plugins: [WebViewPlugin()], + eventStore, + customFetch, + contexts: { session: true }, + stateStorageStrategy: 'cookieAndLocalStorage', + encodeBase64: false, + disableSessionContextWithinWebView: true, + }); + + tracker?.trackPageView(); + + let calls = mockTrackWebViewEvent.mock.calls; + expect(calls).toHaveLength(1); + const forwardedContext: Array<{ schema: string }> = calls[0][0].context; + const hasClientSession = forwardedContext.some((entity) => entity.schema.includes('client_session')); + expect(hasClientSession).toBe(false); + + delete (window as any).ReactNativeWebView; + }); + it('Passes a configured list of tracker namespaces', async () => { mockHasMobileInterface.mockImplementation(() => { return true; diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json index d909cff04..b83582d6d 100644 --- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.json +++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.json @@ -1,6 +1,36 @@ { "name": "@snowplow/browser-plugin-youtube-tracking", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-plugin-youtube-tracking_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-plugin-youtube-tracking_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-plugin-youtube-tracking_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-plugin-youtube-tracking_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-plugin-youtube-tracking_v4.8.2", diff --git a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md index 8cce3bcc2..d0c70dd43 100644 --- a/plugins/browser-plugin-youtube-tracking/CHANGELOG.md +++ b/plugins/browser-plugin-youtube-tracking/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @snowplow/browser-plugin-youtube-tracking -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/plugins/browser-plugin-youtube-tracking/package.json b/plugins/browser-plugin-youtube-tracking/package.json index ad58b9076..0a8cafb27 100644 --- a/plugins/browser-plugin-youtube-tracking/package.json +++ b/plugins/browser-plugin-youtube-tracking/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-plugin-youtube-tracking", - "version": "4.8.2", + "version": "4.10.0", "description": "YouTube tracking for Snowplow", "homepage": "http://bit.ly/sp-js", "bugs": "https://github.com/snowplow/snowplow-javascript-tracker/issues", @@ -25,15 +25,13 @@ "@snowplow/tracker-core": "workspace:*", "@snowplow/browser-plugin-media": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", "@types/jsdom": "~16.2.14", - "@types/uuid": "^10.0.0", "@types/youtube": "~0.0.46", "@typescript-eslint/eslint-plugin": "~5.15.0", "@typescript-eslint/parser": "~5.15.0", @@ -51,6 +49,6 @@ "typescript": "~4.6.2" }, "peerDependencies": { - "@snowplow/browser-tracker": "~4.8.2" + "@snowplow/browser-tracker": "~4.10.0" } } diff --git a/plugins/browser-plugin-youtube-tracking/rollup.config.js b/plugins/browser-plugin-youtube-tracking/rollup.config.js index e75485d15..bf6095639 100644 --- a/plugins/browser-plugin-youtube-tracking/rollup.config.js +++ b/plugins/browser-plugin-youtube-tracking/rollup.config.js @@ -32,7 +32,6 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; import ts from 'rollup-plugin-ts'; import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -51,7 +50,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), terser(), cleanup({ comments: 'none' }), banner(true)], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner(true)], treeshake: { moduleSideEffects: ['sha1'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', sourcemap: true, name: umdName }], }, diff --git a/trackers/browser-tracker/CHANGELOG.json b/trackers/browser-tracker/CHANGELOG.json index cdd899217..c9ce591d3 100644 --- a/trackers/browser-tracker/CHANGELOG.json +++ b/trackers/browser-tracker/CHANGELOG.json @@ -1,6 +1,42 @@ { "name": "@snowplow/browser-tracker", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/browser-tracker_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/browser-tracker_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": { + "none": [ + { + "comment": "Add getDomainSessionId method" + } + ] + } + }, + { + "version": "4.8.4", + "tag": "@snowplow/browser-tracker_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/browser-tracker_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/browser-tracker_v4.8.2", diff --git a/trackers/browser-tracker/CHANGELOG.md b/trackers/browser-tracker/CHANGELOG.md index 0a1cfe79b..56b6ecd60 100644 --- a/trackers/browser-tracker/CHANGELOG.md +++ b/trackers/browser-tracker/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log - @snowplow/browser-tracker -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +### Updates + +- Add getDomainSessionId method + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/trackers/browser-tracker/package.json b/trackers/browser-tracker/package.json index f6ece8f6d..64f08ce15 100644 --- a/trackers/browser-tracker/package.json +++ b/trackers/browser-tracker/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/browser-tracker", - "version": "4.8.2", + "version": "4.10.0", "description": "Browser tracker for Snowplow", "keywords": [ "tracking", @@ -41,7 +41,6 @@ "tslib": "^2.3.1" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-node-resolve": "~13.1.3", "@types/jest": "~28.1.1", diff --git a/trackers/browser-tracker/rollup.config.js b/trackers/browser-tracker/rollup.config.js index 1825f4fe5..316285a1c 100644 --- a/trackers/browser-tracker/rollup.config.js +++ b/trackers/browser-tracker/rollup.config.js @@ -32,7 +32,7 @@ import { nodeResolve } from '@rollup/plugin-node-resolve'; import ts from 'rollup-plugin-ts'; // Prefered over @rollup/plugin-typescript as it bundles .d.ts files import commonjs from '@rollup/plugin-commonjs'; import { banner } from '../../banner'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; +import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import pkg from './package.json'; @@ -56,7 +56,7 @@ export default [ }, { input: './src/index.ts', - plugins: [...umdPlugins, compiler(), cleanup({ comments: 'none' }), banner()], + plugins: [...umdPlugins, terser(), cleanup({ comments: 'none' }), banner()], treeshake: { moduleSideEffects: ['jstimezonedetect'] }, output: [{ file: pkg.main.replace('.js', '.min.js'), format: 'umd', name: umdName, sourcemap: true }], }, diff --git a/trackers/browser-tracker/src/api.ts b/trackers/browser-tracker/src/api.ts index 503a24d90..1916e48b9 100644 --- a/trackers/browser-tracker/src/api.ts +++ b/trackers/browser-tracker/src/api.ts @@ -30,6 +30,8 @@ import { dispatchToTrackers, + getTracker, + allTrackerNames, ActivityTrackingConfiguration, ActivityTrackingConfigurationCallback, ActivityCallback, @@ -108,6 +110,20 @@ export function newSession(trackers?: Array) { }); } +/** + * Get the domain session ID (from the first-party cookie) for a tracker. + * + * @param trackerId - The tracker identifier which the domain session ID will be retrieved from. + * Defaults to the first initialised tracker. + * @returns The domain session ID, or undefined if no matching tracker is found + */ +export function getDomainSessionId(trackerId?: string): string | undefined { + const resolvedTrackerId = trackerId ?? allTrackerNames()[0]; + if (!resolvedTrackerId) return undefined; + const tracker = getTracker(resolvedTrackerId); + return tracker ? tracker.getDomainSessionId() : undefined; +} + /** * Override referrer * diff --git a/trackers/browser-tracker/test/api.test.ts b/trackers/browser-tracker/test/api.test.ts new file mode 100644 index 000000000..06aa2f6de --- /dev/null +++ b/trackers/browser-tracker/test/api.test.ts @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +import { newTracker, getDomainSessionId } from '../src'; + +describe('Browser Tracker API: #getDomainSessionId', () => { + let cookieJar: string; + + beforeAll(() => { + cookieJar = ''; + jest.spyOn(document, 'cookie', 'set').mockImplementation((cookie) => { + cookieJar += cookie; + }); + jest.spyOn(document, 'cookie', 'get').mockImplementation(() => cookieJar); + }); + + afterEach(() => { + cookieJar = ''; + }); + + afterAll(() => { + jest.restoreAllMocks(); + }); + + it('exposes the domain session id of a named tracker', () => { + const tracker = newTracker('sp-api-1', '', { stateStorageStrategy: 'cookie' }); + const sessionId = tracker?.getDomainSessionId(); + + expect(sessionId).toMatch(/^[0-9a-f-]+$/); + expect(getDomainSessionId('sp-api-1')).toEqual(sessionId); + }); + + it('defaults to the first initialised tracker when no id is provided', () => { + // 'sp-api-1' is the only/first tracker registered in this module + expect(getDomainSessionId()).toEqual(getDomainSessionId('sp-api-1')); + }); + + it('returns undefined for an unknown tracker id', () => { + expect(getDomainSessionId('missing-tracker')).toBeUndefined(); + }); +}); diff --git a/trackers/javascript-tracker/CHANGELOG.json b/trackers/javascript-tracker/CHANGELOG.json index f7a1fb735..6db4313a9 100644 --- a/trackers/javascript-tracker/CHANGELOG.json +++ b/trackers/javascript-tracker/CHANGELOG.json @@ -1,6 +1,42 @@ { "name": "@snowplow/javascript-tracker", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/javascript-tracker_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": { + "minor": [ + { + "comment": "Add WebView plugin as opt-in build-time feature flag (webView, default false)" + } + ] + } + }, + { + "version": "4.9.0", + "tag": "@snowplow/javascript-tracker_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/javascript-tracker_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/javascript-tracker_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/javascript-tracker_v4.8.2", diff --git a/trackers/javascript-tracker/CHANGELOG.md b/trackers/javascript-tracker/CHANGELOG.md index 66ebf4694..b17f6e2d3 100644 --- a/trackers/javascript-tracker/CHANGELOG.md +++ b/trackers/javascript-tracker/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log - @snowplow/javascript-tracker -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +### Minor changes + +- Add WebView plugin as opt-in build-time feature flag (webView, default false) + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/trackers/javascript-tracker/package.json b/trackers/javascript-tracker/package.json index 6cb86ee44..6a7532599 100644 --- a/trackers/javascript-tracker/package.json +++ b/trackers/javascript-tracker/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/javascript-tracker", - "version": "4.8.2", + "version": "4.10.0", "description": "Web analytics for Snowplow", "keywords": [ "tracking", @@ -66,10 +66,10 @@ "@snowplow/browser-plugin-enhanced-consent": "workspace:*", "@snowplow/browser-plugin-privacy-sandbox": "workspace:*", "@snowplow/browser-plugin-button-click-tracking": "workspace:*", - "@snowplow/browser-plugin-event-specifications": "workspace:*" + "@snowplow/browser-plugin-event-specifications": "workspace:*", + "@snowplow/browser-plugin-webview": "workspace:*" }, "devDependencies": { - "@ampproject/rollup-plugin-closure-compiler": "~0.27.0", "@rollup/plugin-alias": "~3.1.9", "@rollup/plugin-commonjs": "~21.0.2", "@rollup/plugin-json": "~4.1.0", diff --git a/trackers/javascript-tracker/rollup.config.js b/trackers/javascript-tracker/rollup.config.js index 6b7c7ddf2..65ee9df18 100644 --- a/trackers/javascript-tracker/rollup.config.js +++ b/trackers/javascript-tracker/rollup.config.js @@ -34,7 +34,6 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import { banner } from '../../banner'; import { whitelabelBuild } from './build-config/index'; -import compiler from '@ampproject/rollup-plugin-closure-compiler'; import { terser } from 'rollup-plugin-terser'; import cleanup from 'rollup-plugin-cleanup'; import sizes from 'rollup-plugin-sizes'; @@ -48,7 +47,6 @@ export default (cmdlineArgs) => { nodeResolve({ browser: true }), commonjs(), ts(), - compiler(), terser(), cleanup({ comments: 'none' }), banner(), diff --git a/trackers/javascript-tracker/src/features.ts b/trackers/javascript-tracker/src/features.ts index 940a416a4..182b7ad74 100644 --- a/trackers/javascript-tracker/src/features.ts +++ b/trackers/javascript-tracker/src/features.ts @@ -25,6 +25,7 @@ import * as EventSpecifications from '@snowplow/browser-plugin-event-specificati import * as PerformanceNavigationTiming from '@snowplow/browser-plugin-performance-navigation-timing'; import * as WebVitals from '@snowplow/browser-plugin-web-vitals'; import * as ElementTracking from '@snowplow/browser-plugin-element-tracking'; +import * as WebViewTracking from '@snowplow/browser-plugin-webview'; /** * Calculates the required plugins to intialise per tracker @@ -159,5 +160,10 @@ export function Plugins(configuration: JavaScriptTrackerConfiguration) { activatedPlugins.push([SnowplowElementTrackingPlugin(), apiMethods]); } + if (plugins.webView) { + const { WebViewPlugin, ...apiMethods } = WebViewTracking; + activatedPlugins.push([WebViewPlugin(), apiMethods]); + } + return activatedPlugins; } diff --git a/trackers/javascript-tracker/test/unit/plugin_features.test.ts b/trackers/javascript-tracker/test/unit/plugin_features.test.ts index ce75881b9..7db97287f 100644 --- a/trackers/javascript-tracker/test/unit/plugin_features.test.ts +++ b/trackers/javascript-tracker/test/unit/plugin_features.test.ts @@ -59,3 +59,39 @@ describe('Performance Navigation Timing', () => { expect(hasPerformanceNavigationTimingContext(plugins)).toBe(false); }); }); + +describe('WebView plugin', () => { + it('WebViewPlugin is not activated when webView flag is false', () => { + jest.isolateModules(() => { + const mockWebViewPlugin = jest.fn(() => ({})); + jest.mock('@snowplow/browser-plugin-webview', () => ({ + WebViewPlugin: mockWebViewPlugin, + })); + jest.mock('../../tracker.config', () => ({ webView: false })); + // Vimeo player crashes on fresh module load in jsdom; mock it to prevent that + jest.mock('@snowplow/browser-plugin-vimeo-tracking', () => ({ + VimeoTrackingPlugin: jest.fn(() => ({})), + })); + const { Plugins: PluginsFresh } = require('../../src/features'); + PluginsFresh({}); + expect(mockWebViewPlugin).not.toHaveBeenCalled(); + }); + }); + + it('WebViewPlugin is activated when webView flag is true', () => { + jest.isolateModules(() => { + const mockWebViewPlugin = jest.fn(() => ({})); + jest.mock('@snowplow/browser-plugin-webview', () => ({ + WebViewPlugin: mockWebViewPlugin, + })); + jest.mock('../../tracker.config', () => ({ webView: true })); + // Vimeo player crashes on fresh module load in jsdom; mock it to prevent that + jest.mock('@snowplow/browser-plugin-vimeo-tracking', () => ({ + VimeoTrackingPlugin: jest.fn(() => ({})), + })); + const { Plugins: PluginsFresh } = require('../../src/features'); + PluginsFresh({}); + expect(mockWebViewPlugin).toHaveBeenCalled(); + }); + }); +}); diff --git a/trackers/javascript-tracker/tracker.config.ts b/trackers/javascript-tracker/tracker.config.ts index 144bf7ecf..7d73397df 100644 --- a/trackers/javascript-tracker/tracker.config.ts +++ b/trackers/javascript-tracker/tracker.config.ts @@ -23,6 +23,7 @@ export const eventSpecifications = false; export const geolocation = false; export const timezone = false; export const elementTracking = false; +export const webView = false; /* Deprecated */ export const enhancedEcommerce = false; diff --git a/trackers/javascript-tracker/tracker.lite.config.ts b/trackers/javascript-tracker/tracker.lite.config.ts index 4bc2a4227..5e212e838 100644 --- a/trackers/javascript-tracker/tracker.lite.config.ts +++ b/trackers/javascript-tracker/tracker.lite.config.ts @@ -22,3 +22,4 @@ export const buttonClickTracking = false; export const eventSpecifications = false; export const webVitals = false; export const elementTracking = false; +export const webView = false; diff --git a/trackers/javascript-tracker/tracker.test.config.ts b/trackers/javascript-tracker/tracker.test.config.ts index f587a8fe6..a6c3d24d3 100644 --- a/trackers/javascript-tracker/tracker.test.config.ts +++ b/trackers/javascript-tracker/tracker.test.config.ts @@ -22,3 +22,4 @@ export const buttonClickTracking = true; export const eventSpecifications = false; export const webVitals = false; export const elementTracking = true; +export const webView = true; diff --git a/trackers/node-tracker/CHANGELOG.json b/trackers/node-tracker/CHANGELOG.json index 338ecf44c..86065eca3 100644 --- a/trackers/node-tracker/CHANGELOG.json +++ b/trackers/node-tracker/CHANGELOG.json @@ -1,6 +1,30 @@ { "name": "@snowplow/node-tracker", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/node-tracker_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/node-tracker_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/node-tracker_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": {} + }, + { + "version": "4.8.3", + "tag": "@snowplow/node-tracker_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": {} + }, { "version": "4.8.2", "tag": "@snowplow/node-tracker_v4.8.2", diff --git a/trackers/node-tracker/CHANGELOG.md b/trackers/node-tracker/CHANGELOG.md index 7454762ed..c80b6ecaf 100644 --- a/trackers/node-tracker/CHANGELOG.md +++ b/trackers/node-tracker/CHANGELOG.md @@ -1,6 +1,26 @@ # Change Log - @snowplow/node-tracker -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +_Version update only_ + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +_Version update only_ ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/trackers/node-tracker/package.json b/trackers/node-tracker/package.json index c7b34591c..cca2125d7 100644 --- a/trackers/node-tracker/package.json +++ b/trackers/node-tracker/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/node-tracker", - "version": "4.8.2", + "version": "4.10.0", "description": "Node tracker for Snowplow", "keywords": [ "snowplow", diff --git a/trackers/react-native-tracker/CHANGELOG.json b/trackers/react-native-tracker/CHANGELOG.json index 9cc0ab2d3..f6d789b94 100644 --- a/trackers/react-native-tracker/CHANGELOG.json +++ b/trackers/react-native-tracker/CHANGELOG.json @@ -1,6 +1,42 @@ { "name": "@snowplow/react-native-tracker", "entries": [ + { + "version": "4.10.0", + "tag": "@snowplow/react-native-tracker_v4.10.0", + "date": "Mon, 27 Jul 2026 13:52:14 GMT", + "comments": {} + }, + { + "version": "4.9.0", + "tag": "@snowplow/react-native-tracker_v4.9.0", + "date": "Tue, 21 Jul 2026 14:53:08 GMT", + "comments": {} + }, + { + "version": "4.8.4", + "tag": "@snowplow/react-native-tracker_v4.8.4", + "date": "Thu, 02 Jul 2026 10:07:52 GMT", + "comments": { + "none": [ + { + "comment": "Widen react-native-get-random-values peer dependency range to allow v2.0.0 for React Native 0.81+ compatibility" + } + ] + } + }, + { + "version": "4.8.3", + "tag": "@snowplow/react-native-tracker_v4.8.3", + "date": "Tue, 30 Jun 2026 14:22:03 GMT", + "comments": { + "none": [ + { + "comment": "Update uuid to v11 and remove closure-compiler from the build pipeline" + } + ] + } + }, { "version": "4.8.2", "tag": "@snowplow/react-native-tracker_v4.8.2", diff --git a/trackers/react-native-tracker/CHANGELOG.md b/trackers/react-native-tracker/CHANGELOG.md index 8521f906d..10c3805b5 100644 --- a/trackers/react-native-tracker/CHANGELOG.md +++ b/trackers/react-native-tracker/CHANGELOG.md @@ -1,6 +1,30 @@ # Change Log - @snowplow/react-native-tracker -This log was last generated on Wed, 17 Jun 2026 12:30:12 GMT and should not be manually modified. +This log was last generated on Mon, 27 Jul 2026 13:52:14 GMT and should not be manually modified. + +## 4.10.0 +Mon, 27 Jul 2026 13:52:14 GMT + +_Version update only_ + +## 4.9.0 +Tue, 21 Jul 2026 14:53:08 GMT + +_Version update only_ + +## 4.8.4 +Thu, 02 Jul 2026 10:07:52 GMT + +### Updates + +- Widen react-native-get-random-values peer dependency range to allow v2.0.0 for React Native 0.81+ compatibility + +## 4.8.3 +Tue, 30 Jun 2026 14:22:03 GMT + +### Updates + +- Update uuid to v11 and remove closure-compiler from the build pipeline ## 4.8.2 Wed, 17 Jun 2026 12:30:12 GMT diff --git a/trackers/react-native-tracker/package.json b/trackers/react-native-tracker/package.json index 9c6677a82..659506092 100644 --- a/trackers/react-native-tracker/package.json +++ b/trackers/react-native-tracker/package.json @@ -1,6 +1,6 @@ { "name": "@snowplow/react-native-tracker", - "version": "4.8.2", + "version": "4.10.0", "description": "React Native tracker for Snowplow", "keywords": [ "snowplow", @@ -47,14 +47,14 @@ "@react-native-async-storage/async-storage": "^2.0.0", "react": "*", "react-native": "*", - "react-native-get-random-values": "^1.11.0" + "react-native-get-random-values": "^1.11.0 || ^2.0.0" }, "dependencies": { "@snowplow/tracker-core": "workspace:*", "@snowplow/browser-tracker-core": "workspace:*", "@snowplow/browser-plugin-screen-tracking": "workspace:*", "tslib": "^2.3.1", - "uuid": "^10.0.0" + "uuid": "^11.1.1" }, "devDependencies": { "@react-native-async-storage/async-storage": "^2.0.0", @@ -65,7 +65,6 @@ "typescript": "~4.6.2", "@types/jest": "~28.1.1", "@types/node": "~14.6.0", - "@types/uuid": "^10.0.0", "jest": "~28.1.3", "react": "18.2.0", "ts-jest": "~28.0.8", @@ -73,7 +72,7 @@ "react-native": "0.74.5", "node-fetch": "~3.3.2", "react-native-builder-bob": "^0.42.1", - "react-native-get-random-values": "^1.11.0" + "react-native-get-random-values": "^1.11.0 || ^2.0.0" }, "resolutions": { "@types/react": "^18.2.44" diff --git a/trackers/react-native-tracker/src/plugins.ts b/trackers/react-native-tracker/src/plugins.ts index 607ec3171..05741e32f 100644 --- a/trackers/react-native-tracker/src/plugins.ts +++ b/trackers/react-native-tracker/src/plugins.ts @@ -26,6 +26,7 @@ function toBrowserTracker(namespace: string, core: TrackerCore): BrowserTracker getUserId: () => undefined, getDomainUserId: () => '', getDomainUserInfo: (): ParsedIdCookie => ['', '', 0, 0, 0, undefined, '', '', '', undefined, 0], + getDomainSessionId: () => '', setReferrerUrl: () => notImplemented, setCustomUrl: () => notImplemented, setDocumentTitle: () => notImplemented,