Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/batchUploader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,15 +257,15 @@ export class BatchUploader {
return;
}

const { verbose } = this.mpInstance.Logger;
const { Logger } = this.mpInstance;

this.eventsQueuedForProcessing.push(event);
if (this.offlineStorageEnabled && this.eventVault) {
this.eventVault.store(this.eventsQueuedForProcessing);
}

verbose(`Queuing event: ${JSON.stringify(event)}`);
verbose(`Queued event count: ${this.eventsQueuedForProcessing.length}`);
Logger.verbose(`Queuing event: ${JSON.stringify(event)}`);
Logger.verbose(`Queued event count: ${this.eventsQueuedForProcessing.length}`);

if (this.shouldTriggerImmediateUpload(event.EventDataType)) {
this.prepareAndUpload(false, false);
Expand Down
23 changes: 11 additions & 12 deletions src/identityApiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ export default function IdentityAPIClient(
aliasRequest: IAliasRequest,
aliasCallback: IAliasCallback
) {
const { verbose, error } = mpInstance.Logger;
const { Logger } = mpInstance;
const { invokeAliasCallback } = mpInstance._Helpers;
const { aliasUrl } = mpInstance._Store.SDKConfig;
const { devToken: apiKey } = mpInstance._Store;

verbose(Messages.InformationMessages.SendAliasHttp);
Logger.verbose(Messages.InformationMessages.SendAliasHttp);

// https://go.mparticle.com/work/SQDSDKS-6750
const uploadUrl = `https://${aliasUrl}${apiKey}/Alias`;
Expand Down Expand Up @@ -136,7 +136,7 @@ export default function IdentityAPIClient(
try {
aliasResponseBody = await response.json();
} catch (e) {
verbose('The request has no response body');
Logger.verbose('The request has no response body');
}
} else {
// https://go.mparticle.com/work/SQDSDKS-6568
Expand Down Expand Up @@ -171,11 +171,11 @@ export default function IdentityAPIClient(

}

verbose(message);
Logger.verbose(message);
invokeAliasCallback(aliasCallback, response.status, errorMessage);
} catch (e) {
const errorMessage = (e as Error).message || e.toString();
error('Error sending alias request to mParticle servers. ' + errorMessage);
Logger.error('Error sending alias request to mParticle servers. ' + errorMessage);
invokeAliasCallback(
aliasCallback,
HTTPCodes.noHttpCoverage,
Expand All @@ -193,15 +193,14 @@ export default function IdentityAPIClient(
mpid: MPID,
knownIdentities: UserIdentities
) {
const { verbose, error } = mpInstance.Logger;
const { invokeCallback } = mpInstance._Helpers;

verbose(Messages.InformationMessages.SendIdentityBegin);
const { Logger } = mpInstance;
Logger.verbose(Messages.InformationMessages.SendIdentityBegin);
if (!identityApiRequest) {
error(Messages.ErrorMessages.APIRequestEmpty);
Logger.error(Messages.ErrorMessages.APIRequestEmpty);
return;
}
verbose(Messages.InformationMessages.SendIdentityHttp);
Logger.verbose(Messages.InformationMessages.SendIdentityHttp);

if (mpInstance._Store.identityCallInFlight) {
invokeCallback(
Expand Down Expand Up @@ -289,7 +288,7 @@ export default function IdentityAPIClient(

mpInstance._Store.identityCallInFlight = false;

verbose(message);
Logger.verbose(message);
parseIdentityResponse(
identityResponse,
previousMPID,
Expand All @@ -304,7 +303,7 @@ export default function IdentityAPIClient(

const errorMessage = (err as Error).message || err.toString();

error('Error sending identity request to servers' + ' - ' + errorMessage);
Logger.error('Error sending identity request to servers' + ' - ' + errorMessage);
invokeCallback(
callback,
HTTPCodes.noHttpCoverage,
Expand Down
61 changes: 0 additions & 61 deletions src/logger.js

This file was deleted.

66 changes: 66 additions & 0 deletions src/logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { LogLevelType, SDKInitConfig, SDKLoggerApi } from './sdkRuntimeModels';

export type ILoggerConfig = Pick<SDKInitConfig, 'logLevel' | 'logger'>;
export type IConsoleLogger = Partial<Pick<SDKLoggerApi, 'error' | 'warning' | 'verbose'>>;

export class Logger {
private logLevel: LogLevelType;
private logger: IConsoleLogger;

constructor(config: ILoggerConfig) {
this.logLevel = config.logLevel ?? LogLevelType.Warning;
this.logger = config.logger ?? new ConsoleLogger();
}

public verbose(msg: string): void {
if(this.logLevel === LogLevelType.None)
return;

if (this.logger.verbose && this.logLevel === LogLevelType.Verbose) {
this.logger.verbose(msg);
}
}

public warning(msg: string): void {
if(this.logLevel === LogLevelType.None)
return;

if (this.logger.warning &&
(this.logLevel === LogLevelType.Verbose || this.logLevel === LogLevelType.Warning)) {
this.logger.warning(msg);
}
}

public error(msg: string): void {
if(this.logLevel === LogLevelType.None)
return;

if (this.logger.error) {
this.logger.error(msg);
}
}

public setLogLevel(newLogLevel: LogLevelType): void {
this.logLevel = newLogLevel;
}
}

export class ConsoleLogger implements IConsoleLogger {
public verbose(msg: string): void {
if (console && console.info) {
console.info(msg);
}
}

public error(msg: string): void {
if (console && console.error) {
console.error(msg);
}
}

public warning(msg: string): void {
if (console && console.warn) {
console.warn(msg);
}
}
}
3 changes: 2 additions & 1 deletion src/mp-instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import CookieSyncManager, { ICookieSyncManager } from './cookieSyncManager';
import SessionManager, { ISessionManager } from './sessionManager';
import Ecommerce from './ecommerce';
import Store, { IStore } from './store';
import Logger from './logger';
import { Logger } from './logger';
import Persistence from './persistence';
import Events from './events';
import Forwarders from './forwarders';
Expand Down Expand Up @@ -227,6 +227,7 @@ export default function mParticleInstance(this: IMParticleWebSDKInstance, instan
if (instance._Store) {
delete instance._Store;
}
instance.Logger = new Logger(config);
instance._Store = new Store(config, instance);
instance._Store.isLocalStorageAvailable = instance._Persistence.determineLocalStorageAvailability(
window.localStorage
Expand Down
10 changes: 9 additions & 1 deletion src/sdkRuntimeModels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import { SDKECommerceAPI } from './ecommerce.interfaces';
import { IErrorLogMessage, IMParticleWebSDKInstance, IntegrationDelays } from './mp-instance';
import Constants from './constants';
import RoktManager, { IRoktLauncherOptions } from './roktManager';
import { IConsoleLogger } from './logger';

// TODO: Resolve this with version in @mparticle/web-sdk
export type SDKEventCustomFlags = Dictionary<any>;
Expand Down Expand Up @@ -259,7 +260,13 @@ export interface IMParticleInstanceManager extends MParticleWebSDK {
export type BooleanStringLowerCase = 'false' | 'true';
export type BooleanStringTitleCase = 'False' | 'True';

export type LogLevelType = 'none' | 'verbose' | 'warning' | 'error';
export type LogLevelType = (typeof LogLevelType)[keyof typeof LogLevelType];
export const LogLevelType = {
None: 'none',
Verbose: 'verbose',
Warning: 'warning',
Error: 'error',
} as const;

// TODO: This should eventually be moved into wherever init logic lives
// TODO: Replace/Merge this with MPConfiguration in @types/mparticle__web-sdk
Expand Down Expand Up @@ -306,6 +313,7 @@ export interface SDKInitConfig
launcherOptions?: IRoktLauncherOptions;

rq?: Function[] | any[];
logger?: IConsoleLogger;
}

export interface DataPlanConfig {
Expand Down
Loading
Loading