@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.
Files changed (149) hide show
  1. package/README.md +88 -0
  2. package/dist/index.d.ts +20 -0
  3. package/dist/index.js +47 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/packages/common/anonymous-id-store.d.ts +2 -0
  6. package/dist/packages/common/anonymous-id-store.js +27 -0
  7. package/dist/packages/common/anonymous-id-store.js.map +1 -0
  8. package/dist/packages/common/create-unique-id.d.ts +1 -0
  9. package/dist/packages/common/create-unique-id.js +14 -0
  10. package/dist/packages/common/create-unique-id.js.map +1 -0
  11. package/dist/packages/common/plugin-interfaces.d.ts +22 -0
  12. package/dist/packages/common/plugin-interfaces.js +3 -0
  13. package/dist/packages/common/plugin-interfaces.js.map +1 -0
  14. package/dist/packages/common/tmr.d.ts +38 -0
  15. package/dist/packages/common/tmr.js +16 -0
  16. package/dist/packages/common/tmr.js.map +1 -0
  17. package/dist/packages/common/tracker-interfaces.d.ts +8 -0
  18. package/dist/packages/common/tracker-interfaces.js +3 -0
  19. package/dist/packages/common/tracker-interfaces.js.map +1 -0
  20. package/dist/packages/snitch/index.d.ts +2 -0
  21. package/dist/packages/snitch/index.js +8 -0
  22. package/dist/packages/snitch/index.js.map +1 -0
  23. package/dist/packages/snitch/snitch.d.ts +4 -0
  24. package/dist/packages/snitch/snitch.js +20 -0
  25. package/dist/packages/snitch/snitch.js.map +1 -0
  26. package/dist/packages/snitch/use-plugins.d.ts +11 -0
  27. package/dist/packages/snitch/use-plugins.js +40 -0
  28. package/dist/packages/snitch/use-plugins.js.map +1 -0
  29. package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.d.ts +6 -0
  30. package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.js +22 -0
  31. package/dist/packages/snitch-plugin-beacon-transport/beacon-transport.js.map +1 -0
  32. package/dist/packages/snitch-plugin-beacon-transport/index.d.ts +2 -0
  33. package/dist/packages/snitch-plugin-beacon-transport/index.js +8 -0
  34. package/dist/packages/snitch-plugin-beacon-transport/index.js.map +1 -0
  35. package/dist/packages/snitch-plugin-debug-logger/debug-logger.d.ts +2 -0
  36. package/dist/packages/snitch-plugin-debug-logger/debug-logger.js +22 -0
  37. package/dist/packages/snitch-plugin-debug-logger/debug-logger.js.map +1 -0
  38. package/dist/packages/snitch-plugin-debug-logger/index.d.ts +2 -0
  39. package/dist/packages/snitch-plugin-debug-logger/index.js +8 -0
  40. package/dist/packages/snitch-plugin-debug-logger/index.js.map +1 -0
  41. package/dist/packages/snitch-plugin-engagement/engagement.d.ts +4 -0
  42. package/dist/packages/snitch-plugin-engagement/engagement.js +19 -0
  43. package/dist/packages/snitch-plugin-engagement/engagement.js.map +1 -0
  44. package/dist/packages/snitch-plugin-engagement/index.d.ts +2 -0
  45. package/dist/packages/snitch-plugin-engagement/index.js +8 -0
  46. package/dist/packages/snitch-plugin-engagement/index.js.map +1 -0
  47. package/dist/packages/snitch-plugin-exceptions/exceptions.d.ts +2 -0
  48. package/dist/packages/snitch-plugin-exceptions/exceptions.js +31 -0
  49. package/dist/packages/snitch-plugin-exceptions/exceptions.js.map +1 -0
  50. package/dist/packages/snitch-plugin-exceptions/index.d.ts +2 -0
  51. package/dist/packages/snitch-plugin-exceptions/index.js +8 -0
  52. package/dist/packages/snitch-plugin-exceptions/index.js.map +1 -0
  53. package/dist/packages/snitch-plugin-flag/flag-service.d.ts +36 -0
  54. package/dist/packages/snitch-plugin-flag/flag-service.js +37 -0
  55. package/dist/packages/snitch-plugin-flag/flag-service.js.map +1 -0
  56. package/dist/packages/snitch-plugin-flag/flag.d.ts +5 -0
  57. package/dist/packages/snitch-plugin-flag/flag.js +88 -0
  58. package/dist/packages/snitch-plugin-flag/flag.js.map +1 -0
  59. package/dist/packages/snitch-plugin-flag/index.d.ts +2 -0
  60. package/dist/packages/snitch-plugin-flag/index.js +8 -0
  61. package/dist/packages/snitch-plugin-flag/index.js.map +1 -0
  62. package/dist/packages/snitch-plugin-launch/index.d.ts +2 -0
  63. package/dist/packages/snitch-plugin-launch/index.js +8 -0
  64. package/dist/packages/snitch-plugin-launch/index.js.map +1 -0
  65. package/dist/packages/snitch-plugin-launch/launch.d.ts +2 -0
  66. package/dist/packages/snitch-plugin-launch/launch.js +29 -0
  67. package/dist/packages/snitch-plugin-launch/launch.js.map +1 -0
  68. package/dist/packages/snitch-plugin-location/index.d.ts +2 -0
  69. package/dist/packages/snitch-plugin-location/index.js +8 -0
  70. package/dist/packages/snitch-plugin-location/index.js.map +1 -0
  71. package/dist/packages/snitch-plugin-location/listen-for-location-change.d.ts +1 -0
  72. package/dist/packages/snitch-plugin-location/listen-for-location-change.js +18 -0
  73. package/dist/packages/snitch-plugin-location/listen-for-location-change.js.map +1 -0
  74. package/dist/packages/snitch-plugin-location/location.d.ts +7 -0
  75. package/dist/packages/snitch-plugin-location/location.js +36 -0
  76. package/dist/packages/snitch-plugin-location/location.js.map +1 -0
  77. package/dist/packages/snitch-plugin-s2s-transport/index.d.ts +2 -0
  78. package/dist/packages/snitch-plugin-s2s-transport/index.js +8 -0
  79. package/dist/packages/snitch-plugin-s2s-transport/index.js.map +1 -0
  80. package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.d.ts +8 -0
  81. package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.js +27 -0
  82. package/dist/packages/snitch-plugin-s2s-transport/s2s-transport.js.map +1 -0
  83. package/dist/packages/snitch-plugin-screens/index.d.ts +2 -0
  84. package/dist/packages/snitch-plugin-screens/index.js +8 -0
  85. package/dist/packages/snitch-plugin-screens/index.js.map +1 -0
  86. package/dist/packages/snitch-plugin-screens/screens.d.ts +6 -0
  87. package/dist/packages/snitch-plugin-screens/screens.js +31 -0
  88. package/dist/packages/snitch-plugin-screens/screens.js.map +1 -0
  89. package/dist/packages/snitch-plugin-scroll/index.d.ts +2 -0
  90. package/dist/packages/snitch-plugin-scroll/index.js +8 -0
  91. package/dist/packages/snitch-plugin-scroll/index.js.map +1 -0
  92. package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.d.ts +2 -0
  93. package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.js +24 -0
  94. package/dist/packages/snitch-plugin-scroll/listen-for-scroll-change.js.map +1 -0
  95. package/dist/packages/snitch-plugin-scroll/scroll.d.ts +2 -0
  96. package/dist/packages/snitch-plugin-scroll/scroll.js +40 -0
  97. package/dist/packages/snitch-plugin-scroll/scroll.js.map +1 -0
  98. package/dist/packages/snitch-plugin-session/index.d.ts +2 -0
  99. package/dist/packages/snitch-plugin-session/index.js +8 -0
  100. package/dist/packages/snitch-plugin-session/index.js.map +1 -0
  101. package/dist/packages/snitch-plugin-session/session.d.ts +14 -0
  102. package/dist/packages/snitch-plugin-session/session.js +99 -0
  103. package/dist/packages/snitch-plugin-session/session.js.map +1 -0
  104. package/dist/packages/snitch-plugin-session/storage.d.ts +11 -0
  105. package/dist/packages/snitch-plugin-session/storage.js +61 -0
  106. package/dist/packages/snitch-plugin-session/storage.js.map +1 -0
  107. package/dist/packages/snitch-plugin-session/utm.d.ts +6 -0
  108. package/dist/packages/snitch-plugin-session/utm.js +25 -0
  109. package/dist/packages/snitch-plugin-session/utm.js.map +1 -0
  110. package/dist/packages/snitch-plugin-topmailru-transport/index.d.ts +2 -0
  111. package/dist/packages/snitch-plugin-topmailru-transport/index.js +8 -0
  112. package/dist/packages/snitch-plugin-topmailru-transport/index.js.map +1 -0
  113. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.d.ts +5 -0
  114. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.js +13 -0
  115. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-counter-mock.js.map +1 -0
  116. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.d.ts +4 -0
  117. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.js +59 -0
  118. package/dist/packages/snitch-plugin-topmailru-transport/topmailru-transport.js.map +1 -0
  119. package/dist/packages/snitch-plugin-useragent/index.d.ts +2 -0
  120. package/dist/packages/snitch-plugin-useragent/index.js +8 -0
  121. package/dist/packages/snitch-plugin-useragent/index.js.map +1 -0
  122. package/dist/packages/snitch-plugin-useragent/useragent.d.ts +2 -0
  123. package/dist/packages/snitch-plugin-useragent/useragent.js +13 -0
  124. package/dist/packages/snitch-plugin-useragent/useragent.js.map +1 -0
  125. package/dist/packages/snitch-plugin-vkbridge-transport/index.d.ts +2 -0
  126. package/dist/packages/snitch-plugin-vkbridge-transport/index.js +8 -0
  127. package/dist/packages/snitch-plugin-vkbridge-transport/index.js.map +1 -0
  128. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.d.ts +25 -0
  129. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.js +63 -0
  130. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-send.js.map +1 -0
  131. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.d.ts +3 -0
  132. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.js +42 -0
  133. package/dist/packages/snitch-plugin-vkbridge-transport/vkbridge-transport.js.map +1 -0
  134. package/dist/packages/snitch-plugin-vkma-launch/index.d.ts +2 -0
  135. package/dist/packages/snitch-plugin-vkma-launch/index.js +8 -0
  136. package/dist/packages/snitch-plugin-vkma-launch/index.js.map +1 -0
  137. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.d.ts +9 -0
  138. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.js +28 -0
  139. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch-params.js.map +1 -0
  140. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.d.ts +2 -0
  141. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.js +37 -0
  142. package/dist/packages/snitch-plugin-vkma-launch/vkma-launch.js.map +1 -0
  143. package/dist/packages/snitch-plugin-web-vitals/index.d.ts +2 -0
  144. package/dist/packages/snitch-plugin-web-vitals/index.js +8 -0
  145. package/dist/packages/snitch-plugin-web-vitals/index.js.map +1 -0
  146. package/dist/packages/snitch-plugin-web-vitals/web-vitals.d.ts +2 -0
  147. package/dist/packages/snitch-plugin-web-vitals/web-vitals.js +25 -0
  148. package/dist/packages/snitch-plugin-web-vitals/web-vitals.js.map +1 -0
  149. 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,2 @@
