@mparticle/web-sdk 2.60.1 → 2.62.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/dist/mparticle.common.js +22 -22
- package/dist/mparticle.esm.js +22 -22
- package/dist/mparticle.js +118 -173
- package/dist/types/src/apiClient.d.ts +34 -0
- package/dist/types/src/audience.d.ts +4 -0
- package/dist/types/src/audienceManager.d.ts +19 -0
- package/dist/types/src/batchUploader.d.ts +72 -0
- package/dist/types/src/configAPIClient.d.ts +68 -0
- package/dist/types/src/consent.d.ts +71 -0
- package/dist/types/src/constants.d.ts +201 -0
- package/dist/types/src/cookieConsentManager.d.ts +50 -0
- package/dist/types/src/cookieSyncManager.d.ts +34 -0
- package/dist/types/src/ecommerce.d.ts +52 -0
- package/dist/types/src/ecommerce.interfaces.d.ts +78 -0
- package/dist/types/src/events.d.ts +17 -0
- package/dist/types/src/events.interfaces.d.ts +21 -0
- package/dist/types/src/filteredMparticleUser.d.ts +8 -0
- package/dist/types/src/foregroundTimeTracker.d.ts +21 -0
- package/dist/types/src/forwarders.d.ts +26 -0
- package/dist/types/src/forwarders.interfaces.d.ts +59 -0
- package/dist/types/src/forwardingStatsUploader.d.ts +5 -0
- package/dist/types/src/helpers.d.ts +54 -0
- package/dist/types/src/identity-user-interfaces.d.ts +106 -0
- package/dist/types/src/identity-utils.d.ts +36 -0
- package/dist/types/src/identity.interfaces.d.ts +117 -0
- package/dist/types/src/identityApiClient.d.ts +14 -0
- package/dist/types/src/integrationCapture.d.ts +83 -0
- package/dist/types/src/internal-types.d.ts +20 -0
- package/dist/types/src/kitBlocking.d.ts +116 -0
- package/dist/types/src/kitFilterHelper.d.ts +15 -0
- package/dist/types/src/logger.d.ts +18 -0
- package/dist/types/src/mockBatchCreator.d.ts +7 -0
- package/dist/types/src/mp-instance.d.ts +76 -0
- package/dist/types/src/mparticle-instance-manager.d.ts +2 -0
- package/dist/types/src/nativeSdkHelpers.d.ts +12 -0
- package/dist/types/src/nativeSdkHelpers.interfaces.d.ts +10 -0
- package/dist/types/src/persistence.d.ts +44 -0
- package/dist/types/src/persistence.interfaces.d.ts +73 -0
- package/dist/types/src/polyfill.d.ts +15 -0
- package/dist/types/src/pre-init-utils.d.ts +11 -0
- package/dist/types/src/public-types.d.ts +23 -0
- package/dist/types/src/reporting/errorReportingDispatcher.d.ts +8 -0
- package/dist/types/src/reporting/loggingDispatcher.d.ts +8 -0
- package/dist/types/src/reporting/types.d.ts +37 -0
- package/dist/types/src/roktManager.d.ts +176 -0
- package/dist/types/src/sdkRuntimeModels.d.ts +319 -0
- package/dist/types/src/sdkToEventsApiConverter.d.ts +43 -0
- package/dist/types/src/serverModel.d.ts +105 -0
- package/dist/types/src/sessionManager.d.ts +16 -0
- package/dist/types/src/sideloadedKit.d.ts +30 -0
- package/dist/types/src/store.d.ts +157 -0
- package/dist/types/src/stub/mparticle.stub.d.ts +182 -0
- package/dist/types/src/types.d.ts +154 -0
- package/dist/types/src/uploaders.d.ts +21 -0
- package/dist/types/src/user-utils.d.ts +5 -0
- package/dist/types/src/utils.d.ts +82 -0
- package/dist/types/src/validators.d.ts +18 -0
- package/dist/types/src/vault.d.ts +41 -0
- package/package.json +16 -3
- package/src/apiClient.ts +1 -1
- package/src/constants.ts +0 -4
- package/src/forwarders.interfaces.ts +42 -0
- package/src/identityApiClient.ts +9 -6
- package/src/internal-types.ts +66 -0
- package/src/logger.ts +3 -12
- package/src/mp-instance.ts +28 -15
- package/src/mparticle-instance-manager.ts +6 -0
- package/src/public-types.ts +84 -0
- package/src/reporting/errorReportingDispatcher.ts +21 -0
- package/src/reporting/loggingDispatcher.ts +21 -0
- package/src/reporting/types.ts +45 -0
- package/src/roktManager.ts +32 -6
- package/src/sdkRuntimeModels.ts +3 -1
- package/src/serverModel.ts +1 -1
- package/src/store.ts +1 -3
- package/src/logging/reportingLogger.ts +0 -192
- package/src/logging/types.ts +0 -32
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { ErrorCodes, LogRequestBody, WSDKErrorSeverity } from "./types";
|
|
2
|
-
import { FetchUploader, IFetchPayload } from "../uploaders";
|
|
3
|
-
import { IStore, SDKConfig } from "../store";
|
|
4
|
-
import { SDKInitConfig } from "../sdkRuntimeModels";
|
|
5
|
-
import Constants from "../constants";
|
|
6
|
-
|
|
7
|
-
// Header key constants
|
|
8
|
-
const HEADER_ACCEPT = 'Accept' as const;
|
|
9
|
-
const HEADER_CONTENT_TYPE = 'Content-Type' as const;
|
|
10
|
-
const HEADER_ROKT_LAUNCHER_VERSION = 'rokt-launcher-version' as const;
|
|
11
|
-
const HEADER_ROKT_LAUNCHER_INSTANCE_GUID = 'rokt-launcher-instance-guid' as const;
|
|
12
|
-
const HEADER_ROKT_WSDK_VERSION = 'rokt-wsdk-version' as const;
|
|
13
|
-
|
|
14
|
-
interface IReportingLoggerPayload extends IFetchPayload {
|
|
15
|
-
headers: IFetchPayload['headers'] & {
|
|
16
|
-
[HEADER_ROKT_LAUNCHER_INSTANCE_GUID]?: string;
|
|
17
|
-
[HEADER_ROKT_LAUNCHER_VERSION]: string;
|
|
18
|
-
[HEADER_ROKT_WSDK_VERSION]: string;
|
|
19
|
-
};
|
|
20
|
-
body: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export class ReportingLogger {
|
|
24
|
-
private readonly isEnabled: boolean;
|
|
25
|
-
private readonly reporter: string = 'mp-wsdk';
|
|
26
|
-
private readonly rateLimiter: IRateLimiter;
|
|
27
|
-
private store: IStore | null;
|
|
28
|
-
private readonly loggingUrl: string;
|
|
29
|
-
private readonly errorUrl: string;
|
|
30
|
-
private readonly isLoggingEnabled: boolean;
|
|
31
|
-
|
|
32
|
-
constructor(
|
|
33
|
-
config: SDKConfig | SDKInitConfig | any,
|
|
34
|
-
private readonly sdkVersion: string,
|
|
35
|
-
store?: IStore,
|
|
36
|
-
private readonly launcherInstanceGuid?: string,
|
|
37
|
-
rateLimiter?: IRateLimiter,
|
|
38
|
-
) {
|
|
39
|
-
this.loggingUrl = `https://${config.loggingUrl || Constants.DefaultBaseUrls.loggingUrl}`;
|
|
40
|
-
this.errorUrl = `https://${config.errorUrl || Constants.DefaultBaseUrls.errorUrl}`;
|
|
41
|
-
this.isLoggingEnabled = config.isLoggingEnabled || false;
|
|
42
|
-
this.store = store ?? null;
|
|
43
|
-
this.isEnabled = this.isReportingEnabled();
|
|
44
|
-
this.rateLimiter = rateLimiter ?? new RateLimiter();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public setStore(store: IStore): void {
|
|
48
|
-
this.store = store;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
public info(msg: string, code?: ErrorCodes) {
|
|
52
|
-
this.sendLog(WSDKErrorSeverity.INFO, msg, code);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public error(msg: string, code?: ErrorCodes, stackTrace?: string) {
|
|
56
|
-
this.sendError(WSDKErrorSeverity.ERROR, msg, code, stackTrace);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public warning(msg: string, code?: ErrorCodes) {
|
|
60
|
-
this.sendError(WSDKErrorSeverity.WARNING, msg, code);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
private sendToServer(url: string, severity: WSDKErrorSeverity, msg: string, code?: ErrorCodes, stackTrace?: string): void {
|
|
64
|
-
if (!this.canSendLog(severity))
|
|
65
|
-
return;
|
|
66
|
-
|
|
67
|
-
try {
|
|
68
|
-
const logRequest = this.buildLogRequest(severity, msg, code, stackTrace);
|
|
69
|
-
const uploader = new FetchUploader(url);
|
|
70
|
-
const payload: IReportingLoggerPayload = {
|
|
71
|
-
method: 'POST',
|
|
72
|
-
headers: this.getHeaders(),
|
|
73
|
-
body: JSON.stringify(logRequest),
|
|
74
|
-
};
|
|
75
|
-
uploader.upload(payload).catch((error) => {
|
|
76
|
-
console.error('ReportingLogger: Failed to send log', error);
|
|
77
|
-
});
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.error('ReportingLogger: Failed to send log', error);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
private sendLog(severity: WSDKErrorSeverity, msg: string, code?: ErrorCodes, stackTrace?: string): void {
|
|
84
|
-
this.sendToServer(this.loggingUrl, severity, msg, code, stackTrace);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
private sendError(severity: WSDKErrorSeverity, msg: string, code?: ErrorCodes, stackTrace?: string): void {
|
|
88
|
-
this.sendToServer(this.errorUrl, severity, msg, code, stackTrace);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private buildLogRequest(severity: WSDKErrorSeverity, msg: string, code?: ErrorCodes, stackTrace?: string): LogRequestBody {
|
|
92
|
-
return {
|
|
93
|
-
additionalInformation: {
|
|
94
|
-
message: msg,
|
|
95
|
-
version: this.getVersion(),
|
|
96
|
-
},
|
|
97
|
-
severity: severity,
|
|
98
|
-
code: code ?? ErrorCodes.UNKNOWN_ERROR,
|
|
99
|
-
url: this.getUrl(),
|
|
100
|
-
deviceInfo: this.getUserAgent(),
|
|
101
|
-
stackTrace: stackTrace,
|
|
102
|
-
reporter: this.reporter,
|
|
103
|
-
// Integration will be set to integrationName once the kit connects via RoktManager.attachKit()
|
|
104
|
-
integration: this.store?.getIntegrationName() ?? 'mp-wsdk'
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
private getVersion(): string {
|
|
109
|
-
return this.store?.getIntegrationName?.() ?? `mParticle_wsdkv_${this.sdkVersion}`;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
private isReportingEnabled(): boolean {
|
|
113
|
-
return this.isDebugModeEnabled() ||
|
|
114
|
-
(this.isRoktDomainPresent() && this.isFeatureFlagEnabled());
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
private isRoktDomainPresent(): boolean {
|
|
118
|
-
return typeof window !== 'undefined' && Boolean(window['ROKT_DOMAIN']);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
private isFeatureFlagEnabled = (): boolean => this.isLoggingEnabled;
|
|
122
|
-
|
|
123
|
-
private isDebugModeEnabled(): boolean {
|
|
124
|
-
return (
|
|
125
|
-
typeof window !== 'undefined' &&
|
|
126
|
-
(window.
|
|
127
|
-
location?.
|
|
128
|
-
search?.
|
|
129
|
-
toLowerCase()?.
|
|
130
|
-
includes('mp_enable_logging=true') ?? false)
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
private canSendLog(severity: WSDKErrorSeverity): boolean {
|
|
135
|
-
return this.isEnabled && !this.isRateLimited(severity);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
private isRateLimited(severity: WSDKErrorSeverity): boolean {
|
|
139
|
-
return this.rateLimiter.incrementAndCheck(severity);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
private getUrl(): string | undefined {
|
|
143
|
-
return typeof window !== 'undefined' ? window.location?.href : undefined;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
private getUserAgent(): string | undefined {
|
|
147
|
-
return typeof window !== 'undefined' ? window.navigator?.userAgent : undefined;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
private getHeaders(): IReportingLoggerPayload['headers'] {
|
|
151
|
-
const headers: IReportingLoggerPayload['headers'] = {
|
|
152
|
-
[HEADER_ACCEPT]: 'text/plain;charset=UTF-8',
|
|
153
|
-
[HEADER_CONTENT_TYPE]: 'application/json',
|
|
154
|
-
[HEADER_ROKT_LAUNCHER_VERSION]: this.getVersion(),
|
|
155
|
-
[HEADER_ROKT_WSDK_VERSION]: 'joint',
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
if (this.launcherInstanceGuid) {
|
|
159
|
-
headers[HEADER_ROKT_LAUNCHER_INSTANCE_GUID] = this.launcherInstanceGuid;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const accountId = this.store?.getRoktAccountId?.();
|
|
163
|
-
if (accountId) {
|
|
164
|
-
headers['rokt-account-id'] = accountId;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return headers;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export interface IRateLimiter {
|
|
172
|
-
incrementAndCheck(severity: WSDKErrorSeverity): boolean;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export class RateLimiter implements IRateLimiter {
|
|
176
|
-
private readonly rateLimits: Map<WSDKErrorSeverity, number> = new Map([
|
|
177
|
-
[WSDKErrorSeverity.ERROR, 10],
|
|
178
|
-
[WSDKErrorSeverity.WARNING, 10],
|
|
179
|
-
[WSDKErrorSeverity.INFO, 10],
|
|
180
|
-
]);
|
|
181
|
-
private logCount: Map<WSDKErrorSeverity, number> = new Map();
|
|
182
|
-
|
|
183
|
-
public incrementAndCheck(severity: WSDKErrorSeverity): boolean {
|
|
184
|
-
const count = this.logCount.get(severity) || 0;
|
|
185
|
-
const limit = this.rateLimits.get(severity) || 10;
|
|
186
|
-
|
|
187
|
-
const newCount = count + 1;
|
|
188
|
-
this.logCount.set(severity, newCount);
|
|
189
|
-
|
|
190
|
-
return newCount > limit;
|
|
191
|
-
}
|
|
192
|
-
}
|
package/src/logging/types.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { valueof } from '../utils';
|
|
2
|
-
|
|
3
|
-
export const ErrorCodes = {
|
|
4
|
-
UNKNOWN_ERROR: 'UNKNOWN_ERROR',
|
|
5
|
-
UNHANDLED_EXCEPTION: 'UNHANDLED_EXCEPTION',
|
|
6
|
-
IDENTITY_REQUEST: 'IDENTITY_REQUEST',
|
|
7
|
-
} as const;
|
|
8
|
-
|
|
9
|
-
export type ErrorCodes = valueof<typeof ErrorCodes>;
|
|
10
|
-
|
|
11
|
-
export type ErrorCode = ErrorCodes | string;
|
|
12
|
-
|
|
13
|
-
export const WSDKErrorSeverity = {
|
|
14
|
-
ERROR: 'ERROR',
|
|
15
|
-
INFO: 'INFO',
|
|
16
|
-
WARNING: 'WARNING',
|
|
17
|
-
} as const;
|
|
18
|
-
|
|
19
|
-
export type WSDKErrorSeverity = (typeof WSDKErrorSeverity)[keyof typeof WSDKErrorSeverity];
|
|
20
|
-
|
|
21
|
-
export type ErrorsRequestBody = {
|
|
22
|
-
additionalInformation?: Record<string, string>;
|
|
23
|
-
code: ErrorCode;
|
|
24
|
-
severity: WSDKErrorSeverity;
|
|
25
|
-
stackTrace?: string;
|
|
26
|
-
deviceInfo?: string;
|
|
27
|
-
integration?: string;
|
|
28
|
-
reporter?: string;
|
|
29
|
-
url?: string;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export type LogRequestBody = ErrorsRequestBody;
|