@borisch/snitch 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/packages/common/anonymous-id-store.d.ts +2 -0
- package/dist/packages/common/anonymous-id-store.js +27 -0
- package/dist/packages/common/anonymous-id-store.js.map +1 -0
- package/dist/packages/common/create-unique-id.d.ts +1 -0
- package/dist/packages/common/create-unique-id.js +14 -0
- package/dist/packages/common/create-unique-id.js.map +1 -0
- package/dist/packages/common/plugin-interfaces.d.ts +22 -0
- package/dist/packages/common/plugin-interfaces.js +3 -0
- package/dist/packages/common/plugin-interfaces.js.map +1 -0
- package/dist/packages/common/tmr.d.ts +38 -0
- package/dist/packages/common/tmr.js +16 -0
- package/dist/packages/common/tmr.js.map +1 -0
- package/dist/packages/common/tracker-interfaces.d.ts +8 -0
- package/dist/packages/common/tracker-interfaces.js +3 -0
- package/dist/packages/common/tracker-interfaces.js.map +1 -0
- package/dist/packages/snitch/index.d.ts +2 -0
- package/dist/packages/snitch/index.js +8 -0
- package/dist/packages/snitch/index.js.map +1 -0
- package/dist/packages/snitch/snitch.d.ts +4 -0
- package/dist/packages/snitch/snitch.js +20 -0
- package/dist/packages/snitch/snitch.js.map +1 -0
- package/dist/packages/snitch/use-plugins.d.ts +11 -0
- package/dist/packages/snitch/use-plugins.js +40 -0
- package/dist/packages/snitch/use-plugins.js.map +1 -0
- package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.d.ts +6 -0
- package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.js +22 -0
- package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.js.map +1 -0
- package/dist/packages/snitch-plugin-beacon-transport/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-beacon-transport/index.js +8 -0
- package/dist/packages/snitch-plugin-beacon-transport/index.js.map +1 -0
- package/dist/packages/snitch-plugin-debug-logger/debug-logger.d.ts +2 -0
- package/dist/packages/snitch-plugin-debug-logger/debug-logger.js +22 -0
- package/dist/packages/snitch-plugin-debug-logger/debug-logger.js.map +1 -0
- package/dist/packages/snitch-plugin-debug-logger/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-debug-logger/index.js +8 -0
- package/dist/packages/snitch-plugin-debug-logger/index.js.map +1 -0
- package/dist/packages/snitch-plugin-engagement/engagement.d.ts +4 -0
- package/dist/packages/snitch-plugin-engagement/engagement.js +19 -0
- package/dist/packages/snitch-plugin-engagement/engagement.js.map +1 -0
- package/dist/packages/snitch-plugin-engagement/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-engagement/index.js +8 -0
- package/dist/packages/snitch-plugin-engagement/index.js.map +1 -0
- package/dist/packages/snitch-plugin-exceptions/exceptions.d.ts +2 -0
- package/dist/packages/snitch-plugin-exceptions/exceptions.js +31 -0
- package/dist/packages/snitch-plugin-exceptions/exceptions.js.map +1 -0
- package/dist/packages/snitch-plugin-exceptions/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-exceptions/index.js +8 -0
- package/dist/packages/snitch-plugin-exceptions/index.js.map +1 -0
- package/dist/packages/snitch-plugin-flag/flag-service.d.ts +36 -0
- package/dist/packages/snitch-plugin-flag/flag-service.js +37 -0
- package/dist/packages/snitch-plugin-flag/flag-service.js.map +1 -0
- package/dist/packages/snitch-plugin-flag/flag.d.ts +5 -0
- package/dist/packages/snitch-plugin-flag/flag.js +88 -0
- package/dist/packages/snitch-plugin-flag/flag.js.map +1 -0
- package/dist/packages/snitch-plugin-flag/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-flag/index.js +8 -0
- package/dist/packages/snitch-plugin-flag/index.js.map +1 -0
- package/dist/packages/snitch-plugin-launch/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-launch/index.js +8 -0
- package/dist/packages/snitch-plugin-launch/index.js.map +1 -0
- package/dist/packages/snitch-plugin-launch/launch.d.ts +2 -0
- package/dist/packages/snitch-plugin-launch/launch.js +29 -0
- package/dist/packages/snitch-plugin-launch/launch.js.map +1 -0
- package/dist/packages/snitch-plugin-location/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-location/index.js +8 -0
- package/dist/packages/snitch-plugin-location/index.js.map +1 -0
- package/dist/packages/snitch-plugin-location/listen-for-location-change.d.ts +1 -0
- package/dist/packages/snitch-plugin-location/listen-for-location-change.js +18 -0
- package/dist/packages/snitch-plugin-location/listen-for-location-change.js.map +1 -0
- package/dist/packages/snitch-plugin-location/location.d.ts +7 -0
- package/dist/packages/snitch-plugin-location/location.js +36 -0
- package/dist/packages/snitch-plugin-location/location.js.map +1 -0
- package/dist/packages/snitch-plugin-s2s-transport/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-s2s-transport/index.js +8 -0
- package/dist/packages/snitch-plugin-s2s-transport/index.js.map +1 -0
- package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.d.ts +8 -0
- package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.js +27 -0
- package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.js.map +1 -0
- package/dist/packages/snitch-plugin-screens/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-screens/index.js +8 -0
- package/dist/packages/snitch-plugin-screens/index.js.map +1 -0
- package/dist/packages/snitch-plugin-screens/screens.d.ts +6 -0
- package/dist/packages/snitch-plugin-screens/screens.js +31 -0
- package/dist/packages/snitch-plugin-screens/screens.js.map +1 -0
- package/dist/packages/snitch-plugin-scroll/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-scroll/index.js +8 -0
- package/dist/packages/snitch-plugin-scroll/index.js.map +1 -0
- package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.d.ts +2 -0
- package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.js +24 -0
- package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.js.map +1 -0
- package/dist/packages/snitch-plugin-scroll/scroll.d.ts +2 -0
- package/dist/packages/snitch-plugin-scroll/scroll.js +40 -0
- package/dist/packages/snitch-plugin-scroll/scroll.js.map +1 -0
- package/dist/packages/snitch-plugin-session/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-session/index.js +8 -0
- package/dist/packages/snitch-plugin-session/index.js.map +1 -0
- package/dist/packages/snitch-plugin-session/session.d.ts +14 -0
- package/dist/packages/snitch-plugin-session/session.js +99 -0
- package/dist/packages/snitch-plugin-session/session.js.map +1 -0
- package/dist/packages/snitch-plugin-session/storage.d.ts +11 -0
- package/dist/packages/snitch-plugin-session/storage.js +61 -0
- package/dist/packages/snitch-plugin-session/storage.js.map +1 -0
- package/dist/packages/snitch-plugin-session/utm.d.ts +6 -0
- package/dist/packages/snitch-plugin-session/utm.js +25 -0
- package/dist/packages/snitch-plugin-session/utm.js.map +1 -0
- package/dist/packages/snitch-plugin-topmailru-transport/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-topmailru-transport/index.js +8 -0
- package/dist/packages/snitch-plugin-topmailru-transport/index.js.map +1 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.d.ts +5 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.js +13 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.js.map +1 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.d.ts +4 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.js +59 -0
- package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.js.map +1 -0
- package/dist/packages/snitch-plugin-useragent/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-useragent/index.js +8 -0
- package/dist/packages/snitch-plugin-useragent/index.js.map +1 -0
- package/dist/packages/snitch-plugin-useragent/useragent.d.ts +2 -0
- package/dist/packages/snitch-plugin-useragent/useragent.js +13 -0
- package/dist/packages/snitch-plugin-useragent/useragent.js.map +1 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/index.js +8 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/index.js.map +1 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.d.ts +25 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.js +63 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.js.map +1 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.d.ts +3 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.js +42 -0
- package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.js.map +1 -0
- package/dist/packages/snitch-plugin-vkma-launch/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-vkma-launch/index.js +8 -0
- package/dist/packages/snitch-plugin-vkma-launch/index.js.map +1 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.d.ts +9 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.js +28 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.js.map +1 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.d.ts +2 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.js +37 -0
- package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.js.map +1 -0
- package/dist/packages/snitch-plugin-web-vitals/index.d.ts +2 -0
- package/dist/packages/snitch-plugin-web-vitals/index.js +8 -0
- package/dist/packages/snitch-plugin-web-vitals/index.js.map +1 -0
- package/dist/packages/snitch-plugin-web-vitals/web-vitals.d.ts +2 -0
- package/dist/packages/snitch-plugin-web-vitals/web-vitals.js +25 -0
- package/dist/packages/snitch-plugin-web-vitals/web-vitals.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-scroll/scroll.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAMA,uFAA0F;AAE1F,SAAwB,YAAY;IAGlC,IAAI,YAA0B,CAAA;IAC9B,OAAO;QACL,eAAe,CAAC,YAA0B;YACxC,YAAY,GAAG,YAAY,CAAA;QAC7B,CAAC;QACD,MAAM;YACJ,kCAAqB,CAAC,CAAC,WAAmB,EAAE,EAAE,CAC5C,YAAY,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CACtD,CAAA;QACH,CAAC;QACD,kBAAkB,CAAC,SAAS;YAC1B,IAAI,SAAS,KAAK,gBAAgB,IAAI,SAAS,KAAK,cAAc,EAAE;gBAClE,iDAAsB,EAAE,CAAA;aACzB;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAnBD,+BAmBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const session_1 = __importDefault(require("./session"));
|
|
7
|
+
exports.default = session_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-session/index.ts"],"names":[],"mappings":";;;;;AAAA,wDAAqC;AACrC,kBAAe,iBAAa,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const SESSION_EXPIRING_INACTIVITY_TIME_MSEC: number;
|
|
2
|
+
import { BeforeCaptureEventHandler, EventPayloadParamsProvider, EventSource, InitializationHandler } from '../common/plugin-interfaces';
|
|
3
|
+
/**
|
|
4
|
+
* Plugin uses localStorage to persist session’s state
|
|
5
|
+
*
|
|
6
|
+
* New session starts:
|
|
7
|
+
* 1) on init in following cases:
|
|
8
|
+
* - there is no persisted session
|
|
9
|
+
* - persisted session is stale
|
|
10
|
+
* - there is utm parameters in url
|
|
11
|
+
* 2) before any captureEvent call
|
|
12
|
+
* if persisted session is stale
|
|
13
|
+
*/
|
|
14
|
+
export default function sessionPlugin(): InitializationHandler & BeforeCaptureEventHandler & EventPayloadParamsProvider & EventSource;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.SESSION_EXPIRING_INACTIVITY_TIME_MSEC = void 0;
|
|
26
|
+
exports.SESSION_EXPIRING_INACTIVITY_TIME_MSEC = 30 * 60 * 1000; // 30 minutes
|
|
27
|
+
const create_unique_id_1 = __importDefault(require("../common/create-unique-id"));
|
|
28
|
+
const storage = __importStar(require("./storage"));
|
|
29
|
+
const utm = __importStar(require("./utm"));
|
|
30
|
+
/**
|
|
31
|
+
* Plugin uses localStorage to persist session’s state
|
|
32
|
+
*
|
|
33
|
+
* New session starts:
|
|
34
|
+
* 1) on init in following cases:
|
|
35
|
+
* - there is no persisted session
|
|
36
|
+
* - persisted session is stale
|
|
37
|
+
* - there is utm parameters in url
|
|
38
|
+
* 2) before any captureEvent call
|
|
39
|
+
* if persisted session is stale
|
|
40
|
+
*/
|
|
41
|
+
function sessionPlugin() {
|
|
42
|
+
let captureEvent;
|
|
43
|
+
let isLocalStorageSupported;
|
|
44
|
+
let initTimestamp;
|
|
45
|
+
function isSessionExpired() {
|
|
46
|
+
return Date.now() - storage.getLastInteractiveEventTS() > exports.SESSION_EXPIRING_INACTIVITY_TIME_MSEC;
|
|
47
|
+
}
|
|
48
|
+
function startNewSession() {
|
|
49
|
+
storage.setSessionId(create_unique_id_1.default());
|
|
50
|
+
storage.setSessionStartTS(Date.now());
|
|
51
|
+
storage.setSessionUTMParams(utm.stringifyCompact(location.href));
|
|
52
|
+
storage.incrementSessionCount();
|
|
53
|
+
storage.setLastInterctiveEventTS(Date.now());
|
|
54
|
+
captureEvent('sessionStart');
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
setEventHandler(eventHandler) {
|
|
58
|
+
captureEvent = eventHandler;
|
|
59
|
+
},
|
|
60
|
+
onInit() {
|
|
61
|
+
initTimestamp = Date.now();
|
|
62
|
+
isLocalStorageSupported = storage.isSupported();
|
|
63
|
+
if (!isLocalStorageSupported)
|
|
64
|
+
return;
|
|
65
|
+
const deviceHadNoSessionsSoFar = storage.getSessionId() === null;
|
|
66
|
+
const urlHasUTMParams = utm.urlHasParams(window.location.href);
|
|
67
|
+
const currentSessionExpired = isSessionExpired();
|
|
68
|
+
const shouldStartNewSession = deviceHadNoSessionsSoFar || urlHasUTMParams || currentSessionExpired;
|
|
69
|
+
if (shouldStartNewSession) {
|
|
70
|
+
startNewSession();
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
beforeCaptureEvent() {
|
|
74
|
+
if (!isLocalStorageSupported)
|
|
75
|
+
return;
|
|
76
|
+
if (isSessionExpired()) {
|
|
77
|
+
startNewSession();
|
|
78
|
+
}
|
|
79
|
+
storage.setLastInterctiveEventTS(Date.now());
|
|
80
|
+
},
|
|
81
|
+
getEventPayloadParams() {
|
|
82
|
+
if (!isLocalStorageSupported)
|
|
83
|
+
return {
|
|
84
|
+
sid: 'unsupported',
|
|
85
|
+
scnt: '1',
|
|
86
|
+
set: Date.now() - initTimestamp,
|
|
87
|
+
sutm: ''
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
sid: storage.getSessionId(),
|
|
91
|
+
scnt: storage.getSessionCount(),
|
|
92
|
+
set: Date.now() - storage.getSessionStartTS(),
|
|
93
|
+
sutm: storage.getSessionUTMParams()
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
exports.default = sessionPlugin;
|
|
99
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-session/session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAa,QAAA,qCAAqC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,aAAa;AAEjF,kFAAuD;AAQvD,mDAAoC;AACpC,2CAA4B;AAE5B;;;;;;;;;;GAUG;AACH,SAAwB,aAAa;IAInC,IAAI,YAA0B,CAAA;IAC9B,IAAI,uBAAgC,CAAA;IACpC,IAAI,aAAqB,CAAA;IAEzB,SAAS,gBAAgB;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,yBAAyB,EAAE,GAAG,6CAAqC,CAAA;IACjG,CAAC;IAED,SAAS,eAAe;QACtB,OAAO,CAAC,YAAY,CAAC,0BAAc,EAAE,CAAC,CAAA;QACtC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACrC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,qBAAqB,EAAE,CAAA;QAC/B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5C,YAAY,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;IAED,OAAO;QACL,eAAe,CAAC,YAA0B;YACxC,YAAY,GAAG,YAAY,CAAA;QAC7B,CAAC;QAED,MAAM;YACJ,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,uBAAuB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;YAC/C,IAAI,CAAC,uBAAuB;gBAAE,OAAM;YACpC,MAAM,wBAAwB,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,CAAA;YAChE,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC9D,MAAM,qBAAqB,GAAG,gBAAgB,EAAE,CAAA;YAChD,MAAM,qBAAqB,GACzB,wBAAwB,IAAI,eAAe,IAAI,qBAAqB,CAAA;YACtE,IAAI,qBAAqB,EAAE;gBACzB,eAAe,EAAE,CAAA;aAClB;QACH,CAAC;QAED,kBAAkB;YAChB,IAAI,CAAC,uBAAuB;gBAAE,OAAM;YACpC,IAAI,gBAAgB,EAAE,EAAE;gBACtB,eAAe,EAAE,CAAA;aAClB;YACD,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,qBAAqB;YACnB,IAAI,CAAC,uBAAuB;gBAC1B,OAAO;oBACL,GAAG,EAAE,aAAa;oBAClB,IAAI,EAAE,GAAG;oBACT,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa;oBAC/B,IAAI,EAAE,EAAE;iBACT,CAAA;YACH,OAAO;gBACL,GAAG,EAAE,OAAO,CAAC,YAAY,EAAY;gBACrC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE;gBAC/B,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE;gBAC7C,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE;aACpC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAhED,gCAgEC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function isSupported(): boolean;
|
|
2
|
+
export declare function setSessionId(sessionId: string): void;
|
|
3
|
+
export declare function getSessionId(): string | null;
|
|
4
|
+
export declare function setSessionStartTS(engagementTimeMsec: number): void;
|
|
5
|
+
export declare function getSessionStartTS(): number;
|
|
6
|
+
export declare function setSessionUTMParams(utmParamsCompactString: string): void;
|
|
7
|
+
export declare function getSessionUTMParams(): string;
|
|
8
|
+
export declare function setLastInterctiveEventTS(lastInteractiveEventTS: number): void;
|
|
9
|
+
export declare function getLastInteractiveEventTS(): number;
|
|
10
|
+
export declare function incrementSessionCount(): void;
|
|
11
|
+
export declare function getSessionCount(): number;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSessionCount = exports.incrementSessionCount = exports.getLastInteractiveEventTS = exports.setLastInterctiveEventTS = exports.getSessionUTMParams = exports.setSessionUTMParams = exports.getSessionStartTS = exports.setSessionStartTS = exports.getSessionId = exports.setSessionId = exports.isSupported = void 0;
|
|
4
|
+
const LOCAL_STORAGE_SESSION_ID_KEY = 'isdp:sid';
|
|
5
|
+
const LOCAL_STORAGE_PROBE = 'isdp:probe';
|
|
6
|
+
const LOCAL_STORAGE_SESSION_COUNT_KEY = 'isdp:scnt';
|
|
7
|
+
const LOCAL_STORAGE_SESSION_UTM_PARAMS_KEY = 'isdp:sutm';
|
|
8
|
+
const LOCAL_STORAGE_LAST_INTERACTIVE_EVENT_TS_KEY = 'isdp:livts';
|
|
9
|
+
const LOCAL_STORAGE_SESSION_START_TS_KEY = 'isdp:ssts';
|
|
10
|
+
function isSupported() {
|
|
11
|
+
try {
|
|
12
|
+
localStorage.setItem(LOCAL_STORAGE_PROBE, LOCAL_STORAGE_PROBE);
|
|
13
|
+
localStorage.removeItem(LOCAL_STORAGE_PROBE);
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.isSupported = isSupported;
|
|
21
|
+
function setSessionId(sessionId) {
|
|
22
|
+
localStorage.setItem(LOCAL_STORAGE_SESSION_ID_KEY, sessionId);
|
|
23
|
+
}
|
|
24
|
+
exports.setSessionId = setSessionId;
|
|
25
|
+
function getSessionId() {
|
|
26
|
+
return localStorage.getItem(LOCAL_STORAGE_SESSION_ID_KEY);
|
|
27
|
+
}
|
|
28
|
+
exports.getSessionId = getSessionId;
|
|
29
|
+
function setSessionStartTS(engagementTimeMsec) {
|
|
30
|
+
localStorage.setItem(LOCAL_STORAGE_SESSION_START_TS_KEY, Math.floor(engagementTimeMsec).toString());
|
|
31
|
+
}
|
|
32
|
+
exports.setSessionStartTS = setSessionStartTS;
|
|
33
|
+
function getSessionStartTS() {
|
|
34
|
+
return parseInt(localStorage.getItem(LOCAL_STORAGE_SESSION_START_TS_KEY), 10);
|
|
35
|
+
}
|
|
36
|
+
exports.getSessionStartTS = getSessionStartTS;
|
|
37
|
+
function setSessionUTMParams(utmParamsCompactString) {
|
|
38
|
+
localStorage.setItem(LOCAL_STORAGE_SESSION_UTM_PARAMS_KEY, utmParamsCompactString);
|
|
39
|
+
}
|
|
40
|
+
exports.setSessionUTMParams = setSessionUTMParams;
|
|
41
|
+
function getSessionUTMParams() {
|
|
42
|
+
return localStorage.getItem(LOCAL_STORAGE_SESSION_UTM_PARAMS_KEY);
|
|
43
|
+
}
|
|
44
|
+
exports.getSessionUTMParams = getSessionUTMParams;
|
|
45
|
+
function setLastInterctiveEventTS(lastInteractiveEventTS) {
|
|
46
|
+
localStorage.setItem(LOCAL_STORAGE_LAST_INTERACTIVE_EVENT_TS_KEY, lastInteractiveEventTS.toString());
|
|
47
|
+
}
|
|
48
|
+
exports.setLastInterctiveEventTS = setLastInterctiveEventTS;
|
|
49
|
+
function getLastInteractiveEventTS() {
|
|
50
|
+
return parseInt(localStorage.getItem(LOCAL_STORAGE_LAST_INTERACTIVE_EVENT_TS_KEY), 10);
|
|
51
|
+
}
|
|
52
|
+
exports.getLastInteractiveEventTS = getLastInteractiveEventTS;
|
|
53
|
+
function incrementSessionCount() {
|
|
54
|
+
localStorage.setItem(LOCAL_STORAGE_SESSION_COUNT_KEY, (parseInt(localStorage.getItem(LOCAL_STORAGE_SESSION_COUNT_KEY) || '0', 10) + 1).toString());
|
|
55
|
+
}
|
|
56
|
+
exports.incrementSessionCount = incrementSessionCount;
|
|
57
|
+
function getSessionCount() {
|
|
58
|
+
return parseInt(localStorage.getItem(LOCAL_STORAGE_SESSION_COUNT_KEY), 10);
|
|
59
|
+
}
|
|
60
|
+
exports.getSessionCount = getSessionCount;
|
|
61
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-session/storage.ts"],"names":[],"mappings":";;;AAAA,MAAM,4BAA4B,GAAG,UAAU,CAAA;AAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAA;AACxC,MAAM,+BAA+B,GAAG,WAAW,CAAA;AACnD,MAAM,oCAAoC,GAAG,WAAW,CAAA;AACxD,MAAM,2CAA2C,GAAG,YAAY,CAAA;AAChE,MAAM,kCAAkC,GAAG,WAAW,CAAA;AAEtD,SAAgB,WAAW;IACzB,IAAI;QACF,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;QAC9D,YAAY,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC;AARD,kCAQC;AAED,SAAgB,YAAY,CAAC,SAAiB;IAC5C,YAAY,CAAC,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAA;AAC/D,CAAC;AAFD,oCAEC;AAED,SAAgB,YAAY;IAC1B,OAAO,YAAY,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;AAC3D,CAAC;AAFD,oCAEC;AAED,SAAgB,iBAAiB,CAAC,kBAA0B;IAC1D,YAAY,CAAC,OAAO,CAClB,kCAAkC,EAClC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAC1C,CAAA;AACH,CAAC;AALD,8CAKC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,kCAAkC,CAAW,EAAE,EAAE,CAAC,CAAA;AACzF,CAAC;AAFD,8CAEC;AAED,SAAgB,mBAAmB,CAAC,sBAA8B;IAChE,YAAY,CAAC,OAAO,CAAC,oCAAoC,EAAE,sBAAsB,CAAC,CAAA;AACpF,CAAC;AAFD,kDAEC;AAED,SAAgB,mBAAmB;IACjC,OAAO,YAAY,CAAC,OAAO,CAAC,oCAAoC,CAAW,CAAA;AAC7E,CAAC;AAFD,kDAEC;AAED,SAAgB,wBAAwB,CAAC,sBAA8B;IACrE,YAAY,CAAC,OAAO,CAClB,2CAA2C,EAC3C,sBAAsB,CAAC,QAAQ,EAAE,CAClC,CAAA;AACH,CAAC;AALD,4DAKC;AAED,SAAgB,yBAAyB;IACvC,OAAO,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,2CAA2C,CAAW,EAAE,EAAE,CAAC,CAAA;AAClG,CAAC;AAFD,8DAEC;AAED,SAAgB,qBAAqB;IACnC,YAAY,CAAC,OAAO,CAClB,+BAA+B,EAC/B,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC5F,CAAA;AACH,CAAC;AALD,sDAKC;AAED,SAAgB,eAAe;IAC7B,OAAO,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAW,EAAE,EAAE,CAAC,CAAA;AACtF,CAAC;AAFD,0CAEC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function trimCommas(compactUTMString: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Parses not only search string for params but also a hash string
|
|
4
|
+
* */
|
|
5
|
+
export declare function stringifyCompact(href: string): string;
|
|
6
|
+
export declare function urlHasParams(href: string): boolean;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.urlHasParams = exports.stringifyCompact = exports.trimCommas = void 0;
|
|
4
|
+
const commaTrimmerRegExp = /,+$/;
|
|
5
|
+
function trimCommas(compactUTMString) {
|
|
6
|
+
return compactUTMString.replace(commaTrimmerRegExp, '');
|
|
7
|
+
}
|
|
8
|
+
exports.trimCommas = trimCommas;
|
|
9
|
+
/**
|
|
10
|
+
* Parses not only search string for params but also a hash string
|
|
11
|
+
* */
|
|
12
|
+
function stringifyCompact(href) {
|
|
13
|
+
const url = new URL(href);
|
|
14
|
+
const urlWithSearchParamsReplacedByHashParams = new URL(href.replace(url.search, '').replace('#', '?'));
|
|
15
|
+
const getParam = (paramName) => url.searchParams.get(paramName) ||
|
|
16
|
+
urlWithSearchParamsReplacedByHashParams.searchParams.get(paramName) ||
|
|
17
|
+
'';
|
|
18
|
+
return trimCommas(['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'].map(getParam).join(','));
|
|
19
|
+
}
|
|
20
|
+
exports.stringifyCompact = stringifyCompact;
|
|
21
|
+
function urlHasParams(href) {
|
|
22
|
+
return /utm_(source|medium|campaign|content|term)=[^&#]+/.test(href);
|
|
23
|
+
}
|
|
24
|
+
exports.urlHasParams = urlHasParams;
|
|
25
|
+
//# sourceMappingURL=utm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utm.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-session/utm.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEhC,SAAgB,UAAU,CAAC,gBAAwB;IACjD,OAAO,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AACzD,CAAC;AAFD,gCAEC;AAED;;KAEK;AACL,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IAEzB,MAAM,uCAAuC,GAAG,IAAI,GAAG,CACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAC/C,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC7C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,uCAAuC,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QACnE,EAAE,CAAA;IAEJ,OAAO,UAAU,CACf,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAChG,CAAA;AACH,CAAC;AAfD,4CAeC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtE,CAAC;AAFD,oCAEC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const topmailru_transport_1 = __importDefault(require("./topmailru-transport"));
|
|
7
|
+
exports.default = topmailru_transport_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-topmailru-transport/index.ts"],"names":[],"mappings":";;;;;AAAA,gFAA4D;AAC5D,kBAAe,6BAAwB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.topmailruCounterMock = exports.postedTopmailruEventsLog = void 0;
|
|
4
|
+
exports.postedTopmailruEventsLog = [];
|
|
5
|
+
exports.topmailruCounterMock = {
|
|
6
|
+
push(event) {
|
|
7
|
+
exports.postedTopmailruEventsLog.push(event);
|
|
8
|
+
},
|
|
9
|
+
getUserID() {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=topmailru-counter-mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topmailru-counter-mock.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.ts"],"names":[],"mappings":";;;AAIa,QAAA,wBAAwB,GAAoB,EAAE,CAAA;AAE9C,QAAA,oBAAoB,GAAe;IAC9C,IAAI,CAAC,KAAK;QACR,gCAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IACD,SAAS;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EventTransport, InitializationHandler } from '../common/plugin-interfaces';
|
|
2
|
+
import '../common/tmr';
|
|
3
|
+
export declare const ERROR_NO_TMR_COUNTER_ID = "initErrorNoTMRCounterId";
|
|
4
|
+
export default function tmrTransportPlugin(topmailruCounterId: string, userIdResolver?: () => string | null | undefined): EventTransport & InitializationHandler;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.ERROR_NO_TMR_COUNTER_ID = void 0;
|
|
26
|
+
const anonymousUserIdStore = __importStar(require("../common/anonymous-id-store"));
|
|
27
|
+
const create_unique_id_1 = __importDefault(require("../common/create-unique-id"));
|
|
28
|
+
require("../common/tmr");
|
|
29
|
+
const tmr_1 = require("../common/tmr");
|
|
30
|
+
exports.ERROR_NO_TMR_COUNTER_ID = 'initErrorNoTMRCounterId';
|
|
31
|
+
function tmrTransportPlugin(topmailruCounterId, userIdResolver) {
|
|
32
|
+
if (!topmailruCounterId)
|
|
33
|
+
throw TypeError(exports.ERROR_NO_TMR_COUNTER_ID);
|
|
34
|
+
const getAnonymousUserId = () => {
|
|
35
|
+
let anonymousUserId = anonymousUserIdStore.getAnonymousUserId();
|
|
36
|
+
if (anonymousUserId === null) {
|
|
37
|
+
anonymousUserId = `${create_unique_id_1.default()}@anonymous`;
|
|
38
|
+
anonymousUserIdStore.setAnonymousUserId(anonymousUserId);
|
|
39
|
+
}
|
|
40
|
+
return anonymousUserId;
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
onInit() {
|
|
44
|
+
if (!window._tmr)
|
|
45
|
+
window._tmr = [];
|
|
46
|
+
},
|
|
47
|
+
sendEvent(eventName, eventParams) {
|
|
48
|
+
window._tmr.push({
|
|
49
|
+
id: topmailruCounterId,
|
|
50
|
+
type: 'reachGoal',
|
|
51
|
+
goal: eventName,
|
|
52
|
+
params: eventParams,
|
|
53
|
+
userid: (userIdResolver && userIdResolver()) || tmr_1.getTMRCounterUserId() || getAnonymousUserId()
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
exports.default = tmrTransportPlugin;
|
|
59
|
+
//# sourceMappingURL=topmailru-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topmailru-transport.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-topmailru-transport/topmailru-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAoE;AACpE,kFAAuD;AAEvD,yBAAsB;AACtB,uCAAmD;AAGtC,QAAA,uBAAuB,GAAG,yBAAyB,CAAA;AAEhE,SAAwB,kBAAkB,CACxC,kBAA0B,EAC1B,cAAgD;IAEhD,IAAI,CAAC,kBAAkB;QAAE,MAAM,SAAS,CAAC,+BAAuB,CAAC,CAAA;IAEjE,MAAM,kBAAkB,GAAG,GAAW,EAAE;QACtC,IAAI,eAAe,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,CAAA;QAC/D,IAAI,eAAe,KAAK,IAAI,EAAE;YAC5B,eAAe,GAAG,GAAG,0BAAc,EAAE,YAAY,CAAA;YACjD,oBAAoB,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAA;SACzD;QACD,OAAO,eAAe,CAAA;IACxB,CAAC,CAAA;IAED,OAAO;QACL,MAAM;YACJ,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;QACpC,CAAC;QAED,SAAS,CAAC,SAAiB,EAAE,WAAiC;YAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBACf,EAAE,EAAE,kBAAkB;gBACtB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,WAAW;gBACnB,MAAM,EACJ,CAAC,cAAc,IAAI,cAAc,EAAE,CAAC,IAAI,yBAAmB,EAAE,IAAI,kBAAkB,EAAE;aACxF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AA/BD,qCA+BC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const useragent_1 = __importDefault(require("./useragent"));
|
|
7
|
+
exports.default = useragent_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-useragent/index.ts"],"names":[],"mappings":";;;;;AAAA,4DAAyC;AACzC,kBAAe,mBAAe,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function useragentPlugin() {
|
|
4
|
+
return {
|
|
5
|
+
getEventPayloadParams() {
|
|
6
|
+
return {
|
|
7
|
+
ua: window.navigator.userAgent
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
exports.default = useragentPlugin;
|
|
13
|
+
//# sourceMappingURL=useragent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useragent.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-useragent/useragent.ts"],"names":[],"mappings":";;AAEA,SAAwB,eAAe;IACrC,OAAO;QACL,qBAAqB;YACnB,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;aAC/B,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AARD,kCAQC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vkbridge_transport_1 = __importDefault(require("./vkbridge-transport"));
|
|
7
|
+
exports.default = vkbridge_transport_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-vkbridge-transport/index.ts"],"names":[],"mappings":";;;;;AAAA,8EAA0D;AAC1D,kBAAe,4BAAuB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** This one implements vk bridge send method so that
|
|
2
|
+
* bridge does not have to be loaded prior to sending events */
|
|
3
|
+
/** Is the client side runtime environment */
|
|
4
|
+
export declare const IS_CLIENT_SIDE: boolean;
|
|
5
|
+
/** Is the runtime environment an Android app */
|
|
6
|
+
export declare const IS_ANDROID_WEBVIEW: boolean;
|
|
7
|
+
/** Is the runtime environment an iOS app */
|
|
8
|
+
export declare const IS_IOS_WEBVIEW: boolean;
|
|
9
|
+
export declare const IS_REACT_NATIVE_WEBVIEW: boolean;
|
|
10
|
+
/** Is the runtime environment a browser */
|
|
11
|
+
export declare const IS_WEB: boolean;
|
|
12
|
+
interface VKWebAppTrackEventPayload {
|
|
13
|
+
custom_user_id?: string;
|
|
14
|
+
event_name: string;
|
|
15
|
+
event_params?: {
|
|
16
|
+
[key: string]: string | number | boolean;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
interface VKWebAppSendCustomEvent {
|
|
20
|
+
event: string;
|
|
21
|
+
json?: string;
|
|
22
|
+
screen?: string;
|
|
23
|
+
}
|
|
24
|
+
export default function send(method: 'VKWebAppTrackEvent' | 'VKWebAppSendCustomEvent', props: VKWebAppTrackEventPayload | VKWebAppSendCustomEvent): void;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** This one implements vk bridge send method so that
|
|
3
|
+
* bridge does not have to be loaded prior to sending events */
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.IS_WEB = exports.IS_REACT_NATIVE_WEBVIEW = exports.IS_IOS_WEBVIEW = exports.IS_ANDROID_WEBVIEW = exports.IS_CLIENT_SIDE = void 0;
|
|
6
|
+
const webFrameId = undefined;
|
|
7
|
+
const version = '2.14.1';
|
|
8
|
+
/** Is the client side runtime environment */
|
|
9
|
+
exports.IS_CLIENT_SIDE = typeof window !== 'undefined';
|
|
10
|
+
/** Is the runtime environment an Android app */
|
|
11
|
+
exports.IS_ANDROID_WEBVIEW = Boolean(exports.IS_CLIENT_SIDE && window.AndroidBridge);
|
|
12
|
+
/** Is the runtime environment an iOS app */
|
|
13
|
+
exports.IS_IOS_WEBVIEW = Boolean(exports.IS_CLIENT_SIDE &&
|
|
14
|
+
window.webkit &&
|
|
15
|
+
window.webkit.messageHandlers &&
|
|
16
|
+
window.webkit.messageHandlers.VKWebAppClose);
|
|
17
|
+
exports.IS_REACT_NATIVE_WEBVIEW = Boolean(exports.IS_CLIENT_SIDE &&
|
|
18
|
+
window.ReactNativeWebView &&
|
|
19
|
+
typeof window.ReactNativeWebView.postMessage === 'function');
|
|
20
|
+
/** Is the runtime environment a browser */
|
|
21
|
+
exports.IS_WEB = exports.IS_CLIENT_SIDE && !exports.IS_ANDROID_WEBVIEW && !exports.IS_IOS_WEBVIEW;
|
|
22
|
+
/** Android VK Bridge interface. */
|
|
23
|
+
const androidBridge = exports.IS_CLIENT_SIDE
|
|
24
|
+
? window.AndroidBridge
|
|
25
|
+
: undefined;
|
|
26
|
+
/** iOS VK Bridge interface. */
|
|
27
|
+
const iosBridge = exports.IS_IOS_WEBVIEW
|
|
28
|
+
? window.webkit.messageHandlers
|
|
29
|
+
: undefined;
|
|
30
|
+
/** Web VK Bridge interface. */
|
|
31
|
+
const webBridge = exports.IS_WEB
|
|
32
|
+
? parent
|
|
33
|
+
: undefined;
|
|
34
|
+
function send(method, props) {
|
|
35
|
+
// Sending data through Android bridge
|
|
36
|
+
if (androidBridge && androidBridge[method]) {
|
|
37
|
+
androidBridge[method](JSON.stringify(props));
|
|
38
|
+
}
|
|
39
|
+
// Sending data through iOS bridge
|
|
40
|
+
else if (iosBridge && iosBridge[method] && typeof iosBridge[method].postMessage === 'function') {
|
|
41
|
+
iosBridge[method].postMessage(props);
|
|
42
|
+
}
|
|
43
|
+
// Sending data through React Native bridge
|
|
44
|
+
else if (exports.IS_REACT_NATIVE_WEBVIEW) {
|
|
45
|
+
;
|
|
46
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
47
|
+
handler: method,
|
|
48
|
+
params: props
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
// Sending data through web bridge
|
|
52
|
+
else if (webBridge && typeof webBridge.postMessage === 'function') {
|
|
53
|
+
webBridge.postMessage({
|
|
54
|
+
handler: method,
|
|
55
|
+
params: props,
|
|
56
|
+
type: 'vk-connect',
|
|
57
|
+
webFrameId,
|
|
58
|
+
connectVersion: version
|
|
59
|
+
}, '*');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.default = send;
|
|
63
|
+
//# sourceMappingURL=vkbridge-send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vkbridge-send.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-vkbridge-transport/vkbridge-send.ts"],"names":[],"mappings":";AAAA;+DAC+D;;;AAE/D,MAAM,UAAU,GAAG,SAAS,CAAA;AAC5B,MAAM,OAAO,GAAG,QAAQ,CAAA;AAExB,6CAA6C;AAChC,QAAA,cAAc,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;AAE3D,gDAAgD;AACnC,QAAA,kBAAkB,GAAG,OAAO,CAAC,sBAAc,IAAK,MAAc,CAAC,aAAa,CAAC,CAAA;AAE1F,4CAA4C;AAC/B,QAAA,cAAc,GAAG,OAAO,CACnC,sBAAc;IACX,MAAc,CAAC,MAAM;IACrB,MAAc,CAAC,MAAM,CAAC,eAAe;IACrC,MAAc,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,CACvD,CAAA;AAEY,QAAA,uBAAuB,GAAG,OAAO,CAC5C,sBAAc;IACX,MAAc,CAAC,kBAAkB;IAClC,OAAQ,MAAc,CAAC,kBAAkB,CAAC,WAAW,KAAK,UAAU,CACvE,CAAA;AAED,2CAA2C;AAC9B,QAAA,MAAM,GAAG,sBAAc,IAAI,CAAC,0BAAkB,IAAI,CAAC,sBAAc,CAAA;AAE9E,mCAAmC;AACnC,MAAM,aAAa,GAAiE,sBAAc;IAChG,CAAC,CAAE,MAAc,CAAC,aAAa;IAC/B,CAAC,CAAC,SAAS,CAAA;AAEb,+BAA+B;AAC/B,MAAM,SAAS,GAAsE,sBAAc;IACjG,CAAC,CAAE,MAAc,CAAC,MAAM,CAAC,eAAe;IACxC,CAAC,CAAC,SAAS,CAAA;AAEb,+BAA+B;AAC/B,MAAM,SAAS,GAA+E,cAAM;IAClG,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,SAAS,CAAA;AAgBb,SAAwB,IAAI,CAC1B,MAAwD,EACxD,KAA0D;IAE1D,sCAAsC;IACtC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QAC1C,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;KAC7C;IAED,kCAAkC;SAC7B,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,UAAU,EAAE;QAC9F,SAAS,CAAC,MAAM,CAAC,CAAC,WAAY,CAAC,KAAK,CAAC,CAAA;KACtC;IAED,2CAA2C;SACtC,IAAI,+BAAuB,EAAE;QAChC,CAAC;QAAC,MAAc,CAAC,kBAAkB,CAAC,WAAW,CAC7C,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,KAAK;SACd,CAAC,CACH,CAAA;KACF;IAED,kCAAkC;SAC7B,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE;QACjE,SAAS,CAAC,WAAW,CACnB;YACE,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY;YAClB,UAAU;YACV,cAAc,EAAE,OAAO;SACxB,EACD,GAAG,CACJ,CAAA;KACF;AACH,CAAC;AArCD,uBAqCC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ERROR_NO_VK_BRIDGE = void 0;
|
|
7
|
+
const vkbridge_send_1 = __importDefault(require("./vkbridge-send"));
|
|
8
|
+
exports.ERROR_NO_VK_BRIDGE = 'initErrorNoVKBridge';
|
|
9
|
+
function vkbridgeTransportPlugin() {
|
|
10
|
+
const url = new URL(location.href);
|
|
11
|
+
const vkUserId = url.searchParams.get('vk_user_id') || 'anonymous';
|
|
12
|
+
return {
|
|
13
|
+
sendEvent(eventName, eventParams) {
|
|
14
|
+
/*
|
|
15
|
+
For some reason VKBridge for iOS native clients
|
|
16
|
+
does not send events with numeric values in params
|
|
17
|
+
so we have to convert all no-nstring params to strings
|
|
18
|
+
*/
|
|
19
|
+
if (eventParams) {
|
|
20
|
+
for (const paramKey of Object.keys(eventParams)) {
|
|
21
|
+
if (eventParams[paramKey] === null)
|
|
22
|
+
eventParams[paramKey] = 'null';
|
|
23
|
+
if (eventParams[paramKey] === undefined)
|
|
24
|
+
eventParams[paramKey] = 'undefined';
|
|
25
|
+
if (typeof eventParams[paramKey] !== 'string')
|
|
26
|
+
eventParams[paramKey] = eventParams[paramKey].toString();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
vkbridge_send_1.default('VKWebAppTrackEvent', {
|
|
30
|
+
custom_user_id: vkUserId,
|
|
31
|
+
event_name: eventName,
|
|
32
|
+
event_params: eventParams
|
|
33
|
+
});
|
|
34
|
+
vkbridge_send_1.default('VKWebAppSendCustomEvent', {
|
|
35
|
+
event: eventName,
|
|
36
|
+
json: JSON.stringify(eventParams)
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
exports.default = vkbridgeTransportPlugin;
|
|
42
|
+
//# sourceMappingURL=vkbridge-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vkbridge-transport.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-vkbridge-transport/vkbridge-transport.ts"],"names":[],"mappings":";;;;;;AAEA,oEAA0C;AAE7B,QAAA,kBAAkB,GAAG,qBAAqB,CAAA;AAEvD,SAAwB,uBAAuB;IAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,WAAW,CAAA;IAClE,OAAO;QACL,SAAS,CAAC,SAAiB,EAAE,WAAiC;YAC5D;;;;cAIE;YACF,IAAI,WAAW,EAAE;gBACf,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC/C,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,IAAI;wBAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;oBAClE,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,SAAS;wBAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAA;oBAC5E,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,QAAQ;wBAC3C,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;iBAC3D;aACF;YACD,uBAAY,CAAC,oBAAoB,EAAE;gBACjC,cAAc,EAAE,QAAQ;gBACxB,UAAU,EAAE,SAAS;gBACrB,YAAY,EAAE,WAAW;aAC1B,CAAC,CAAA;YACF,uBAAY,CAAC,yBAAyB,EAAE;gBACtC,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;aAClC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AA7BD,0CA6BC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vkma_launch_1 = __importDefault(require("./vkma-launch"));
|
|
7
|
+
exports.default = vkma_launch_1.default;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/snitch-plugin-vkma-launch/index.ts"],"names":[],"mappings":";;;;;AAAA,gEAA4C;AAC5C,kBAAe,qBAAgB,CAAA"}
|