Skip to content

Commit 4faf57f

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 02f44f6 commit 4faf57f

6 files changed

Lines changed: 33 additions & 25 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: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Batch } from '@mparticle/event-models';
22
import Constants from './constants';
3-
import { SDKEvent, SDKEventCustomFlags, SDKLoggerApi } from './sdkRuntimeModels';
3+
import { SDKEvent, SDKEventCustomFlags } from './sdkRuntimeModels';
4+
import { ILogger } from './logger';
45
import { convertEvents } from './sdkToEventsApiConverter';
56
import { MessageType, EventType } from './types';
67
import { getRampNumber, isEmpty } from './utils';
@@ -446,7 +447,7 @@ export class BatchUploader {
446447
// TODO: Refactor to use logger as a class method
447448
// https://go.mparticle.com/work/SQDSDKS-5167
448449
private async uploadBatches(
449-
logger: SDKLoggerApi,
450+
logger: ILogger,
450451
batches: Batch[],
451452
useBeacon: boolean
452453
): Promise<Batch[] | null> {

src/logger.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
import { LogLevelType, SDKInitConfig, SDKLoggerApi } from './sdkRuntimeModels';
1+
import { LogLevelType, SDKInitConfig } from './sdkRuntimeModels';
22
import { ReportingLogger } from './logging/reportingLogger';
33
import { ErrorCodes } from './logging/types';
44

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+
}
17+
518
export type ILoggerConfig = Pick<SDKInitConfig, 'logLevel' | 'logger'>;
6-
export type IConsoleLogger = Partial<Pick<SDKLoggerApi, 'error' | 'warning' | 'verbose'>>;
719

8-
export class Logger {
20+
export class Logger implements ILogger {
921
private logLevel: LogLevelType;
1022
private logger: IConsoleLogger;
1123
private reportingLogger: ReportingLogger;

src/roktManager.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
isEmpty,
1212
} from "./utils";
1313
import { SDKIdentityApi } from "./identity.interfaces";
14-
import { SDKLoggerApi } from "./sdkRuntimeModels";
14+
import { ILogger } from "./logger";
1515
import { IStore, LocalSessionAttributes } from "./store";
1616
import { UserIdentities } from "@mparticle/web-sdk";
1717
import { IdentityType, PerformanceMarkType } from "./types";
@@ -106,7 +106,7 @@ export default class RoktManager {
106106
private identityService: SDKIdentityApi;
107107
private store: IStore;
108108
private launcherOptions?: IRoktLauncherOptions;
109-
private logger: SDKLoggerApi;
109+
private logger: ILogger;
110110
private domain?: string;
111111
private mappedEmailShaIdentityType?: string | null;
112112
private captureTiming?: (metricsName: string) => void;
@@ -126,7 +126,7 @@ export default class RoktManager {
126126
* @param {IKitConfigs} roktConfig - Configuration object containing user attribute filters and settings
127127
* @param {IMParticleUser} filteredUser - User object with filtered attributes
128128
* @param {SDKIdentityApi} identityService - The mParticle Identity instance
129-
* @param {SDKLoggerApi} logger - The mParticle Logger instance
129+
* @param {ILogger} logger - The mParticle Logger instance
130130
* @param {IRoktOptions} options - Options for the RoktManager
131131
* @param {Function} captureTiming - Function to capture performance timing marks
132132
*
@@ -137,7 +137,7 @@ export default class RoktManager {
137137
filteredUser: IMParticleUser,
138138
identityService: SDKIdentityApi,
139139
store: IStore,
140-
logger?: SDKLoggerApi,
140+
logger?: ILogger,
141141
options?: IRoktOptions,
142142
captureTiming?: (metricsName: string) => void
143143
): void {

src/sdkRuntimeModels.ts

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

5655
// TODO: Resolve this with version in @mparticle/web-sdk
5756
export type SDKEventCustomFlags = Dictionary<any>;
@@ -185,7 +184,7 @@ export interface MParticleWebSDK {
185184
PromotionType: typeof PromotionActionType;
186185
ProductActionType: typeof ProductActionType;
187186
Identity: SDKIdentityApi;
188-
Logger: SDKLoggerApi;
187+
Logger: ILogger;
189188
Consent: SDKConsentApi;
190189
_resetForTests(
191190
MPConfig?: SDKInitConfig,
@@ -390,12 +389,8 @@ export interface SDKHelpersApi {
390389
Validators: typeof Validators;
391390
}
392391

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

400395
// TODO: Merge this with IStore in store.ts
401396
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)