Skip to content

Commit cc990a6

Browse files
refactor: replace SDKLoggerApi with ILogger interface
Define proper ILogger and IConsoleLogger interfaces in logger.ts and have Logger/ConsoleLogger implement them directly. SDKLoggerApi is retained as a deprecated type alias for backwards compatibility. Updates all consumers (audienceManager, batchUploader, roktManager) and tests to import ILogger from logger.ts.
1 parent 79184e0 commit cc990a6

6 files changed

Lines changed: 33 additions & 24 deletions

File tree

src/audienceManager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { SDKLoggerApi } from './sdkRuntimeModels';
1+
import { ILogger } from './logger';
22
import {
33
FetchUploader,
44
XHRUploader,
@@ -21,12 +21,12 @@ export interface IAudienceMemberships {
2121
export default class AudienceManager {
2222
public url: string = '';
2323
public userAudienceAPI: AsyncUploader;
24-
public logger: SDKLoggerApi;
24+
public logger: ILogger;
2525

2626
constructor(
2727
userAudienceUrl: string,
2828
apiKey: string,
29-
logger: SDKLoggerApi,
29+
logger: ILogger,
3030
) {
3131
this.logger = logger;
3232
this.url = `https://${userAudienceUrl}${apiKey}/audience`;

src/batchUploader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Batch } from '@mparticle/event-models';
22
import Constants from './constants';
33
import { SDKEvent, SDKEventCustomFlags } from './sdkRuntimeModels';
4-
import { convertEvents } from './sdkToEventsApiConverter';
4+
import { convertEvents} from './sdkToEventsApiConverter';
55
import { MessageType, EventType } from './types';
66
import { getRampNumber, isEmpty, obfuscateDevData } from './utils';
77
import { SessionStorageVault, LocalStorageVault } from './vault';

src/logger.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
1-
import { LogLevelType, SDKInitConfig, SDKLoggerApi } from './sdkRuntimeModels';
1+
import { LogLevelType, SDKInitConfig } from './sdkRuntimeModels';
2+
import { ReportingLogger } from './logging/reportingLogger';
3+
import { ErrorCodes } from './logging/types';
4+
5+
export interface ILogger {
6+
error(msg: string, code?: ErrorCodes): void;
7+
verbose(msg: string): void;
8+
warning(msg: string): void;
9+
setLogLevel(logLevel: LogLevelType): void;
10+
}
11+
12+
export interface IConsoleLogger {
13+
error?(msg: string): void;
14+
verbose?(msg: string): void;
15+
warning?(msg: string): void;
16+
}
217

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

6-
export class Logger {
20+
export class Logger implements ILogger {
721
private logLevel: LogLevelType;
822
private logger: IConsoleLogger;
923

src/roktManager.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
obfuscateDevData,
1313
} from "./utils";
1414
import { SDKIdentityApi } from "./identity.interfaces";
15-
import { SDKLoggerApi } from "./sdkRuntimeModels";
15+
import { ILogger } from "./logger";
1616
import { IStore, LocalSessionAttributes } from "./store";
1717
import { UserIdentities } from "@mparticle/web-sdk";
1818
import { IdentityType, PerformanceMarkType } from "./types";
@@ -108,7 +108,7 @@ export default class RoktManager {
108108
private identityService: SDKIdentityApi;
109109
private store: IStore;
110110
private launcherOptions?: IRoktLauncherOptions;
111-
private logger: SDKLoggerApi;
111+
private logger: ILogger;
112112
private errorReporter: IErrorReportingService;
113113
private loggingService: ILoggingService;
114114
private domain?: string;
@@ -130,7 +130,7 @@ export default class RoktManager {
130130
* @param {IKitConfigs} roktConfig - Configuration object containing user attribute filters and settings
131131
* @param {IMParticleUser} filteredUser - User object with filtered attributes
132132
* @param {SDKIdentityApi} identityService - The mParticle Identity instance
133-
* @param {SDKLoggerApi} logger - The mParticle Logger instance
133+
* @param {ILogger} logger - The mParticle Logger instance
134134
* @param {IRoktOptions} options - Options for the RoktManager
135135
* @param {Function} captureTiming - Function to capture performance timing marks
136136
* @param {IErrorReportingService} errorReporter - Dispatcher for error/warning reporting
@@ -143,7 +143,7 @@ export default class RoktManager {
143143
filteredUser: IMParticleUser,
144144
identityService: SDKIdentityApi,
145145
store: IStore,
146-
logger?: SDKLoggerApi,
146+
logger?: ILogger,
147147
options?: IRoktOptions,
148148
captureTiming?: (metricsName: string) => void,
149149
errorReporter?: IErrorReportingService,

src/sdkRuntimeModels.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import {
5050
} from './mp-instance';
5151
import Constants from './constants';
5252
import RoktManager, { IRoktLauncherOptions } from './roktManager';
53-
import { IConsoleLogger } from './logger';
53+
import { IConsoleLogger, ILogger } from './logger';
5454
import { ErrorCodes, IErrorReportingService, ILoggingService } from './reporting/types';
5555

5656
// TODO: Resolve this with version in @mparticle/web-sdk
@@ -185,7 +185,7 @@ export interface MParticleWebSDK {
185185
PromotionType: typeof PromotionActionType;
186186
ProductActionType: typeof ProductActionType;
187187
Identity: SDKIdentityApi;
188-
Logger: SDKLoggerApi;
188+
Logger: ILogger;
189189
Consent: SDKConsentApi;
190190
_resetForTests(
191191
MPConfig?: SDKInitConfig,
@@ -392,13 +392,8 @@ export interface SDKHelpersApi {
392392
Validators: typeof Validators;
393393
}
394394

395-
export interface SDKLoggerApi {
396-
error(msg: string, code?: ErrorCodes): void;
397-
verbose(msg: string): void;
398-
warning(msg: string): void;
399-
isVerbose(): boolean;
400-
setLogLevel(logLevel: LogLevelType): void;
401-
}
395+
/** @deprecated Use {@link ILogger} from './logger' instead */
396+
export type SDKLoggerApi = ILogger;
402397

403398
// TODO: Merge this with IStore in store.ts
404399
export interface SDKStoreApi {

test/src/tests-audience-manager.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import fetchMock from 'fetch-mock/esm/client';
33
import { expect } from 'chai';
44
import { urls, apiKey, testMPID, MPConfig } from './config/constants';
55
import Constants from '../../src/constants';
6-
import { IMParticleInstanceManager, SDKLoggerApi } from '../../src/sdkRuntimeModels';
6+
import { IMParticleInstanceManager } from '../../src/sdkRuntimeModels';
77
import AudienceManager, {
88
IAudienceMemberships, IAudienceMembershipsServerResponse
99
} from '../../src/audienceManager';
10-
import { Logger } from '../../src/logger';
10+
import { ILogger, Logger } from '../../src/logger';
1111
import Utils from './config/utils';
1212
const { fetchMockSuccess } = Utils;
1313

@@ -35,7 +35,7 @@ describe('AudienceManager', () => {
3535

3636
describe('initialization', () => {
3737
it('should have proper properties on AudienceManager', () => {
38-
const newLogger: SDKLoggerApi = new Logger(window.mParticle.config);
38+
const newLogger: ILogger = new Logger(window.mParticle.config);
3939
const audienceManager = new AudienceManager(
4040
Constants.DefaultBaseUrls.userAudienceUrl,
4141
apiKey,
@@ -49,7 +49,7 @@ describe('AudienceManager', () => {
4949
});
5050

5151
describe('#sendGetUserAudienceRequest', () => {
52-
let newLogger: SDKLoggerApi;
52+
let newLogger: ILogger;
5353
let audienceManager: AudienceManager;
5454
beforeEach(() => {
5555
newLogger = new Logger(window.mParticle.config);

0 commit comments

Comments
 (0)