Skip to content

Commit a30ba2f

Browse files
mattbodleclaude
andcommitted
chore: merge origin/main into feat/typescript-vite-vitest-migration
Resolves modify/delete conflicts by keeping src/Rokt-Kit.js and test/src/tests.js deleted — replaced by their TypeScript equivalents in this branch. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2 parents 064d058 + c880d33 commit a30ba2f

5 files changed

Lines changed: 574 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# [1.22.0](https://github.com/mparticle-integrations/mparticle-javascript-integration-rokt/compare/v1.21.0...v1.22.0) (2026-04-07)
2+
3+
4+
### Features
5+
6+
* implement Rokt reporting service in kit ([#70](https://github.com/mparticle-integrations/mparticle-javascript-integration-rokt/issues/70)) ([efb8905](https://github.com/mparticle-integrations/mparticle-javascript-integration-rokt/commit/efb8905155db9a9fb580f15c4b196cdd51aecd2c))
7+
18
# [1.21.0](https://github.com/mparticle-integrations/mparticle-javascript-integration-rokt/compare/v1.20.0...v1.21.0) (2026-04-03)
29

310

dist/Rokt-Kit.common.js

Lines changed: 282 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,43 @@ var constructor = function () {
262262

263263
self.domain = domain;
264264

265+
// Register reporting services with the core SDK
266+
var reportingConfig = {
267+
loggingUrl: settings.loggingUrl,
268+
errorUrl: settings.errorUrl,
269+
isLoggingEnabled:
270+
settings.isLoggingEnabled === 'true' ||
271+
settings.isLoggingEnabled === true,
272+
};
273+
var errorReportingService = new ErrorReportingService(
274+
reportingConfig,
275+
self.integrationName,
276+
window.__rokt_li_guid__,
277+
settings.accountId
278+
);
279+
var loggingService = new LoggingService(
280+
reportingConfig,
281+
errorReportingService,
282+
self.integrationName,
283+
window.__rokt_li_guid__,
284+
settings.accountId
285+
);
286+
287+
self.errorReportingService = errorReportingService;
288+
self.loggingService = loggingService;
289+
290+
if (
291+
window.mParticle &&
292+
window.mParticle._registerErrorReportingService
293+
) {
294+
window.mParticle._registerErrorReportingService(
295+
errorReportingService
296+
);
297+
}
298+
if (window.mParticle && window.mParticle._registerLoggingService) {
299+
window.mParticle._registerLoggingService(loggingService);
300+
}
301+
265302
if (testMode) {
266303
self.testHelpers = {
267304
generateLauncherScript: generateLauncherScript,
@@ -277,6 +314,12 @@ var constructor = function () {
277314
setAllowedOriginHashes: function (hashes) {
278315
_allowedOriginHashes = hashes;
279316
},
317+
ReportingTransport: ReportingTransport,
318+
ErrorReportingService: ErrorReportingService,
319+
LoggingService: LoggingService,
320+
RateLimiter: RateLimiter,
321+
ErrorCodes: ErrorCodes,
322+
WSDKErrorSeverity: WSDKErrorSeverity,
280323
};
281324
attachLauncher(accountId, launcherOptions);
282325
return;
@@ -877,7 +920,7 @@ var constructor = function () {
877920

878921
function generateIntegrationName(customIntegrationName) {
879922
var coreSdkVersion = window.mParticle.getVersion();
880-
var kitVersion = "1.21.0";
923+
var kitVersion = "1.22.0";
881924
var name = 'mParticle_' + 'wsdkv_' + coreSdkVersion + '_kitv_' + kitVersion;
882925

883926
if (customIntegrationName) {
@@ -987,6 +1030,225 @@ function isString(value) {
9871030
return typeof value === 'string';
9881031
}
9891032

1033+
// --- Reporting Services ---
1034+
1035+
var ErrorCodes = {
1036+
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
1037+
UNHANDLED_EXCEPTION: 'UNHANDLED_EXCEPTION',
1038+
IDENTITY_REQUEST: 'IDENTITY_REQUEST',
1039+
};
1040+
1041+
var WSDKErrorSeverity = {
1042+
ERROR: 'ERROR',
1043+
INFO: 'INFO',
1044+
WARNING: 'WARNING',
1045+
};
1046+
1047+
var DEFAULT_LOGGING_URL = 'apps.rokt-api.com/v1/log';
1048+
var DEFAULT_ERROR_URL = 'apps.rokt-api.com/v1/errors';
1049+
var RATE_LIMIT_PER_SEVERITY = 10;
1050+
1051+
function RateLimiter() {
1052+
this._logCount = {};
1053+
}
1054+
1055+
RateLimiter.prototype.incrementAndCheck = function (severity) {
1056+
var count = this._logCount[severity] || 0;
1057+
var newCount = count + 1;
1058+
this._logCount[severity] = newCount;
1059+
return newCount > RATE_LIMIT_PER_SEVERITY;
1060+
};
1061+
1062+
// --- ReportingTransport: shared transport layer for reporting services ---
1063+
1064+
function ReportingTransport(
1065+
config,
1066+
integrationName,
1067+
launcherInstanceGuid,
1068+
accountId,
1069+
rateLimiter
1070+
) {
1071+
var self = this;
1072+
self._isLoggingEnabled = (config && config.isLoggingEnabled) || false;
1073+
self._integrationName = integrationName || '';
1074+
self._launcherInstanceGuid = launcherInstanceGuid;
1075+
self._accountId = accountId || null;
1076+
self._rateLimiter = rateLimiter || new RateLimiter();
1077+
self._reporter = 'mp-wsdk';
1078+
self._isEnabled = _isReportingEnabled(self);
1079+
}
1080+
1081+
ReportingTransport.prototype.send = function (
1082+
url,
1083+
severity,
1084+
msg,
1085+
code,
1086+
stackTrace,
1087+
onError
1088+
) {
1089+
if (!this._isEnabled || this._rateLimiter.incrementAndCheck(severity)) {
1090+
return;
1091+
}
1092+
1093+
try {
1094+
var logRequest = {
1095+
additionalInformation: {
1096+
message: msg,
1097+
version: this._integrationName || '',
1098+
},
1099+
severity: severity,
1100+
code: code || ErrorCodes.UNKNOWN_ERROR,
1101+
url: _getUrl(),
1102+
deviceInfo: _getUserAgent(),
1103+
stackTrace: stackTrace,
1104+
reporter: this._reporter,
1105+
integration: this._integrationName || '',
1106+
};
1107+
var headers = {
1108+
Accept: 'text/plain;charset=UTF-8',
1109+
'Content-Type': 'application/json',
1110+
'rokt-launcher-version': this._integrationName || '',
1111+
'rokt-wsdk-version': 'joint',
1112+
};
1113+
if (this._launcherInstanceGuid) {
1114+
headers['rokt-launcher-instance-guid'] = this._launcherInstanceGuid;
1115+
}
1116+
if (this._accountId) {
1117+
headers['rokt-account-id'] = this._accountId;
1118+
}
1119+
var payload = {
1120+
method: 'POST',
1121+
headers: headers,
1122+
body: JSON.stringify(logRequest),
1123+
};
1124+
fetch(url, payload).catch(function (error) {
1125+
console.error('ReportingTransport: Failed to send log', error);
1126+
if (onError) {
1127+
onError(error);
1128+
}
1129+
});
1130+
} catch (error) {
1131+
console.error('ReportingTransport: Failed to send log', error);
1132+
if (onError) {
1133+
onError(error);
1134+
}
1135+
}
1136+
};
1137+
1138+
function _isReportingEnabled(transport) {
1139+
return (
1140+
_isDebugModeEnabled() ||
1141+
(_isRoktDomainPresent() && transport._isLoggingEnabled)
1142+
);
1143+
}
1144+
1145+
function _isRoktDomainPresent() {
1146+
return typeof window !== 'undefined' && Boolean(window['ROKT_DOMAIN']);
1147+
}
1148+
1149+
function _isDebugModeEnabled() {
1150+
return (
1151+
typeof window !== 'undefined' &&
1152+
window.location &&
1153+
window.location.search &&
1154+
window.location.search
1155+
.toLowerCase()
1156+
.indexOf('mp_enable_logging=true') !== -1
1157+
);
1158+
}
1159+
1160+
function _getUrl() {
1161+
return typeof window !== 'undefined' && window.location
1162+
? window.location.href
1163+
: undefined;
1164+
}
1165+
1166+
function _getUserAgent() {
1167+
return typeof window !== 'undefined' && window.navigator
1168+
? window.navigator.userAgent
1169+
: undefined;
1170+
}
1171+
1172+
// --- ErrorReportingService: handles ERROR and WARNING severity ---
1173+
1174+
function ErrorReportingService(
1175+
config,
1176+
integrationName,
1177+
launcherInstanceGuid,
1178+
accountId,
1179+
rateLimiter
1180+
) {
1181+
this._transport = new ReportingTransport(
1182+
config,
1183+
integrationName,
1184+
launcherInstanceGuid,
1185+
accountId,
1186+
rateLimiter
1187+
);
1188+
this._errorUrl =
1189+
'https://' + ((config && config.errorUrl) || DEFAULT_ERROR_URL);
1190+
}
1191+
1192+
ErrorReportingService.prototype.report = function (error) {
1193+
if (!error) {
1194+
return;
1195+
}
1196+
var severity = error.severity || WSDKErrorSeverity.ERROR;
1197+
this._transport.send(
1198+
this._errorUrl,
1199+
severity,
1200+
error.message,
1201+
error.code,
1202+
error.stackTrace
1203+
);
1204+
};
1205+
1206+
// --- LoggingService: handles INFO severity ---
1207+
1208+
function LoggingService(
1209+
config,
1210+
errorReportingService,
1211+
integrationName,
1212+
launcherInstanceGuid,
1213+
accountId,
1214+
rateLimiter
1215+
) {
1216+
this._transport = new ReportingTransport(
1217+
config,
1218+
integrationName,
1219+
launcherInstanceGuid,
1220+
accountId,
1221+
rateLimiter
1222+
);
1223+
this._loggingUrl =
1224+
'https://' + ((config && config.loggingUrl) || DEFAULT_LOGGING_URL);
1225+
this._errorReportingService = errorReportingService;
1226+
}
1227+
1228+
LoggingService.prototype.log = function (entry) {
1229+
if (!entry) {
1230+
return;
1231+
}
1232+
var self = this;
1233+
self._transport.send(
1234+
self._loggingUrl,
1235+
WSDKErrorSeverity.INFO,
1236+
entry.message,
1237+
entry.code,
1238+
undefined,
1239+
function (error) {
1240+
if (self._errorReportingService) {
1241+
self._errorReportingService.report({
1242+
message:
1243+
'LoggingService: Failed to send log: ' + error.message,
1244+
code: ErrorCodes.UNKNOWN_ERROR,
1245+
severity: WSDKErrorSeverity.ERROR,
1246+
});
1247+
}
1248+
}
1249+
);
1250+
};
1251+
9901252
if (window && window.mParticle && window.mParticle.addForwarder) {
9911253
window.mParticle.addForwarder({
9921254
name: name,
@@ -997,8 +1259,26 @@ if (window && window.mParticle && window.mParticle.addForwarder) {
9971259

9981260
var RoktKit = {
9991261
register: register,
1262+
ReportingTransport: ReportingTransport,
1263+
ErrorReportingService: ErrorReportingService,
1264+
LoggingService: LoggingService,
1265+
RateLimiter: RateLimiter,
1266+
ErrorCodes: ErrorCodes,
1267+
WSDKErrorSeverity: WSDKErrorSeverity,
10001268
};
10011269
var RoktKit_1 = RoktKit.register;
1002-
1270+
var RoktKit_2 = RoktKit.ReportingTransport;
1271+
var RoktKit_3 = RoktKit.ErrorReportingService;
1272+
var RoktKit_4 = RoktKit.LoggingService;
1273+
var RoktKit_5 = RoktKit.RateLimiter;
1274+
var RoktKit_6 = RoktKit.ErrorCodes;
1275+
var RoktKit_7 = RoktKit.WSDKErrorSeverity;
1276+
1277+
exports.ErrorCodes = RoktKit_6;
1278+
exports.ErrorReportingService = RoktKit_3;
1279+
exports.LoggingService = RoktKit_4;
1280+
exports.RateLimiter = RoktKit_5;
1281+
exports.ReportingTransport = RoktKit_2;
1282+
exports.WSDKErrorSeverity = RoktKit_7;
10031283
exports.default = RoktKit;
10041284
exports.register = RoktKit_1;

0 commit comments

Comments
 (0)