Skip to content
Merged

V11 #34

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
17f48a3
V10 b
adriaandotcom Nov 22, 2022
5c7b2e5
Fix comment
adriaandotcom Nov 22, 2022
c44c5ea
Set version to 11
adriaandotcom Nov 22, 2022
37c855c
Merge branch 'main' into v11
adriaandotcom Nov 22, 2022
424c253
Run npm run build
adriaandotcom Nov 22, 2022
69e892b
Check if browser is DuckDuckGo on desktop
adriaandotcom Nov 22, 2022
c9a756c
Use addEventListener for mailto links
adriaandotcom May 1, 2023
95d25d1
Use actions/checkout@v3
adriaandotcom May 1, 2023
ce8e899
Check if random is overwritten
adriaandotcom May 1, 2023
e10d407
Add set-safe-directory /github/workspace
adriaandotcom May 1, 2023
adcb822
Upgrade to creyD/prettier_action@4.3
adriaandotcom May 1, 2023
58eb0cc
Upgrade to creyD/prettier_action@v4.3
adriaandotcom May 1, 2023
b00522e
Remove branch from creyD/prettier_action options
adriaandotcom May 1, 2023
1fe79df
Fix collecting email clicks in Safari
adriaandotcom May 1, 2023
30ec648
Add referrer and query params to events
adriaandotcom May 1, 2023
a8cac4e
Run npm run build
adriaandotcom May 1, 2023
07573d1
Set consoleLogs to verbose in Browserstack
adriaandotcom May 2, 2023
ab7af1d
Add id to events and tests
adriaandotcom May 2, 2023
d0a161f
Add test for referrer when using push state
adriaandotcom May 2, 2023
cdb8610
Run npm run build
adriaandotcom May 2, 2023
c9de28c
Forward os and browser in params to next page
adriaandotcom May 2, 2023
b6bccbf
Quit browserstack driver directly after fail and report status of tes…
adriaandotcom May 2, 2023
d33a284
Set Selenium version to 4.0.0-alpha-2 because 4.8.0 failed
adriaandotcom May 3, 2023
6dae4d3
Do not error when driver.quit() fails
adriaandotcom May 3, 2023
7a5a75d
Run npm run build
adriaandotcom May 3, 2023
5c66391
Rewrite comment
adriaandotcom May 3, 2023
b47a82f
Move driver.executeScript to try as well
adriaandotcom May 3, 2023
697099d
Do not quit driver
adriaandotcom May 3, 2023
f6f636e
Merge branch 'main' into v11
adriaandotcom May 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 6 additions & 15 deletions .github/workflows/browserstack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
push:
branches:
- master
- main

jobs:
build:
Expand All @@ -29,26 +30,16 @@ jobs:
local-logging-level: "all-logs"
local-identifier: "random"

- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
ref: ${{ github.head_ref }}
set-safe-directory: "/github/workspace"

- name: Prettier Action on PR
if: github.event_name == 'pull_request'
uses: creyD/prettier_action@v1.0
uses: creyD/prettier_action@v4.3
with:
prettier_options: "--write {**/*,*}.{js,hbs,html,json,md,yml,css,scss} !.github/workflows/**/* !dist/**/*"
commit_message: "Run prettier via GitHub Action"
branch: ${{ github.head_ref }}
file_pattern: "."
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Prettier Action on master
if: github.ref == 'refs/heads/master'
uses: creyD/prettier_action@v1.0
with:
prettier_options: "--write {**/*,*}.{js,html,json,md,yml,css,scss} !.github/workflows/**/* !dist/**/*"
commit_message: "Run prettier via GitHub Action"
branch: master
file_pattern: "."
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
21 changes: 17 additions & 4 deletions compile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const GREEN = "\x1b[32m%s\x1b[0m";
const YELLOW = "\x1b[33m%s\x1b[0m";
const RED = "\x1b[31m%s\x1b[0m";

const VERSION = 10;
const VERSION = 11;