1
+ import sessionPlugin from './session';
2
+ export default sessionPlugin;
@@ -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,2 @@
1
+ import topmailruTransportPlugin from './topmailru-transport';
2
+ export default topmailruTransportPlugin;
@@ -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,5 @@
1
+ import { TMRCounter } from '../common/tmr';
2
+ declare type PostedEventsLog = any[];
3
+ export declare const postedTopmailruEventsLog: PostedEventsLog;
4
+ export declare const topmailruCounterMock: TMRCounter;
5
+ export {};
@@ -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,2 @@
1
+ import useragentPlugin from './useragent';
2
+ export default useragentPlugin;
@@ -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,2 @@
1
+ import { EventPayloadParamsProvider } from '../common/plugin-interfaces';
2
+ export default function useragentPlugin(): EventPayloadParamsProvider;
@@ -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,2 @@
1
+ import vkBridgeTransportPlugin from './vkbridge-transport';
2
+ export default vkBridgeTransportPlugin;
@@ -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,3 @@
1
+ import { EventTransport } from '../common/plugin-interfaces';
2
+ export declare const ERROR_NO_VK_BRIDGE = "initErrorNoVKBridge";
3
+ export default function vkbridgeTransportPlugin(): EventTransport;
@@ -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,2 @@
1
+ import VKMALaunchPlugin from './vkma-launch';
2
+ export default VKMALaunchPlugin;
@@ -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"}
@@ -0,0 +1,9 @@
1
+ declare const _default: {
2
+ launchEventParams: (href: string) => {
3
+ [key: string]: string;
4
+ };
5
+ eventProviderParams: (href: string) => {
6
+ [key: string]: string;
7
+ };
8
+ };
9
+ export default _default;