Handlebars.registerHelper("or", function (param1, param2) {
return param1 || param2;
Expand Down Expand Up @@ -77,6 +77,7 @@ const DEFAULTS = {
nonuniquehostnames: true,
ignoremetrics: true,
dev: false,
skipnonwindow: false,
};

const LIGHT = {
Expand Down Expand Up @@ -161,15 +162,27 @@ const templates = [
output: `cloudflare.js`,
variables: {
...DEFAULTS,
skipnonwindow: true,
minify: false,
version: VERSION,
scriptName: `cloudflare_${VERSION}`,
sri: false,
baseUrl: "{{cloudFlareCustomDomain}}",
overwriteOptions: {
saGlobal: "INSTALL_OPTIONS.sa_global",
mode: "INSTALL_OPTIONS.hash_mode ? 'hash' : null",
collectDnt: "INSTALL_OPTIONS.collect_dnt",
hostname: "INSTALL_OPTIONS.hostname",
collectDnt:
"typeof INSTALL_OPTIONS.collect_dnt === 'boolean' ? INSTALL_OPTIONS.collect_dnt : null",
mode: "INSTALL_OPTIONS.hash_mode ? 'hash' : 'normal'",
strictUtm:
"INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.strict_utm",
allowParams:
"INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.allow_url_parameters",
nonUniqueHostnames:
"INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.non_unique_hostnames",
ignorePages:
"INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.ignore_pages",
namespace:
"INSTALL_OPTIONS.overwrite_namespace && INSTALL_OPTIONS.namespace",
},
},
},
Expand Down
4 changes: 2 additions & 2 deletions dist/latest/auto-events.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/latest/auto-events.js.map

Large diffs are not rendered by default.

66 changes: 48 additions & 18 deletions dist/latest/cloudflare.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Simple Analytics - Privacy friendly analytics (docs.simpleanalytics.com/script; 2022-09-05; 9974; v10) */
/* Simple Analytics - Privacy friendly analytics (docs.simpleanalytics.com/script; 2023-05-03; 0dec; v11) */
/* eslint-env browser */

(function (
Expand Down Expand Up @@ -59,10 +59,14 @@
var platformText = "platform";
var platformVersionText = "platformVersion";
var docsUrl = "https://docs.simpleanalytics.com";
var pages = 0;
var isBotAgent =
/(bot|spider|crawl)/i.test(userAgent) && !/(cubot)/i.test(userAgent);
var screen = window.screen;

// Skip server side rendered pages on Cloudflare
if (typeof window == "" + undefinedVar) return;

// Find the script element where options can be set on
var scriptElement =
doc.currentScript || doc.querySelector('script[src*="' + baseUrl + '"]');
Expand All @@ -77,12 +81,11 @@
var args = [].slice.call(arguments);

// 2. Prepend log prefix
args.unshift("Simple Analytics: ");
args.unshift("Simple Analytics:");

// 3. Pass along arguments to console.warn
// Function.prototype.bind.call is needed for Internet Explorer
var log = Function.prototype.bind.call(con.warn, con);
log.apply(con, args);
// Function.prototype.apply.call is needed for Internet Explorer
return Function.prototype.apply.call(con.warn, con, args);
};

var warnInFunction = function (name, error) {
Expand Down Expand Up @@ -133,8 +136,13 @@
return to;
};

var settings = window.sa_settings;
var logSettings = settings || Object.keys(overwriteOptions).length;

// Merge overwriteOptions with sa_settings
overwriteOptions = assign(overwriteOptions, window.sa_settings);
overwriteOptions = assign(overwriteOptions, settings);

if (logSettings) warn("Settings", overwriteOptions);

// Customers can skip data points
var ignoreMetrics = convertCommaSeparatedToArray(
Expand Down Expand Up @@ -280,6 +288,7 @@
data = onlyThisData ? data : assign(payload, page, data);

if (nav.brave && !onlyThisData) data.brave = trueVar;
if (nav._duckduckgoloader_ && !onlyThisData) data.duck = trueVar;


var image = new Image();
Expand Down Expand Up @@ -432,7 +441,8 @@
window.phantom ||
window.__polypane ||
window._bot ||
isBotAgent;
isBotAgent ||
Math.random() == Math.random();

// t = timeonpage, scro = scrolled
var collectDataOnLeave =
Expand Down Expand Up @@ -501,12 +511,17 @@
var page = {};
var lastSendPath;

var getReferrer = function () {
return (
(doc.referrer || "")
.replace(locationHostname, definedHostname)
.replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4")
.replace(/^([^/]+)$/, "$1") || undefinedVar
);
};

// We don't want to end up with sensitive data so we clean the referrer URL
var referrer =
(doc.referrer || "")
.replace(locationHostname, definedHostname)
.replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4")
.replace(/^([^/]+)$/, "$1") || undefinedVar;
var referrer = getReferrer();

/////////////////////
// TIME ON PAGE AND SCROLLED LOGIC
Expand Down Expand Up @@ -629,6 +644,8 @@
return path;
};

var previousReferrer;

// Send page view and append data to it
var sendPageView = function (
isPushState,
Expand All @@ -650,9 +667,14 @@
metadata: stringify(metadata),
});

previousReferrer = referrer;
referrer = currentPage;

pages++;
};

var sameSite, userNavigated;

var pageview = function (isPushState, pathOverwrite, metadata) {
// Obfuscate personal data in URL by dropping the search and hash
var path = getPath(pathOverwrite);
Expand Down Expand Up @@ -698,7 +720,7 @@
warn(error);
}

var userNavigated = performaceEntryType
userNavigated = performaceEntryType
? ["reload", "back_forward"].indexOf(performaceEntryType) > -1
: // Check if back, forward or reload buttons are being use in older browsers
// 1: TYPE_RELOAD, 2: TYPE_BACK_FORWARD
Expand All @@ -707,8 +729,10 @@
[1, 2].indexOf(perf[navigationText].type) > -1;

// Check if referrer is the same as current real hostname (not the defined hostname!)
var currentReferrerHostname = doc.referrer.split(slash)[2];
var sameSite = referrer
var currentReferrerHostname = referrer
? referrer.split(slash)[0]
: undefinedVar;
sameSite = referrer
? nonUniqueHostnames.indexOf(currentReferrerHostname) > -1 ||
currentReferrerHostname == locationHostname
: falseVar;
Expand Down Expand Up @@ -861,13 +885,19 @@
event = ("" + event).replace(/[^a-z0-9]+/gi, "_").replace(/(^_|_$)/g, "");

var eventParams = { type: eventText, event: event };
var firstPage = !userNavigated && pages < 2;

metadata = appendMetadata(metadata, eventParams);

if (event) {
sendData(
assign(eventParams, {
query: getQueryParams(),
id: uuid(),
query: getQueryParams(!firstPage),
referrer:
(firstPage || sameSite) && collectMetricByString("r")
? previousReferrer
: null,

metadata: stringify(metadata),
}),
Expand Down Expand Up @@ -905,9 +935,9 @@
}
})(
window,
{"saGlobal":INSTALL_OPTIONS.sa_global,"mode":INSTALL_OPTIONS.hash_mode ? 'hash' : null,"collectDnt":INSTALL_OPTIONS.collect_dnt},
{"hostname":INSTALL_OPTIONS.hostname,"collectDnt":typeof INSTALL_OPTIONS.collect_dnt === 'boolean' ? INSTALL_OPTIONS.collect_dnt : null,"mode":INSTALL_OPTIONS.hash_mode ? 'hash' : 'normal',"strictUtm":INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.strict_utm,"allowParams":INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.allow_url_parameters,"nonUniqueHostnames":INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.non_unique_hostnames,"ignorePages":INSTALL_OPTIONS.advanced_settings_toggle && INSTALL_OPTIONS.ignore_pages,"namespace":INSTALL_OPTIONS.overwrite_namespace && INSTALL_OPTIONS.namespace},
INSTALL_OPTIONS.custom_domain || "queue.simpleanalyticscdn.com",
"",
"cloudflare_10",
"cloudflare_11",
"sa"
);
Loading