From ed64b8a96fd165171534f490e2d13d9fc9404e39 Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Thu, 4 Mar 2021 19:15:48 +0400 Subject: [PATCH 1/5] feat: async alias, identify, group, page and track methods --- README.md | 12 +- __tests__/src/CustomPlugin.ts | 10 +- __tests__/src/ErrorPlugin.ts | 10 +- packages/plugin-amplitude-node/lib/index.ts | 6 +- .../lib/__tests__/smoke.test.ts | 20 ++-- packages/plugin-amplitude/lib/index.ts | 59 ++++++--- .../lib/__tests__/smoke.test.ts | 12 +- .../lib/__tests__/smoke.test.ts | 12 +- packages/plugin-mixpanel-node/lib/index.ts | 45 +++++-- packages/plugin-mixpanel/lib/index.ts | 51 ++++++-- packages/plugin-mparticle/lib/index.ts | 4 +- .../lib/__tests__/browser-smoke.test.ts | 26 ++-- .../lib/__tests__/node-smoke.test.ts | 26 ++-- packages/plugin-segment-node/lib/index.ts | 73 ++++++++--- packages/plugin-segment/lib/index.ts | 113 +++++++++++++++--- packages/plugin-snowplow/lib/index.ts | 65 ++++++++-- .../lib/__tests__/browser-smoke.test.ts | 30 ++--- .../lib/__tests__/node-smoke.test.ts | 28 +++-- packages/plugin-testing/lib/index.ts | 10 +- .../sdk/lib/__tests__/browser-smoke.test.ts | 42 +++---- packages/sdk/lib/__tests__/node-smoke.test.ts | 36 +++--- packages/sdk/lib/base.ts | 99 +++++++++++---- packages/sdk/lib/browser.ts | 2 +- 23 files changed, 544 insertions(+), 247 deletions(-) diff --git a/README.md b/README.md index 0b3dbde4..c1aa1652 100644 --- a/README.md +++ b/README.md @@ -203,19 +203,19 @@ import { ItlyNode as Itly } from '@itly/sdk'; load(options: PluginLoadOptions): void {...} - alias(userId: string, previousId?: string): void {...} + async alias(userId: string, previousId?: string): Promise {...} - group(userId: string | undefined, groupId: string, properties?: Properties): void {...} + async group(userId: string | undefined, groupId: string, properties?: Properties): Promise {...} - identify(userId?: string, properties?: Properties): void {...} + async identify(userId?: string, properties?: Properties): Promise {...} - page(userId?: string, category?: string, name?: string, properties?: Properties): void {...} + async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise {...} reset(): void {...} - flush(): void {...} + async flush(): Promise {...} - track(userId: string | undefined, event: ItlyEvent): void {...} + async track(userId: string | undefined, event: ItlyEvent): Promise {...} validate(event: Event): ValidationResponse {...} } diff --git a/__tests__/src/CustomPlugin.ts b/__tests__/src/CustomPlugin.ts index 5bae79c6..8cb51391 100644 --- a/__tests__/src/CustomPlugin.ts +++ b/__tests__/src/CustomPlugin.ts @@ -29,11 +29,11 @@ export default class CustomPlugin extends RequestLoggerPlugin { }; } - alias(userId: string, previousId: string | undefined): void { + async alias(userId: string, previousId: string | undefined): Promise { this.log(`alias() userId='${userId}' previousId='${previousId}'`); } - identify(userId: string | undefined, properties: Properties | undefined): void { + async identify(userId: string | undefined, properties: Properties | undefined): Promise { this.log(`identify() userId='${userId}' properties=${this.stringify(properties)}`); } @@ -49,7 +49,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - group(userId: string | undefined, groupId: string, properties: Properties | undefined): void { + async group(userId: string | undefined, groupId: string, properties: Properties | undefined): Promise { this.log(`group() userId='${userId}' groupId='${groupId}' properties=${this.stringify(properties)}`); } @@ -66,7 +66,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - page(userId?: string, category?: string, name?: string, properties?: Properties): void { + async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { this.log( `page() userId='${userId}' category='${category}' name='${name}' properties=${this.stringify(properties)}`, ); @@ -86,7 +86,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - track(userId: string | undefined, { name, properties }: Event): void { + async track(userId: string | undefined, { name, properties }: Event): Promise { this.log(`track() userId='${userId}' event='${name}' properties=${this.stringify(properties)}`); } diff --git a/__tests__/src/ErrorPlugin.ts b/__tests__/src/ErrorPlugin.ts index ffdcbf89..f10ba48d 100644 --- a/__tests__/src/ErrorPlugin.ts +++ b/__tests__/src/ErrorPlugin.ts @@ -19,11 +19,11 @@ export default class ErrorPlugin extends Plugin { }; } - alias(userId: string, previousId: string | undefined): void { + async alias(userId: string, previousId: string | undefined): Promise { throw new Error('Error in alias().'); } - identify(userId: string | undefined, properties: Properties | undefined): void { + async identify(userId: string | undefined, properties: Properties | undefined): Promise { throw new Error('Error in identify().'); } @@ -35,7 +35,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postIdentify().'); } - group(userId: string | undefined, groupId: string, properties: Properties | undefined): void { + async group(userId: string | undefined, groupId: string, properties: Properties | undefined): Promise { throw new Error('Error in group().'); } @@ -48,7 +48,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postGroup().'); } - page(userId?: string, category?: string, name?: string, properties?: Properties): void { + async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { throw new Error('Error in page().'); } @@ -62,7 +62,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postPage().'); } - track(userId: string | undefined, event: Event): void { + async track(userId: string | undefined, event: Event): Promise { throw new Error('Error in track().'); } diff --git a/packages/plugin-amplitude-node/lib/index.ts b/packages/plugin-amplitude-node/lib/index.ts index 2d4caf97..b79240a1 100644 --- a/packages/plugin-amplitude-node/lib/index.ts +++ b/packages/plugin-amplitude-node/lib/index.ts @@ -51,7 +51,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { this.amplitude = new Amplitude(this.apiKey, this.options); } - async identify(userId: string, properties?: Properties, options?: IdentifyOptions) { + async identify(userId: string, properties?: Properties, options?: IdentifyOptions): Promise { const { callback } = this.getPluginCallOptions(options); const payload = { user_id: userId, @@ -64,10 +64,11 @@ export class AmplitudePlugin extends RequestLoggerPlugin { callback?.(response); } catch (e) { responseLogger.error(e.toString()); + throw e; } } - async track(userId: string, { name, properties }: Event, options?: TrackOptions) { + async track(userId: string, { name, properties }: Event, options?: TrackOptions): Promise { const { callback } = this.getPluginCallOptions(options); const payload = { event_type: name, @@ -81,6 +82,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { callback?.(response); } catch (e) { responseLogger.error(e.toString()); + throw e; } } } diff --git a/packages/plugin-amplitude/lib/__tests__/smoke.test.ts b/packages/plugin-amplitude/lib/__tests__/smoke.test.ts index 77855f52..3f2977cb 100644 --- a/packages/plugin-amplitude/lib/__tests__/smoke.test.ts +++ b/packages/plugin-amplitude/lib/__tests__/smoke.test.ts @@ -40,6 +40,8 @@ afterEach(() => { const methodArgLoggerMock = (methodName: string, ...args: any[]) => { // eslint-disable-next-line no-console console.log(`${methodName}()`, JSON.stringify(args.map((arg) => (typeof arg === 'function' ? '' : arg)))); + // Invoke callback. + args.filter((arg) => typeof arg === 'function').forEach((arg) => arg()); }; test.each(testParams.map((test) => [test.name, test]) as any[])('%s', @@ -72,7 +74,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', // Try tracking before load, should throw errror try { - itly.identify(userId); + await itly.identify(userId); } catch (e) { // eslint-disable-next-line no-console console.log(`Caught expected error. ${e.message}`); @@ -84,19 +86,19 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', plugins: [plugin].concat(options.plugins), }); - itly.identify(undefined); - itly.identify('temp-user-id'); - itly.identify(undefined, { + await itly.identify(undefined); + await itly.identify('temp-user-id'); + await itly.identify(undefined, { userProp: 'A user property value', }); - itly.alias(userId, 'temp-user-id'); - itly.group(groupId); + await itly.alias(userId, 'temp-user-id'); + await itly.group(groupId); - itly.track({ + await itly.track({ name: 'Event No Properties', }); - itly.track({ + await itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -111,7 +113,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - itly.track({ + await itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-amplitude/lib/index.ts b/packages/plugin-amplitude/lib/index.ts index f6966aaf..6c9ee3fd 100644 --- a/packages/plugin-amplitude/lib/index.ts +++ b/packages/plugin-amplitude/lib/index.ts @@ -45,32 +45,45 @@ export class AmplitudePlugin extends RequestLoggerPlugin { } } - identify(userId: string | undefined, properties?: Properties, options?: IdentifyOptions) { + async identify(userId: string | undefined, properties?: Properties, options?: IdentifyOptions): Promise { const responseLogger = this.logger!.logRequest('identify', `${userId} ${JSON.stringify(properties)}`); if (userId) { this.amplitude.getInstance().setUserId(userId); } - if (properties) { - const identifyObject = new this.amplitude.Identify(); - for (const p in properties) { - if (!properties.hasOwnProperty(p)) { - continue; - } + if (!properties) { + return undefined; + } - identifyObject.set(p, (properties as any)[p]); + const identifyObject = new this.amplitude.Identify(); + for (const p in properties) { + if (!properties.hasOwnProperty(p)) { + continue; } - const { callback } = this.getPluginCallOptions(options); - this.amplitude.getInstance().identify(identifyObject, this.wrapCallback(responseLogger, callback)); + identifyObject.set(p, (properties as any)[p]); } + + const { callback } = this.getPluginCallOptions(options); + return new Promise((resolve, reject) => { + this.amplitude.getInstance().identify( + identifyObject, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions) { + async track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions): Promise { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId} ${name} ${JSON.stringify(properties)}`); - this.amplitude.getInstance().logEvent(name, properties, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.amplitude.getInstance().logEvent( + name, + properties, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } reset() { @@ -78,14 +91,24 @@ export class AmplitudePlugin extends RequestLoggerPlugin { this.amplitude.getInstance().regenerateDeviceId(); } - private wrapCallback(responseLogger: ResponseLogger, callback: AmplitudeCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: AmplitudeCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (statusCode: number, responseBody: string, details: unknown) => { - if (statusCode >= 200 && statusCode < 300) { - responseLogger.success(responseBody); - } else { - responseLogger.error(`${statusCode}. ${responseBody}\n${JSON.stringify(details)}`); + try { + if (statusCode >= 200 && statusCode < 300) { + responseLogger.success(responseBody); + } else { + responseLogger.error(`${statusCode}. ${responseBody}\n${JSON.stringify(details)}`); + } + callback?.(statusCode, responseBody, details); + resolve(); + } catch (e) { + reject(e); } - callback?.(statusCode, responseBody, details); }; } } diff --git a/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts b/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts index 1579a282..ca09aeb3 100644 --- a/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts +++ b/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts @@ -63,7 +63,7 @@ test.each([ }).not.toThrow(); }); -test('should not post if on production', () => { +test('should not post if on production', async () => { const environment = 'production'; const iterativelyPlugin = new IterativelyPlugin( @@ -80,7 +80,7 @@ test('should not post if on production', () => { plugins: [iterativelyPlugin], }); - itly!.track(defaultUserId, defaultTestEvent); + await itly!.track(defaultUserId, defaultTestEvent); expect(fetch).not.toBeCalled(); }); @@ -110,7 +110,7 @@ test('should post when flushAt reached', async () => { }, })); - events.forEach((event) => itly!.track(defaultUserId, event)); + await Promise.all(events.map((event) => itly!.track(defaultUserId, event))); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); @@ -159,7 +159,7 @@ test('should post in flushInterval', async () => { })); for (let i = 0; i < events.length; i += 1) { - itly!.track(defaultUserId, events[i]); + await itly!.track(defaultUserId, events[i]); await wait(flushInterval / 2); } @@ -209,7 +209,7 @@ test('should post on explicit flush()', async () => { })); for (let i = 0; i < events.length; i += 1) { - itly!.track(defaultUserId, events[i]); + await itly!.track(defaultUserId, events[i]); } await itly!.flush(); @@ -259,7 +259,7 @@ test('should omit event properties if configured', async () => { }, }; - itly!.track(defaultUserId, event); + await itly!.track(defaultUserId, event); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); diff --git a/packages/plugin-iteratively/lib/__tests__/smoke.test.ts b/packages/plugin-iteratively/lib/__tests__/smoke.test.ts index a4961999..be6faacc 100644 --- a/packages/plugin-iteratively/lib/__tests__/smoke.test.ts +++ b/packages/plugin-iteratively/lib/__tests__/smoke.test.ts @@ -67,7 +67,7 @@ test.each([ }).not.toThrow(); }); -test('should not post if on production', () => { +test('should not post if on production', async () => { const environment = 'production'; const iterativelyPlugin = new IterativelyPlugin( @@ -84,7 +84,7 @@ test('should not post if on production', () => { plugins: [iterativelyPlugin], }); - itly!.track(defaultTestEvent); + await itly!.track(defaultTestEvent); expect(fetch).not.toBeCalled(); }); @@ -114,7 +114,7 @@ test('should post when flushAt reached', async () => { }, })); - events.forEach((event) => itly!.track(event)); + await Promise.all(events.map((event) => itly!.track(event))); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); @@ -163,7 +163,7 @@ test('should post in flushInterval', async () => { })); for (let i = 0; i < events.length; i += 1) { - itly!.track(events[i]); + await itly!.track(events[i]); await wait(flushInterval / 2); } @@ -213,7 +213,7 @@ test('should post on explicit flush()', async () => { })); for (let i = 0; i < events.length; i += 1) { - itly!.track(events[i]); + await itly!.track(events[i]); } await itly!.flush(); @@ -265,7 +265,7 @@ test('should omit event properties if configured', async () => { }, }; - itly!.track(event); + await itly!.track(event); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); diff --git a/packages/plugin-mixpanel-node/lib/index.ts b/packages/plugin-mixpanel-node/lib/index.ts index ee8cf553..514cd839 100644 --- a/packages/plugin-mixpanel-node/lib/index.ts +++ b/packages/plugin-mixpanel-node/lib/index.ts @@ -42,40 +42,61 @@ export class MixpanelPlugin extends RequestLoggerPlugin { this.mixpanel = Mixpanel.init(this.apiKey, this.options); } - alias(userId: string, previousId: string, options?: AliasOptions) { + async alias(userId: string, previousId: string, options?: AliasOptions): Promise { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('alias', `${userId}, ${previousId}`); - this.mixpanel!.alias(previousId, userId, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.mixpanel!.alias(previousId, userId, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - identify(userId: string, properties: Properties | undefined, options?: IdentifyOptions) { + async identify(userId: string, properties: Properties | undefined, options?: IdentifyOptions): Promise { const { callback } = this.getPluginCallOptions(options); const payload = { distinct_id: userId, ...properties, }; const responseLogger = this.logger!.logRequest('identify', JSON.stringify(payload)); - this.mixpanel!.people.set(userId, payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.mixpanel!.people.set(userId, payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - track(userId: string, { name, properties }: Event, options?: TrackOptions) { + async track(userId: string, { name, properties }: Event, options?: TrackOptions): Promise { const { callback } = this.getPluginCallOptions(options); const payload = { distinct_id: userId, ...properties, }; const responseLogger = this.logger!.logRequest('track', JSON.stringify(payload)); - this.mixpanel!.track(name, payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.mixpanel!.track(name, payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - private wrapCallback(responseLogger: ResponseLogger, callback: MixpanelCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: MixpanelCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (err: Error | undefined): any => { - if (err == null) { - responseLogger.success('success'); - } else { - responseLogger.error(err.toString()); + try { + let result; + if (err == null) { + responseLogger.success('success'); + result = callback?.(undefined); + resolve(); + } else { + responseLogger.error(err.toString()); + result = callback?.(err); + reject(err); + } + return result; + } catch (e) { + reject(e); + return undefined; } - return callback?.(err); }; } } diff --git a/packages/plugin-mixpanel/lib/index.ts b/packages/plugin-mixpanel/lib/index.ts index 794f2b21..eb9cfbf7 100644 --- a/packages/plugin-mixpanel/lib/index.ts +++ b/packages/plugin-mixpanel/lib/index.ts @@ -44,11 +44,18 @@ export class MixpanelPlugin extends RequestLoggerPlugin { } } - alias(userId: string, previousId: string | undefined) { + async alias( + userId: string, + previousId: string | undefined, + ): Promise { this.mixpanel.alias(userId, previousId); } - identify(userId: string | undefined, properties: Properties | undefined, options?: IdentifyOptions) { + async identify( + userId: string | undefined, + properties: Properties | undefined, + options?: IdentifyOptions, + ): Promise { const { callback } = this.getPluginCallOptions(options); if (userId) { @@ -56,25 +63,51 @@ export class MixpanelPlugin extends RequestLoggerPlugin { } if (properties) { - const responseLogger = this.logger!.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); - this.mixpanel.people.set(properties, this.wrapCallback(responseLogger, callback)); + return undefined; } + + const responseLogger = this.logger!.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); + return new Promise((resolve, reject) => { + this.mixpanel.people.set(properties, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions) { + async track( + userId: string | undefined, + { name, properties }: Event, + options?: TrackOptions, + ): Promise { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); - this.mixpanel.track(name, { ...properties }, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.mixpanel.track(name, { ...properties }, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } reset() { this.mixpanel.reset(); } - private wrapCallback(responseLogger: ResponseLogger, callback: MixpanelCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: MixpanelCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (...args: any[]) => { - responseLogger.success(`done: ${JSON.stringify(args)}`); - return callback?.(...args); + try { + if (args.length === 1 && args[0] instanceof Error) { + responseLogger.error(args[0].toString()); + callback?.(...args); + reject(args[0]); + } else { + responseLogger.success(JSON.stringify(args)); + callback?.(...args); + resolve(); + } + } catch (e) { + reject(e); + } }; } } diff --git a/packages/plugin-mparticle/lib/index.ts b/packages/plugin-mparticle/lib/index.ts index f11aa22b..a1151e59 100644 --- a/packages/plugin-mparticle/lib/index.ts +++ b/packages/plugin-mparticle/lib/index.ts @@ -60,11 +60,11 @@ export class MparticlePlugin extends RequestLoggerPlugin { } } - page(userId?: string, category?: string, name?: string, properties?: Properties) { + async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { this.mparticle.logPageView(name, properties); } - track(userId: string | undefined, { name, properties }: Event) { + async track(userId: string | undefined, { name, properties }: Event): Promise { this.mparticle.logEvent( name, Mparticle.EventType.Other, diff --git a/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts b/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts index f7c6a19d..f0d5434a 100644 --- a/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts +++ b/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts @@ -93,54 +93,54 @@ test.only.each(testParams.map((test) => [test.name, test]) as any[])('%s', context: ctx, }); - itly.identify(undefined, identifyProps); - itly.identify(tempUserId, identifyProps); + await itly.identify(undefined, identifyProps); + await itly.identify(tempUserId, identifyProps); try { - itly.identify(tempUserId); + await itly.identify(tempUserId); } catch (e) { console.log('Caught validation error.', e.message); } try { - itly.identify(tempUserId, { + await itly.identify(tempUserId, { badProp: 'unsupported property', }); } catch (e) { console.log('Caught validation error.', e.message); } - itly.alias(userId); - itly.alias(userId, tempUserId); + await itly.alias(userId); + await itly.alias(userId, tempUserId); try { - itly.group(groupId); + await itly.group(groupId); } catch (e) { console.log('Caught validation error.', e.message); } - itly.group(groupId, { + await itly.group(groupId, { requiredBoolean: true, optionalString: undefined, }); try { - itly.page('page category 1', 'page name 1'); + await itly.page('page category 1', 'page name 1'); } catch (e) { console.log('Caught validation error.', e.message); } try { - itly.page('page category 2', 'page name 2', { + await itly.page('page category 2', 'page name 2', { pageProp: 'a page property', }); } catch (e) { console.log('Caught validation error.', e.message); } - itly.track({ + await itly.track({ name: 'Event No Properties', properties: {}, }); - itly.track({ + await itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -155,7 +155,7 @@ test.only.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - itly.track({ + await itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts b/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts index 05017765..08e53a41 100644 --- a/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts +++ b/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts @@ -106,54 +106,54 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', context: ctx, }); - itly.identify(undefined, identifyProps); - itly.identify(tempUserId, identifyProps); + await itly.identify(undefined, identifyProps); + await itly.identify(tempUserId, identifyProps); try { - itly.identify(tempUserId); + await itly.identify(tempUserId); } catch (e) { console.log('Caught validation error.', e.message); } try { - itly.identify(tempUserId, { + await itly.identify(tempUserId, { badProp: 'unsupported property', }); } catch (e) { console.log('Caught validation error.', e.message); } - itly.alias(userId); - itly.alias(userId, tempUserId); + await itly.alias(userId); + await itly.alias(userId, tempUserId); try { - itly.group(userId, groupId); + await itly.group(userId, groupId); } catch (e) { console.log('Caught validation error.', e.message); } - itly.group(userId, groupId, { + await itly.group(userId, groupId, { requiredBoolean: true, optionalString: undefined, }); try { - itly.page(userId, 'page category 1', 'page name 1'); + await itly.page(userId, 'page category 1', 'page name 1'); } catch (e) { console.log('Caught validation error.', e.message); } try { - itly.page(userId, 'page category 2', 'page name 2', { + await itly.page(userId, 'page category 2', 'page name 2', { pageProp: 'a page property', }); } catch (e) { console.log('Caught validation error.', e.message); } - itly.track(userId, { + await itly.track(userId, { name: 'Event No Properties', properties: {}, }); - itly.track(userId, { + await itly.track(userId, { name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -168,7 +168,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - itly.track(userId, { + await itly.track(userId, { name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-segment-node/lib/index.ts b/packages/plugin-segment-node/lib/index.ts index 58703755..980866f0 100644 --- a/packages/plugin-segment-node/lib/index.ts +++ b/packages/plugin-segment-node/lib/index.ts @@ -52,7 +52,11 @@ export class SegmentPlugin extends RequestLoggerPlugin { this.segment = new Segment(this.writeKey, this.options); } - alias(userId: string, previousId: string, options?: AliasOptions) { + async alias( + userId: string, + previousId: string, + options?: AliasOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -60,10 +64,16 @@ export class SegmentPlugin extends RequestLoggerPlugin { previousId, }; const responseLogger = this.logger!.logRequest('alias', JSON.stringify(payload)); - this.segment!.alias(payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment!.alias(payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - identify(userId: string, properties: Properties | undefined, options?: IdentifyOptions) { + async identify( + userId: string, + properties: Properties | undefined, + options?: IdentifyOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -71,10 +81,17 @@ export class SegmentPlugin extends RequestLoggerPlugin { traits: { ...properties }, }; const responseLogger = this.logger!.logRequest('identify', JSON.stringify(payload)); - this.segment!.identify(payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment!.identify(payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - group(userId: string, groupId: string, properties: Properties | undefined, options?: GroupOptions) { + async group( + userId: string, + groupId: string, + properties: Properties | undefined, + options?: GroupOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -83,16 +100,18 @@ export class SegmentPlugin extends RequestLoggerPlugin { traits: properties, }; const responseLogger = this.logger!.logRequest('group', JSON.stringify(payload)); - this.segment!.group(payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment!.group(payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - page( + async page( userId: string, category: string, name: string, properties: Properties | undefined, options?: PageOptions, - ) { + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -102,10 +121,16 @@ export class SegmentPlugin extends RequestLoggerPlugin { properties, }; const responseLogger = this.logger!.logRequest('page', JSON.stringify(payload)); - this.segment!.page(payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment!.page(payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } - track(userId: string, { name, properties }: Event, options?: TrackOptions) { + async track( + userId: string, + { name, properties }: Event, + options?: TrackOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -114,7 +139,9 @@ export class SegmentPlugin extends RequestLoggerPlugin { properties: { ...properties }, }; const responseLogger = this.logger!.logRequest('track', JSON.stringify(payload)); - this.segment!.track(payload, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment!.track(payload, this.wrapCallback(responseLogger, callback, resolve, reject)); + }); } flush() { @@ -128,14 +155,26 @@ export class SegmentPlugin extends RequestLoggerPlugin { }); } - private wrapCallback(responseLogger: ResponseLogger, callback: SegmentCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: SegmentCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (err: Error | undefined) => { - if (err == null) { - responseLogger.success('success'); - } else { - responseLogger.error(err.toString()); + try { + if (err == null) { + responseLogger.success('success'); + callback?.(undefined); + resolve(); + } else { + responseLogger.error(err.toString()); + callback?.(err); + reject(err); + } + } catch (e) { + reject(err); } - callback?.(err); }; } } diff --git a/packages/plugin-segment/lib/index.ts b/packages/plugin-segment/lib/index.ts index cf39ea27..01b1f589 100644 --- a/packages/plugin-segment/lib/index.ts +++ b/packages/plugin-segment/lib/index.ts @@ -56,48 +56,127 @@ export class SegmentPlugin extends RequestLoggerPlugin { } } - alias(userId: string, previousId: string | undefined, options?: AliasOptions) { + async alias( + userId: string, + previousId: string | undefined, + options?: AliasOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('alias', `${userId}, ${previousId}`); - this.segment.alias(userId, previousId, segmentOptions, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment.alias( + userId, + previousId, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - identify(userId: string | undefined, properties?: Properties, options?: IdentifyOptions) { + async identify( + userId: string | undefined, + properties?: Properties, + options?: IdentifyOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); - if (userId) { - this.segment.identify(userId, properties, segmentOptions, this.wrapCallback(responseLogger, callback)); - } else { - this.segment.identify(properties, segmentOptions, this.wrapCallback(responseLogger, callback)); - } + return new Promise((resolve, reject) => { + if (userId) { + this.segment.identify( + userId, + properties, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + } else { + this.segment.identify( + properties, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + } + }); } - group(userId: string | undefined, groupId: string, properties?: Properties, options?: GroupOptions) { + async group( + userId: string | undefined, + groupId: string, + properties?: Properties, + options?: GroupOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('group', `${userId}, ${groupId}, ${JSON.stringify(properties)}`); - this.segment.group(groupId, properties, segmentOptions, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment.group( + groupId, + properties, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - page(userId?: string, category?: string, name?: string, properties?: Properties, options?: PageOptions) { + async page( + userId?: string, + category?: string, + name?: string, + properties?: Properties, + options?: PageOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('page', `${userId}, ${category}, ${name}, ${JSON.stringify(properties)}`); - this.segment.page(category, name, properties, segmentOptions, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment.page( + category, + name, + properties, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions) { + async track( + userId: string | undefined, + { name, properties }: Event, + options?: TrackOptions, + ): Promise { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); - this.segment.track(name, properties, segmentOptions, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.segment.track( + name, + properties, + segmentOptions, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } reset() { this.segment.reset(); } - private wrapCallback(responseLogger: ResponseLogger, callback: SegmentCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: SegmentCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (...args: any[]) => { - responseLogger.success(`done ${args}`); - callback?.(args); + try { + if (args.length === 1 && args[0] instanceof Error) { + responseLogger.error(args[0].toString()); + callback?.(...args); + reject(args[0]); + } else { + responseLogger.success(JSON.stringify(args)); + callback?.(...args); + resolve(); + } + } catch (e) { + reject(e); + } }; } } diff --git a/packages/plugin-snowplow/lib/index.ts b/packages/plugin-snowplow/lib/index.ts index a73d6f7e..726b5864 100644 --- a/packages/plugin-snowplow/lib/index.ts +++ b/packages/plugin-snowplow/lib/index.ts @@ -53,30 +53,73 @@ export class SnowplowPlugin extends RequestLoggerPlugin { } } - identify(userId: string | undefined, properties?: Properties) { + async identify(userId: string | undefined, properties?: Properties): Promise { this.snowplow('setUserId', userId); } - page(userId?: string, category?: string, name?: string, properties?: Properties, options?: PageOptions) { + async page( + userId?: string, + category?: string, + name?: string, + properties?: Properties, + options?: PageOptions, + ): Promise { const { callback, contexts } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('page', `${userId}, ${category}, ${name}, ${JSON.stringify(properties)}`); - this.snowplow('trackPageView', name, undefined, contexts, undefined, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.snowplow( + 'trackPageView', + name, + undefined, + contexts, + undefined, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - track(userId: string | undefined, { name, properties, version }: Event, options?: TrackOptions) { + async track( + userId: string | undefined, + { name, properties, version }: Event, + options?: TrackOptions, + ): Promise { const schemaVer = version && version.replace(/\./g, '-'); const { callback, contexts } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); - this.snowplow('trackSelfDescribingEvent', { - schema: `iglu:${this.vendor}/${name}/jsonschema/${schemaVer}`, - data: properties, - }, contexts, undefined, this.wrapCallback(responseLogger, callback)); + return new Promise((resolve, reject) => { + this.snowplow( + 'trackSelfDescribingEvent', + { + schema: `iglu:${this.vendor}/${name}/jsonschema/${schemaVer}`, + data: properties, + }, + contexts, + undefined, + this.wrapCallback(responseLogger, callback, resolve, reject), + ); + }); } - private wrapCallback(responseLogger: ResponseLogger, callback: SnowplowCallback | undefined) { + private wrapCallback( + responseLogger: ResponseLogger, + callback: SnowplowCallback | undefined, + resolve: (value?: void) => void, + reject: (reason?: any) => void, + ) { return (...args: any[]) => { - responseLogger.success(`done: ${JSON.stringify(args)}`); - callback?.(...args); + try { + if (args.length === 1 && args[0] instanceof Error) { + responseLogger.error(args[0].toString()); + callback?.(...args); + reject(args[0]); + } else { + responseLogger.success(JSON.stringify(args)); + callback?.(...args); + resolve(); + } + } catch (e) { + reject(e); + } }; } } diff --git a/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts b/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts index d7168cb9..d93d3ede 100644 --- a/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts +++ b/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts @@ -43,55 +43,55 @@ beforeEach(() => { }); describe('TestingPlugin/browser', () => { - it('plugin.all', () => { + it('plugin.all', async () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - itly.track(dataSearchedEvent1); - itly.track(dataSearchedEvent2); - itly.track(dataSearchedEvent3); + await itly.track(dataSearchedEvent1); + await itly.track(dataSearchedEvent2); + await itly.track(dataSearchedEvent3); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); }); - it('plugin.ofType', () => { + it('plugin.ofType', async () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - itly.track(dataSearchedEvent1); - itly.track(dataSearchedEvent2); - itly.track(dataSearchedEvent3); + await itly.track(dataSearchedEvent1); + await itly.track(dataSearchedEvent2); + await itly.track(dataSearchedEvent3); expect(testingPlugin.ofType(DataSearchedEvent)).toHaveLength(3); // eslint-disable-next-line max-len expect(testingPlugin.ofType(DataSearchedEvent)).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); }); - it('plugin.firstOfType', () => { + it('plugin.firstOfType', async () => { const dataSearchedEvent = new DataSearchedEvent({ page: 'Stream' }); const dataFilteredEvent = new DataFilteredEvent({ page: 'Stream' }); const streamPausedEvent = new StreamPausedEvent(); - itly.track(dataSearchedEvent); - itly.track(dataFilteredEvent); - itly.track(streamPausedEvent); + await itly.track(dataSearchedEvent); + await itly.track(dataFilteredEvent); + await itly.track(streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent)).toEqual(streamPausedEvent); }); - it('plugin.reset', () => { + it('plugin.reset', async () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - [ + await Promise.all([ dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3, - ].forEach((ev) => itly.track(ev)); + ].map((ev) => itly.track(ev))); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); diff --git a/packages/plugin-testing/lib/__tests__/node-smoke.test.ts b/packages/plugin-testing/lib/__tests__/node-smoke.test.ts index 46bcc320..998ec5c3 100644 --- a/packages/plugin-testing/lib/__tests__/node-smoke.test.ts +++ b/packages/plugin-testing/lib/__tests__/node-smoke.test.ts @@ -47,13 +47,15 @@ beforeEach(() => { }); describe('TestingPlugin/node', () => { - it('plugin.all', () => { + it('plugin.all', async () => { const userId = 'user1'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - [dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].forEach((ev) => itly.track(userId, ev)); + await Promise.all([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].map( + (ev) => itly.track(userId, ev), + )); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all(userId)).toHaveLength(3); @@ -69,15 +71,17 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.all('random')).toEqual([]); }); - it('plugin.ofType', () => { + it('plugin.ofType', async () => { const userId = 'user1'; const userId2 = 'user2'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - [dataSearchedEvent1, dataSearchedEvent2].forEach((ev) => itly.track(userId, ev)); - itly.track(userId2, dataSearchedEvent3); + await Promise.all([dataSearchedEvent1, dataSearchedEvent2].map( + (ev) => itly.track(userId, ev), + )); + await itly.track(userId2, dataSearchedEvent3); expect(testingPlugin.ofType(DataSearchedEvent)).toHaveLength(3); // eslint-disable-next-line max-len @@ -87,7 +91,7 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.ofType(DataSearchedEvent, 'random')).toEqual([]); }); - it('plugin.firstOfType', () => { + it('plugin.firstOfType', async () => { const userId1 = 'user1'; const userId2 = 'user2'; const userId3 = 'user3'; @@ -95,9 +99,9 @@ describe('TestingPlugin/node', () => { const dataFilteredEvent = new DataFilteredEvent({ page: 'Stream' }); const streamPausedEvent = new StreamPausedEvent(); - itly.track(userId1, dataSearchedEvent); - itly.track(userId2, dataFilteredEvent); - itly.track(userId3, streamPausedEvent); + await itly.track(userId1, dataSearchedEvent); + await itly.track(userId2, dataFilteredEvent); + await itly.track(userId3, streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent)).toEqual(streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent, userId3)).toEqual(streamPausedEvent); @@ -105,13 +109,15 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.firstOfType(DataSearchedEvent, userId2)).toEqual(null); }); - it('plugin.reset', () => { + it('plugin.reset', async () => { const userId = 'user1'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - [dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].forEach((ev) => itly.track(userId, ev)); + await Promise.all([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].map( + (ev) => itly.track(userId, ev), + )); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([ diff --git a/packages/plugin-testing/lib/index.ts b/packages/plugin-testing/lib/index.ts index cb2cc86a..65b3ea39 100644 --- a/packages/plugin-testing/lib/index.ts +++ b/packages/plugin-testing/lib/index.ts @@ -60,23 +60,23 @@ export class TestingPlugin extends Plugin implements ITestingPlugin { return tuple ? this.mapMethodArgs(tuple) : null; } - alias(...args: any[]) { + async alias(...args: any[]) { this.trackCall('alias', args); } - identify(...args: any[]) { + async identify(...args: any[]) { this.trackCall('identify', args); } - group(...args: any[]) { + async group(...args: any[]) { this.trackCall('group', args); } - page(...args: any[]) { + async page(...args: any[]) { this.trackCall('page', args); } - track(...args: any[]) { + async track(...args: any[]) { this.trackCall('track', args); } diff --git a/packages/sdk/lib/__tests__/browser-smoke.test.ts b/packages/sdk/lib/__tests__/browser-smoke.test.ts index cad069bb..151e74da 100644 --- a/packages/sdk/lib/__tests__/browser-smoke.test.ts +++ b/packages/sdk/lib/__tests__/browser-smoke.test.ts @@ -15,7 +15,7 @@ beforeEach(() => { const Itly = requireForTestEnv(__dirname); -test('should load and track events to a custom destination (no validation)', () => { +test('should load and track events to a custom destination (no validation)', async () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); const userId = 'test-user-id'; @@ -30,25 +30,25 @@ test('should load and track events to a custom destination (no validation)', () plugins: [new CustomPlugin()], }); - itly.identify(undefined, { + await itly.identify(undefined, { userProp: 1, }); - itly.alias(userId); + await itly.alias(userId); - itly.group('a-group-id', { + await itly.group('a-group-id', { groupProp: 'test value', }); - itly.page('page category', 'page name', { + await itly.page('page category', 'page name', { pageProp: 'a page property', }); - itly.track({ + await itly.track({ name: 'Event No Properties', }); - itly.track({ + await itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -63,7 +63,7 @@ test('should load and track events to a custom destination (no validation)', () }); try { - itly.track({ + await itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, @@ -78,7 +78,7 @@ test('should load and track events to a custom destination (no validation)', () consoleSpy.mockRestore(); }); -test('should load and track events with properly merged context', () => { +test('should load and track events with properly merged context', async () => { const testingPlugin = new TestingPlugin(); const userId = 'test-user-id'; const context = { @@ -102,25 +102,25 @@ test('should load and track events with properly merged context', () => { plugins: [testingPlugin], }); - itly.identify(undefined, { + await itly.identify(undefined, { userProp: 1, }); - itly.alias(userId); + await itly.alias(userId); - itly.group('a-group-id', { + await itly.group('a-group-id', { groupProp: 'test value', }); - itly.page('page category', 'page name', { + await itly.page('page category', 'page name', { pageProp: 'a page property', }); - itly.track({ + await itly.track({ name: 'Event No Properties', }); - itly.track(new TrackingEvent({ + await itly.track(new TrackingEvent({ requiredNumber: 2.0, requiredInteger: 42, requiredEnum: 'Enum1', @@ -151,7 +151,7 @@ test('should load and track events with properly merged context', () => { expect(testingPlugin.firstOfType(TrackingEvent)).toEqual(trackingEvent); }); -test('other plugins should continue if another plugin throws errors in callback methods', () => { +test('other plugins should continue if another plugin throws errors in callback methods', async () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); const itly = new Itly(); @@ -177,11 +177,11 @@ test('other plugins should continue if another plugin throws errors in callback dummyPlugin, ], }); - itly.identify('tmp-id'); - itly.alias(id, 'tmp-id'); - itly.group('group-id'); - itly.page('category', 'name'); - itly.track({ + await itly.identify('tmp-id'); + await itly.alias(id, 'tmp-id'); + await itly.group('group-id'); + await itly.page('category', 'name'); + await itly.track({ name: 'my-event', properties: { prop: 'a value', diff --git a/packages/sdk/lib/__tests__/node-smoke.test.ts b/packages/sdk/lib/__tests__/node-smoke.test.ts index cb080610..6faeed21 100644 --- a/packages/sdk/lib/__tests__/node-smoke.test.ts +++ b/packages/sdk/lib/__tests__/node-smoke.test.ts @@ -63,7 +63,7 @@ describe('should load and track events to a custom destination (no validation)', async (name: string, { context, options }: TestParams) => { // Try tracking before load, should throw error try { - itly.identify(userId); + await itly.identify(userId); } catch (e) { console.log(`Caught expected error. ${e.message}`); } @@ -78,26 +78,26 @@ describe('should load and track events to a custom destination (no validation)', console.log(`Caught expected error. ${e.message}`); } - itly.identify(undefined); - itly.identify(tempUserId); - itly.identify(tempUserId, { + await itly.identify(undefined); + await itly.identify(tempUserId); + await itly.identify(tempUserId, { userProp: 'A user property value', }); - itly.alias(userId); - itly.alias(userId, tempUserId); + await itly.alias(userId); + await itly.alias(userId, tempUserId); - itly.group(userId, groupId); + await itly.group(userId, groupId); - itly.page(userId, 'page category', 'page name', { + await itly.page(userId, 'page category', 'page name', { pageProp: 'a page property', }); - itly.track(userId, { + await itly.track(userId, { name: 'Event No Properties', }); - itly.track(userId, { + await itly.track(userId, { name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -112,7 +112,7 @@ describe('should load and track events to a custom destination (no validation)', }); try { - itly.track(userId, { + await itly.track(userId, { name: 'EventMaxIntForTest', properties: { intMax10: 20, @@ -149,7 +149,7 @@ describe('should load and track events to a custom destination (no validation)', expect(spyPluginLoad).not.toHaveBeenCalled(); }); - test('should load and track events with properly merged context', () => { + test('should load and track events with properly merged context', async () => { const testingPlugin = new TestingPlugin(); const context = { requiredString: 'A required string', @@ -170,25 +170,25 @@ describe('should load and track events to a custom destination (no validation)', plugins: [testingPlugin], }); - itly.identify(undefined, { + await itly.identify(undefined, { userProp: 1, }); - itly.alias(userId); + await itly.alias(userId); - itly.group('a-group-id', { + await itly.group('a-group-id', { groupProp: 'test value', }); - itly.page('page category', 'page name', { + await itly.page('page category', 'page name', { pageProp: 'a page property', }); - itly.track(userId, { + await itly.track(userId, { name: 'Event No Properties', }); - itly.track(userId, new TrackingEvent({ + await itly.track(userId, new TrackingEvent({ requiredNumber: 2.0, requiredInteger: 42, requiredEnum: 'Enum1', diff --git a/packages/sdk/lib/base.ts b/packages/sdk/lib/base.ts index fd43851b..edfd880e 100644 --- a/packages/sdk/lib/base.ts +++ b/packages/sdk/lib/base.ts @@ -59,9 +59,21 @@ export abstract class Plugin { }; } - alias(userId: string, previousId: string | undefined, options?: AliasOptions): void {} + async alias( + userId: string, + previousId: string | undefined, + options?: AliasOptions, + ): Promise { + return Promise.resolve(); + } - identify(userId: string | undefined, properties: Properties | undefined, options?: IdentifyOptions): void {} + async identify( + userId: string | undefined, + properties: Properties | undefined, + options?: IdentifyOptions, + ): Promise { + return Promise.resolve(); + } postIdentify( userId: string | undefined, @@ -69,12 +81,14 @@ export abstract class Plugin { validationResponses: ValidationResponse[], ): void {} - group( + async group( userId: string | undefined, groupId: string, properties: Properties | undefined, options?: GroupOptions, - ): void {} + ): Promise { + return Promise.resolve(); + } postGroup( userId: string | undefined, @@ -83,13 +97,15 @@ export abstract class Plugin { validationResponses: ValidationResponse[], ): void {} - page( + async page( userId: string | undefined, category: string | undefined, name: string | undefined, properties: Properties | undefined, options?: PageOptions, - ): void {} + ): Promise { + return Promise.resolve(); + } postPage( userId: string | undefined, @@ -99,13 +115,15 @@ export abstract class Plugin { validationResponses: ValidationResponse[], ): void {} - track(userId: string | undefined, event: Event, options?: TrackOptions): void {} + async track(userId: string | undefined, event: Event, options?: TrackOptions): Promise { + return Promise.resolve(); + } postTrack(userId: string | undefined, event: Event, validationResponses: ValidationResponse[]): void {} reset(): void {} - flush(): Promise { + async flush(): Promise { return Promise.resolve(); } @@ -249,12 +267,16 @@ export class Itly { * @param previousId The user's previous ID. * @param options Options for this Alias call. */ - alias(userId: string, previousId?: string, options?: AliasOptions) { + async alias( + userId: string, + previousId?: string, + options?: AliasOptions, + ): Promise { if (!this.isInitializedAndEnabled()) { return; } - this.runOnAllPlugins('alias', (p) => p.alias(userId, previousId, options)); + await this.runOnAllPluginsAsync('alias', (p) => p.alias(userId, previousId, options)); } /** @@ -263,7 +285,11 @@ export class Itly { * @param identifyProperties The user's properties. * @param options Options for this Identify call. */ - identify(userId: string | undefined, identifyProperties?: Properties, options?: IdentifyOptions) { + async identify( + userId: string | undefined, + identifyProperties?: Properties, + options?: IdentifyOptions, + ): Promise { if (!this.isInitializedAndEnabled()) { return; } @@ -275,7 +301,7 @@ export class Itly { version: '0-0-0', }; - this.validateAndRunOnAllPlugins( + await this.validateAndRunOnAllPlugins( 'identify', identifyEvent, (p, e) => p.identify(userId, identifyProperties, options), @@ -292,7 +318,12 @@ export class Itly { * @param groupProperties The group's properties. * @param options Options for this Group call. */ - group(userId: string | undefined, groupId: string, groupProperties?: Properties, options?: GroupOptions) { + async group( + userId: string | undefined, + groupId: string, + groupProperties?: Properties, + options?: GroupOptions, + ): Promise { if (!this.isInitializedAndEnabled()) { return; } @@ -304,7 +335,7 @@ export class Itly { version: '0-0-0', }; - this.validateAndRunOnAllPlugins( + await this.validateAndRunOnAllPlugins( 'group', groupEvent, (p, e) => p.group(userId, groupId, groupProperties, options), @@ -322,12 +353,12 @@ export class Itly { * @param pageProperties The page's properties. * @param options Options for this Page call. */ - page( + async page( userId: string | undefined, category: string, name: string, pageProperties?: Properties, options?: PageOptions, - ) { + ): Promise { if (!this.isInitializedAndEnabled()) { return; } @@ -339,7 +370,7 @@ export class Itly { version: '0-0-0', }; - this.validateAndRunOnAllPlugins( + await this.validateAndRunOnAllPlugins( 'page', pageEvent, (p, e) => p.page(userId, category, name, pageProperties, options), @@ -359,14 +390,18 @@ export class Itly { * @param event.version The event's version. * @param options Options for this Track call. */ - track(userId: string | undefined, event: Event, options?: TrackOptions) { + async track( + userId: string | undefined, + event: Event, + options?: TrackOptions, + ): Promise { if (!this.isInitializedAndEnabled()) { return; } const mergedEvent = this.mergeContext(event, this.context); - this.validateAndRunOnAllPlugins( + await this.validateAndRunOnAllPlugins( 'track', event, (p, e) => p.track(userId, mergedEvent, options), @@ -384,7 +419,7 @@ export class Itly { this.runOnAllPlugins('reset', (p) => p.reset()); } - async flush() { + async flush(): Promise { const flushPromises = this.plugins.map(async (plugin) => { try { await plugin.flush(); @@ -427,13 +462,13 @@ export class Itly { return !this.options.disabled; } - private validateAndRunOnAllPlugins( + private async validateAndRunOnAllPlugins( op: string, event: Event, - method: (plugin: Plugin, event: Event) => any, + method: (plugin: Plugin, event: Event) => Promise, postMethod: (plugin: Plugin, event: Event, validationResponses: ValidationResponse[]) => any, context?: Properties, - ): void { + ): Promise { // #1 validation phase let shouldRun = true; @@ -450,9 +485,9 @@ export class Itly { // #2 track phase // invoke track(), group(), identify(), page() on every plugin if allowed if (shouldRun) { - this.runOnAllPlugins(op, (p) => { + await this.runOnAllPluginsAsync(op, async (p) => { if (this.canRunEventOnPlugin(event, p)) { - method(p, event); + await method(p, event); } }); } @@ -507,6 +542,20 @@ export class Itly { }); } + private async runOnAllPluginsAsync(op: string, method: (p: Plugin) => Promise): Promise { + const promises = this.plugins.map(async (plugin) => { + try { + await method(plugin); + } catch (e) { + this.logger.error(`Error in ${plugin.id}.${op}(). ${e.message}.`); + } + }); + await Promise.race([ + Promise.all(promises), + new Promise((resolve) => setTimeout(resolve, 3000)), + ]); + } + private capitalize(str: string) { return str.charAt(0).toUpperCase() + str.slice(1); } diff --git a/packages/sdk/lib/browser.ts b/packages/sdk/lib/browser.ts index 71988a8a..b8f93565 100644 --- a/packages/sdk/lib/browser.ts +++ b/packages/sdk/lib/browser.ts @@ -59,7 +59,7 @@ export class Itly { userId = undefined; } - this.itly.identify(userId, identifyProperties, options); + return this.itly.identify(userId, identifyProperties, options); } /** From 6d27fbaef3bd038e5b682cea57a305bf9dbec178 Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Thu, 4 Mar 2021 21:16:18 +0400 Subject: [PATCH 2/5] fix: clear Promise.race timeout object --- packages/sdk/lib/base.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/sdk/lib/base.ts b/packages/sdk/lib/base.ts index edfd880e..dd61f718 100644 --- a/packages/sdk/lib/base.ts +++ b/packages/sdk/lib/base.ts @@ -550,10 +550,16 @@ export class Itly { this.logger.error(`Error in ${plugin.id}.${op}(). ${e.message}.`); } }); + let timeout; await Promise.race([ Promise.all(promises), - new Promise((resolve) => setTimeout(resolve, 3000)), + new Promise((resolve) => { + timeout = setTimeout(resolve, 3000); + }), ]); + if (timeout) { + clearTimeout(timeout); + } } private capitalize(str: string) { From cd520b5de19451c6ad5ecfd941b25676f67ff1c4 Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Tue, 9 Mar 2021 11:32:05 +0400 Subject: [PATCH 3/5] fix: base plugin methods return Promise --- README.md | 12 ++++++------ __tests__/src/CustomPlugin.ts | 10 +++++----- __tests__/src/ErrorPlugin.ts | 10 +++++----- packages/plugin-amplitude-node/lib/index.ts | 4 ++-- packages/plugin-amplitude/lib/index.ts | 6 +++--- packages/plugin-braze-node/lib/index.ts | 4 ++-- packages/plugin-braze/lib/index.ts | 4 ++-- .../plugin-firebase-react-native/lib/index.ts | 6 +++--- packages/plugin-mixpanel-node/lib/index.ts | 8 ++++---- packages/plugin-mixpanel/lib/index.ts | 8 ++++---- packages/plugin-mparticle/lib/index.ts | 4 ++-- packages/plugin-segment-node/lib/index.ts | 14 +++++++------- packages/plugin-segment/lib/index.ts | 12 ++++++------ packages/plugin-snowplow/lib/index.ts | 8 ++++---- packages/sdk/lib/base.ts | 16 ++++++++-------- 15 files changed, 63 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index c1aa1652..825a28f5 100644 --- a/README.md +++ b/README.md @@ -203,19 +203,19 @@ import { ItlyNode as Itly } from '@itly/sdk'; load(options: PluginLoadOptions): void {...} - async alias(userId: string, previousId?: string): Promise {...} + async alias(userId: string, previousId?: string) {...} - async group(userId: string | undefined, groupId: string, properties?: Properties): Promise {...} + async group(userId: string | undefined, groupId: string, properties?: Properties) {...} - async identify(userId?: string, properties?: Properties): Promise {...} + async identify(userId?: string, properties?: Properties) {...} - async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise {...} + async page(userId?: string, category?: string, name?: string, properties?: Properties) {...} reset(): void {...} - async flush(): Promise {...} + async flush() {...} - async track(userId: string | undefined, event: ItlyEvent): Promise {...} + async track(userId: string | undefined, event: ItlyEvent) {...} validate(event: Event): ValidationResponse {...} } diff --git a/__tests__/src/CustomPlugin.ts b/__tests__/src/CustomPlugin.ts index 8cb51391..0eee118d 100644 --- a/__tests__/src/CustomPlugin.ts +++ b/__tests__/src/CustomPlugin.ts @@ -29,11 +29,11 @@ export default class CustomPlugin extends RequestLoggerPlugin { }; } - async alias(userId: string, previousId: string | undefined): Promise { + async alias(userId: string, previousId: string | undefined) { this.log(`alias() userId='${userId}' previousId='${previousId}'`); } - async identify(userId: string | undefined, properties: Properties | undefined): Promise { + async identify(userId: string | undefined, properties: Properties | undefined) { this.log(`identify() userId='${userId}' properties=${this.stringify(properties)}`); } @@ -49,7 +49,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - async group(userId: string | undefined, groupId: string, properties: Properties | undefined): Promise { + async group(userId: string | undefined, groupId: string, properties: Properties | undefined) { this.log(`group() userId='${userId}' groupId='${groupId}' properties=${this.stringify(properties)}`); } @@ -66,7 +66,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { + async page(userId?: string, category?: string, name?: string, properties?: Properties) { this.log( `page() userId='${userId}' category='${category}' name='${name}' properties=${this.stringify(properties)}`, ); @@ -86,7 +86,7 @@ export default class CustomPlugin extends RequestLoggerPlugin { ); } - async track(userId: string | undefined, { name, properties }: Event): Promise { + async track(userId: string | undefined, { name, properties }: Event) { this.log(`track() userId='${userId}' event='${name}' properties=${this.stringify(properties)}`); } diff --git a/__tests__/src/ErrorPlugin.ts b/__tests__/src/ErrorPlugin.ts index f10ba48d..80d1b07f 100644 --- a/__tests__/src/ErrorPlugin.ts +++ b/__tests__/src/ErrorPlugin.ts @@ -19,11 +19,11 @@ export default class ErrorPlugin extends Plugin { }; } - async alias(userId: string, previousId: string | undefined): Promise { + async alias(userId: string, previousId: string | undefined) { throw new Error('Error in alias().'); } - async identify(userId: string | undefined, properties: Properties | undefined): Promise { + async identify(userId: string | undefined, properties: Properties | undefined) { throw new Error('Error in identify().'); } @@ -35,7 +35,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postIdentify().'); } - async group(userId: string | undefined, groupId: string, properties: Properties | undefined): Promise { + async group(userId: string | undefined, groupId: string, properties: Properties | undefined) { throw new Error('Error in group().'); } @@ -48,7 +48,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postGroup().'); } - async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { + async page(userId?: string, category?: string, name?: string, properties?: Properties) { throw new Error('Error in page().'); } @@ -62,7 +62,7 @@ export default class ErrorPlugin extends Plugin { throw new Error('Error in postPage().'); } - async track(userId: string | undefined, event: Event): Promise { + async track(userId: string | undefined, event: Event) { throw new Error('Error in track().'); } diff --git a/packages/plugin-amplitude-node/lib/index.ts b/packages/plugin-amplitude-node/lib/index.ts index b79240a1..fd266f60 100644 --- a/packages/plugin-amplitude-node/lib/index.ts +++ b/packages/plugin-amplitude-node/lib/index.ts @@ -51,7 +51,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { this.amplitude = new Amplitude(this.apiKey, this.options); } - async identify(userId: string, properties?: Properties, options?: IdentifyOptions): Promise { + async identify(userId: string, properties?: Properties, options?: IdentifyOptions) { const { callback } = this.getPluginCallOptions(options); const payload = { user_id: userId, @@ -68,7 +68,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { } } - async track(userId: string, { name, properties }: Event, options?: TrackOptions): Promise { + async track(userId: string, { name, properties }: Event, options?: TrackOptions) { const { callback } = this.getPluginCallOptions(options); const payload = { event_type: name, diff --git a/packages/plugin-amplitude/lib/index.ts b/packages/plugin-amplitude/lib/index.ts index 6dcdeb3b..556fafcd 100644 --- a/packages/plugin-amplitude/lib/index.ts +++ b/packages/plugin-amplitude/lib/index.ts @@ -45,7 +45,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { } } - async identify(userId: string | undefined, properties?: Properties, options?: IdentifyOptions): Promise { + async identify(userId: string | undefined, properties?: Properties, options?: IdentifyOptions) { if (userId) { this.amplitude.getInstance().setUserId(userId); } @@ -73,7 +73,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { }); } - async track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions): Promise { + async track(userId: string | undefined, { name, properties }: Event, options?: TrackOptions) { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId} ${name} ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -93,7 +93,7 @@ export class AmplitudePlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: AmplitudeCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (statusCode: number, responseBody: string, details: unknown) => { diff --git a/packages/plugin-braze-node/lib/index.ts b/packages/plugin-braze-node/lib/index.ts index 5306ef9c..9285f937 100644 --- a/packages/plugin-braze-node/lib/index.ts +++ b/packages/plugin-braze-node/lib/index.ts @@ -27,7 +27,7 @@ export class BrazePlugin extends RequestLoggerPlugin { super.load(options); } - async identify(userId: string, properties?: Properties): Promise { + async identify(userId: string, properties?: Properties) { const responseLogger = this.logger.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); const eventProperties = BrazePlugin.toBrazeProperties(properties); await this.postTrackerRequest(responseLogger, { @@ -40,7 +40,7 @@ export class BrazePlugin extends RequestLoggerPlugin { }); } - async track(userId: string, { name, properties }: Event): Promise { + async track(userId: string, { name, properties }: Event) { const responseLogger = this.logger.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); const eventProperties = BrazePlugin.toBrazeProperties(properties); await this.postTrackerRequest(responseLogger, { diff --git a/packages/plugin-braze/lib/index.ts b/packages/plugin-braze/lib/index.ts index 50e44224..5f8e03b4 100644 --- a/packages/plugin-braze/lib/index.ts +++ b/packages/plugin-braze/lib/index.ts @@ -44,7 +44,7 @@ export class BrazePlugin extends RequestLoggerPlugin { } } - async identify(userId: string | undefined, properties?: Properties): Promise { + async identify(userId: string | undefined, properties?: Properties) { if (userId) { this.appboy!.changeUser(userId); } @@ -56,7 +56,7 @@ export class BrazePlugin extends RequestLoggerPlugin { } } - async track(userId: string | undefined, { name, properties }: Event): Promise { + async track(userId: string | undefined, { name, properties }: Event) { if (userId) { this.appboy!.changeUser(userId); } diff --git a/packages/plugin-firebase-react-native/lib/index.ts b/packages/plugin-firebase-react-native/lib/index.ts index 56500dfa..74a154a5 100644 --- a/packages/plugin-firebase-react-native/lib/index.ts +++ b/packages/plugin-firebase-react-native/lib/index.ts @@ -16,7 +16,7 @@ export class FirebasePlugin extends RequestLoggerPlugin { super('firebase'); } - async identify(userId: string | undefined, properties?: Properties): Promise { + async identify(userId: string | undefined, properties?: Properties) { const responseLogger = this.logger!.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); try { if (userId) { @@ -35,7 +35,7 @@ export class FirebasePlugin extends RequestLoggerPlugin { } } - async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { + async page(userId?: string, category?: string, name?: string, properties?: Properties) { const responseLogger = this.logger!.logRequest('page', `${userId}, ${category}, ${name}, ${JSON.stringify(properties)}`); try { if (userId) { @@ -51,7 +51,7 @@ export class FirebasePlugin extends RequestLoggerPlugin { } } - async track(userId: string | undefined, { name, properties }: Event): Promise { + async track(userId: string | undefined, { name, properties }: Event) { const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); try { if (userId) { diff --git a/packages/plugin-mixpanel-node/lib/index.ts b/packages/plugin-mixpanel-node/lib/index.ts index 514cd839..caa18b1b 100644 --- a/packages/plugin-mixpanel-node/lib/index.ts +++ b/packages/plugin-mixpanel-node/lib/index.ts @@ -42,7 +42,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { this.mixpanel = Mixpanel.init(this.apiKey, this.options); } - async alias(userId: string, previousId: string, options?: AliasOptions): Promise { + async alias(userId: string, previousId: string, options?: AliasOptions) { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('alias', `${userId}, ${previousId}`); return new Promise((resolve, reject) => { @@ -50,7 +50,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { }); } - async identify(userId: string, properties: Properties | undefined, options?: IdentifyOptions): Promise { + async identify(userId: string, properties: Properties | undefined, options?: IdentifyOptions) { const { callback } = this.getPluginCallOptions(options); const payload = { distinct_id: userId, @@ -62,7 +62,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { }); } - async track(userId: string, { name, properties }: Event, options?: TrackOptions): Promise { + async track(userId: string, { name, properties }: Event, options?: TrackOptions) { const { callback } = this.getPluginCallOptions(options); const payload = { distinct_id: userId, @@ -77,7 +77,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: MixpanelCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (err: Error | undefined): any => { diff --git a/packages/plugin-mixpanel/lib/index.ts b/packages/plugin-mixpanel/lib/index.ts index eb9cfbf7..56bc9c35 100644 --- a/packages/plugin-mixpanel/lib/index.ts +++ b/packages/plugin-mixpanel/lib/index.ts @@ -47,7 +47,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { async alias( userId: string, previousId: string | undefined, - ): Promise { + ) { this.mixpanel.alias(userId, previousId); } @@ -55,7 +55,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { userId: string | undefined, properties: Properties | undefined, options?: IdentifyOptions, - ): Promise { + ) { const { callback } = this.getPluginCallOptions(options); if (userId) { @@ -76,7 +76,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { userId: string | undefined, { name, properties }: Event, options?: TrackOptions, - ): Promise { + ) { const { callback } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -91,7 +91,7 @@ export class MixpanelPlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: MixpanelCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (...args: any[]) => { diff --git a/packages/plugin-mparticle/lib/index.ts b/packages/plugin-mparticle/lib/index.ts index f2a6fcd7..2f346ada 100644 --- a/packages/plugin-mparticle/lib/index.ts +++ b/packages/plugin-mparticle/lib/index.ts @@ -69,11 +69,11 @@ export class MparticlePlugin extends RequestLoggerPlugin { } } - async page(userId?: string, category?: string, name?: string, properties?: Properties): Promise { + async page(userId?: string, category?: string, name?: string, properties?: Properties) { this.mparticle.logPageView(name, properties); } - async track(userId: string | undefined, { name, properties }: Event): Promise { + async track(userId: string | undefined, { name, properties }: Event) { this.mparticle.logEvent( name, this.mparticle.EventType.Other, diff --git a/packages/plugin-segment-node/lib/index.ts b/packages/plugin-segment-node/lib/index.ts index 980866f0..ed414c4c 100644 --- a/packages/plugin-segment-node/lib/index.ts +++ b/packages/plugin-segment-node/lib/index.ts @@ -56,7 +56,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string, previousId: string, options?: AliasOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -73,7 +73,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string, properties: Properties | undefined, options?: IdentifyOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -91,7 +91,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { groupId: string, properties: Properties | undefined, options?: GroupOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -111,7 +111,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { name: string, properties: Properties | undefined, options?: PageOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -130,7 +130,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string, { name, properties }: Event, options?: TrackOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const payload = { ...segmentOptions, @@ -145,7 +145,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { } flush() { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { this.segment!.flush((err: Error) => { if (err) { return reject(err); @@ -158,7 +158,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: SegmentCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (err: Error | undefined) => { diff --git a/packages/plugin-segment/lib/index.ts b/packages/plugin-segment/lib/index.ts index 01b1f589..93621255 100644 --- a/packages/plugin-segment/lib/index.ts +++ b/packages/plugin-segment/lib/index.ts @@ -60,7 +60,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string, previousId: string | undefined, options?: AliasOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('alias', `${userId}, ${previousId}`); return new Promise((resolve, reject) => { @@ -77,7 +77,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string | undefined, properties?: Properties, options?: IdentifyOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('identify', `${userId}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -103,7 +103,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { groupId: string, properties?: Properties, options?: GroupOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('group', `${userId}, ${groupId}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -122,7 +122,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { name?: string, properties?: Properties, options?: PageOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('page', `${userId}, ${category}, ${name}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -140,7 +140,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { userId: string | undefined, { name, properties }: Event, options?: TrackOptions, - ): Promise { + ) { const { callback, options: segmentOptions } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -160,7 +160,7 @@ export class SegmentPlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: SegmentCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (...args: any[]) => { diff --git a/packages/plugin-snowplow/lib/index.ts b/packages/plugin-snowplow/lib/index.ts index 726b5864..ace76eaa 100644 --- a/packages/plugin-snowplow/lib/index.ts +++ b/packages/plugin-snowplow/lib/index.ts @@ -53,7 +53,7 @@ export class SnowplowPlugin extends RequestLoggerPlugin { } } - async identify(userId: string | undefined, properties?: Properties): Promise { + async identify(userId: string | undefined, properties?: Properties) { this.snowplow('setUserId', userId); } @@ -63,7 +63,7 @@ export class SnowplowPlugin extends RequestLoggerPlugin { name?: string, properties?: Properties, options?: PageOptions, - ): Promise { + ) { const { callback, contexts } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('page', `${userId}, ${category}, ${name}, ${JSON.stringify(properties)}`); return new Promise((resolve, reject) => { @@ -82,7 +82,7 @@ export class SnowplowPlugin extends RequestLoggerPlugin { userId: string | undefined, { name, properties, version }: Event, options?: TrackOptions, - ): Promise { + ) { const schemaVer = version && version.replace(/\./g, '-'); const { callback, contexts } = this.getPluginCallOptions(options); const responseLogger = this.logger!.logRequest('track', `${userId}, ${name}, ${JSON.stringify(properties)}`); @@ -103,7 +103,7 @@ export class SnowplowPlugin extends RequestLoggerPlugin { private wrapCallback( responseLogger: ResponseLogger, callback: SnowplowCallback | undefined, - resolve: (value?: void) => void, + resolve: () => void, reject: (reason?: any) => void, ) { return (...args: any[]) => { diff --git a/packages/sdk/lib/base.ts b/packages/sdk/lib/base.ts index 9ebd0353..94d4971f 100644 --- a/packages/sdk/lib/base.ts +++ b/packages/sdk/lib/base.ts @@ -63,7 +63,7 @@ export abstract class Plugin { userId: string, previousId: string | undefined, options?: AliasOptions, - ): Promise { + ): Promise { return Promise.resolve(); } @@ -71,7 +71,7 @@ export abstract class Plugin { userId: string | undefined, properties: Properties | undefined, options?: IdentifyOptions, - ): Promise { + ): Promise { return Promise.resolve(); } @@ -86,7 +86,7 @@ export abstract class Plugin { groupId: string, properties: Properties | undefined, options?: GroupOptions, - ): Promise { + ): Promise { return Promise.resolve(); } @@ -103,7 +103,7 @@ export abstract class Plugin { name: string | undefined, properties: Properties | undefined, options?: PageOptions, - ): Promise { + ): Promise { return Promise.resolve(); } @@ -115,7 +115,7 @@ export abstract class Plugin { validationResponses: ValidationResponse[], ): void {} - async track(userId: string | undefined, event: Event, options?: TrackOptions): Promise { + async track(userId: string | undefined, event: Event, options?: TrackOptions): Promise { return Promise.resolve(); } @@ -123,7 +123,7 @@ export abstract class Plugin { reset(): void {} - async flush(): Promise { + async flush(): Promise { return Promise.resolve(); } @@ -450,7 +450,7 @@ export class Itly { private async validateAndRunOnAllPlugins( op: string, event: Event, - method: (plugin: Plugin, event: Event) => Promise, + method: (plugin: Plugin, event: Event) => Promise, postMethod: (plugin: Plugin, event: Event, validationResponses: ValidationResponse[]) => any, context?: Properties, ): Promise { @@ -528,7 +528,7 @@ export class Itly { }); } - private async runOnAllPluginsAsync(op: string, method: (p: Plugin) => Promise): Promise { + private async runOnAllPluginsAsync(op: string, method: (p: Plugin) => Promise): Promise { const promises = this.plugins.map(async (plugin) => { try { await method(plugin); From e3eb2e015b085d9549800b031a03e028a5708641 Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Thu, 11 Mar 2021 15:27:31 +0400 Subject: [PATCH 4/5] fix: sdk methods return nested Promise --- .../lib/__tests__/smoke.test.ts | 18 +- .../lib/__tests__/smoke.test.ts | 12 +- .../lib/__tests__/smoke.test.ts | 12 +- .../__snapshots__/browser-smoke.test.ts.snap | 156 +++++++------- .../__snapshots__/node-smoke.test.ts.snap | 200 +++++++++--------- .../lib/__tests__/browser-smoke.test.ts | 26 +-- .../lib/__tests__/node-smoke.test.ts | 26 +-- .../lib/__tests__/browser-smoke.test.ts | 30 +-- .../lib/__tests__/node-smoke.test.ts | 28 +-- .../__snapshots__/browser-smoke.test.ts.snap | 24 +-- .../__snapshots__/node-smoke.test.ts.snap | 64 +++--- .../sdk/lib/__tests__/browser-smoke.test.ts | 42 ++-- packages/sdk/lib/__tests__/node-smoke.test.ts | 36 ++-- packages/sdk/lib/base.ts | 151 +++++++------ 14 files changed, 418 insertions(+), 407 deletions(-) diff --git a/packages/plugin-amplitude/lib/__tests__/smoke.test.ts b/packages/plugin-amplitude/lib/__tests__/smoke.test.ts index 3f2977cb..d2df7699 100644 --- a/packages/plugin-amplitude/lib/__tests__/smoke.test.ts +++ b/packages/plugin-amplitude/lib/__tests__/smoke.test.ts @@ -74,7 +74,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', // Try tracking before load, should throw errror try { - await itly.identify(userId); + itly.identify(userId); } catch (e) { // eslint-disable-next-line no-console console.log(`Caught expected error. ${e.message}`); @@ -86,19 +86,19 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', plugins: [plugin].concat(options.plugins), }); - await itly.identify(undefined); - await itly.identify('temp-user-id'); - await itly.identify(undefined, { + itly.identify(undefined); + itly.identify('temp-user-id'); + itly.identify(undefined, { userProp: 'A user property value', }); - await itly.alias(userId, 'temp-user-id'); - await itly.group(groupId); + itly.alias(userId, 'temp-user-id'); + itly.group(groupId); - await itly.track({ + itly.track({ name: 'Event No Properties', }); - await itly.track({ + itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -113,7 +113,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - await itly.track({ + itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts b/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts index ca09aeb3..1579a282 100644 --- a/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts +++ b/packages/plugin-iteratively-node/lib/__tests__/smoke.test.ts @@ -63,7 +63,7 @@ test.each([ }).not.toThrow(); }); -test('should not post if on production', async () => { +test('should not post if on production', () => { const environment = 'production'; const iterativelyPlugin = new IterativelyPlugin( @@ -80,7 +80,7 @@ test('should not post if on production', async () => { plugins: [iterativelyPlugin], }); - await itly!.track(defaultUserId, defaultTestEvent); + itly!.track(defaultUserId, defaultTestEvent); expect(fetch).not.toBeCalled(); }); @@ -110,7 +110,7 @@ test('should post when flushAt reached', async () => { }, })); - await Promise.all(events.map((event) => itly!.track(defaultUserId, event))); + events.forEach((event) => itly!.track(defaultUserId, event)); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); @@ -159,7 +159,7 @@ test('should post in flushInterval', async () => { })); for (let i = 0; i < events.length; i += 1) { - await itly!.track(defaultUserId, events[i]); + itly!.track(defaultUserId, events[i]); await wait(flushInterval / 2); } @@ -209,7 +209,7 @@ test('should post on explicit flush()', async () => { })); for (let i = 0; i < events.length; i += 1) { - await itly!.track(defaultUserId, events[i]); + itly!.track(defaultUserId, events[i]); } await itly!.flush(); @@ -259,7 +259,7 @@ test('should omit event properties if configured', async () => { }, }; - await itly!.track(defaultUserId, event); + itly!.track(defaultUserId, event); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); diff --git a/packages/plugin-iteratively/lib/__tests__/smoke.test.ts b/packages/plugin-iteratively/lib/__tests__/smoke.test.ts index be6faacc..a4961999 100644 --- a/packages/plugin-iteratively/lib/__tests__/smoke.test.ts +++ b/packages/plugin-iteratively/lib/__tests__/smoke.test.ts @@ -67,7 +67,7 @@ test.each([ }).not.toThrow(); }); -test('should not post if on production', async () => { +test('should not post if on production', () => { const environment = 'production'; const iterativelyPlugin = new IterativelyPlugin( @@ -84,7 +84,7 @@ test('should not post if on production', async () => { plugins: [iterativelyPlugin], }); - await itly!.track(defaultTestEvent); + itly!.track(defaultTestEvent); expect(fetch).not.toBeCalled(); }); @@ -114,7 +114,7 @@ test('should post when flushAt reached', async () => { }, })); - await Promise.all(events.map((event) => itly!.track(event))); + events.forEach((event) => itly!.track(event)); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); @@ -163,7 +163,7 @@ test('should post in flushInterval', async () => { })); for (let i = 0; i < events.length; i += 1) { - await itly!.track(events[i]); + itly!.track(events[i]); await wait(flushInterval / 2); } @@ -213,7 +213,7 @@ test('should post on explicit flush()', async () => { })); for (let i = 0; i < events.length; i += 1) { - await itly!.track(events[i]); + itly!.track(events[i]); } await itly!.flush(); @@ -265,7 +265,7 @@ test('should omit event properties if configured', async () => { }, }; - await itly!.track(event); + itly!.track(event); expect(fetch).toHaveBeenCalledTimes(1); expect(fetch).toHaveBeenCalledWith(defaultTestUrl, defaultFetchRequest); diff --git a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap index 7ed8372b..050f9cb5 100644 --- a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap +++ b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap @@ -12,11 +12,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -24,11 +24,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -80,11 +80,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -92,11 +92,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -120,11 +120,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -136,11 +136,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -185,11 +185,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -197,11 +197,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -209,11 +209,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -253,11 +253,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -265,11 +265,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -281,11 +281,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -297,11 +297,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -313,11 +313,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], ] `; @@ -334,11 +334,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -346,11 +346,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -358,11 +358,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -370,11 +370,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -390,11 +390,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -402,11 +402,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -414,11 +414,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -426,11 +426,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -442,11 +442,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={}", + "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", @@ -458,11 +458,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -474,11 +474,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], ] `; @@ -495,11 +495,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -507,11 +507,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -519,11 +519,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -531,11 +531,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -551,11 +551,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -563,11 +563,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -575,11 +575,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -587,11 +587,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -599,11 +599,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={}", + "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", @@ -611,11 +611,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -623,11 +623,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], ] `; diff --git a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap index 46deefc4..0a99cd5f 100644 --- a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap +++ b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap @@ -12,11 +12,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -24,11 +24,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -80,11 +80,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -92,11 +92,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -120,11 +120,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -136,11 +136,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -185,11 +185,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -197,11 +197,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -209,11 +209,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -253,11 +253,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -265,11 +265,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -281,11 +281,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -297,11 +297,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -313,11 +313,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], ] `; @@ -334,11 +334,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -346,11 +346,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -358,11 +358,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -370,11 +370,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -390,11 +390,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -402,11 +402,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -414,11 +414,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -426,11 +426,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -442,11 +442,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -458,11 +458,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -474,11 +474,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], ] `; @@ -495,11 +495,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -507,11 +507,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -519,11 +519,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -531,11 +531,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -551,11 +551,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -563,11 +563,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -575,11 +575,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -587,11 +587,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -603,11 +603,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", @@ -619,11 +619,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -635,11 +635,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], ] `; @@ -656,11 +656,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -668,11 +668,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", @@ -680,11 +680,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -692,11 +692,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", @@ -712,11 +712,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -724,11 +724,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", @@ -736,11 +736,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", @@ -748,11 +748,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -760,11 +760,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", @@ -772,11 +772,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -784,11 +784,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], ] `; diff --git a/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts b/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts index 880c47a4..81171c97 100644 --- a/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts +++ b/packages/plugin-schema-validator/lib/__tests__/browser-smoke.test.ts @@ -89,54 +89,54 @@ test.only.each(testParams.map((test) => [test.name, test]) as any[])('%s', context: ctx, }); - await itly.identify(undefined, identifyProps); - await itly.identify(tempUserId, identifyProps); + itly.identify(undefined, identifyProps); + itly.identify(tempUserId, identifyProps); try { - await itly.identify(tempUserId); + itly.identify(tempUserId); } catch (e) { console.log('Caught validation error.', e.message); } try { - await itly.identify(tempUserId, { + itly.identify(tempUserId, { badProp: 'unsupported property', }); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.alias(userId); - await itly.alias(userId, tempUserId); + itly.alias(userId); + itly.alias(userId, tempUserId); try { - await itly.group(groupId); + itly.group(groupId); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.group(groupId, { + itly.group(groupId, { requiredBoolean: true, optionalString: undefined, }); try { - await itly.page('page category 1', 'page name 1'); + itly.page('page category 1', 'page name 1'); } catch (e) { console.log('Caught validation error.', e.message); } try { - await itly.page('page category 2', 'page name 2', { + itly.page('page category 2', 'page name 2', { pageProp: 'a page property', }); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.track({ + itly.track({ name: 'Event No Properties', properties: {}, }); - await itly.track({ + itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -151,7 +151,7 @@ test.only.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - await itly.track({ + itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts b/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts index 4a60b21e..6f88f35f 100644 --- a/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts +++ b/packages/plugin-schema-validator/lib/__tests__/node-smoke.test.ts @@ -98,54 +98,54 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', context: ctx, }); - await itly.identify(undefined, identifyProps); - await itly.identify(tempUserId, identifyProps); + itly.identify(undefined, identifyProps); + itly.identify(tempUserId, identifyProps); try { - await itly.identify(tempUserId); + itly.identify(tempUserId); } catch (e) { console.log('Caught validation error.', e.message); } try { - await itly.identify(tempUserId, { + itly.identify(tempUserId, { badProp: 'unsupported property', }); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.alias(userId); - await itly.alias(userId, tempUserId); + itly.alias(userId); + itly.alias(userId, tempUserId); try { - await itly.group(userId, groupId); + itly.group(userId, groupId); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.group(userId, groupId, { + itly.group(userId, groupId, { requiredBoolean: true, optionalString: undefined, }); try { - await itly.page(userId, 'page category 1', 'page name 1'); + itly.page(userId, 'page category 1', 'page name 1'); } catch (e) { console.log('Caught validation error.', e.message); } try { - await itly.page(userId, 'page category 2', 'page name 2', { + itly.page(userId, 'page category 2', 'page name 2', { pageProp: 'a page property', }); } catch (e) { console.log('Caught validation error.', e.message); } - await itly.track(userId, { + itly.track(userId, { name: 'Event No Properties', properties: {}, }); - await itly.track(userId, { + itly.track(userId, { name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -160,7 +160,7 @@ test.each(testParams.map((test) => [test.name, test]) as any[])('%s', }); try { - await itly.track(userId, { + itly.track(userId, { name: 'EventMaxIntForTest', properties: { intMax10: 20, diff --git a/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts b/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts index d93d3ede..d7168cb9 100644 --- a/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts +++ b/packages/plugin-testing/lib/__tests__/browser-smoke.test.ts @@ -43,55 +43,55 @@ beforeEach(() => { }); describe('TestingPlugin/browser', () => { - it('plugin.all', async () => { + it('plugin.all', () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await itly.track(dataSearchedEvent1); - await itly.track(dataSearchedEvent2); - await itly.track(dataSearchedEvent3); + itly.track(dataSearchedEvent1); + itly.track(dataSearchedEvent2); + itly.track(dataSearchedEvent3); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); }); - it('plugin.ofType', async () => { + it('plugin.ofType', () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await itly.track(dataSearchedEvent1); - await itly.track(dataSearchedEvent2); - await itly.track(dataSearchedEvent3); + itly.track(dataSearchedEvent1); + itly.track(dataSearchedEvent2); + itly.track(dataSearchedEvent3); expect(testingPlugin.ofType(DataSearchedEvent)).toHaveLength(3); // eslint-disable-next-line max-len expect(testingPlugin.ofType(DataSearchedEvent)).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); }); - it('plugin.firstOfType', async () => { + it('plugin.firstOfType', () => { const dataSearchedEvent = new DataSearchedEvent({ page: 'Stream' }); const dataFilteredEvent = new DataFilteredEvent({ page: 'Stream' }); const streamPausedEvent = new StreamPausedEvent(); - await itly.track(dataSearchedEvent); - await itly.track(dataFilteredEvent); - await itly.track(streamPausedEvent); + itly.track(dataSearchedEvent); + itly.track(dataFilteredEvent); + itly.track(streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent)).toEqual(streamPausedEvent); }); - it('plugin.reset', async () => { + it('plugin.reset', () => { const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await Promise.all([ + [ dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3, - ].map((ev) => itly.track(ev))); + ].forEach((ev) => itly.track(ev)); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3]); diff --git a/packages/plugin-testing/lib/__tests__/node-smoke.test.ts b/packages/plugin-testing/lib/__tests__/node-smoke.test.ts index 998ec5c3..46bcc320 100644 --- a/packages/plugin-testing/lib/__tests__/node-smoke.test.ts +++ b/packages/plugin-testing/lib/__tests__/node-smoke.test.ts @@ -47,15 +47,13 @@ beforeEach(() => { }); describe('TestingPlugin/node', () => { - it('plugin.all', async () => { + it('plugin.all', () => { const userId = 'user1'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await Promise.all([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].map( - (ev) => itly.track(userId, ev), - )); + [dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].forEach((ev) => itly.track(userId, ev)); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all(userId)).toHaveLength(3); @@ -71,17 +69,15 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.all('random')).toEqual([]); }); - it('plugin.ofType', async () => { + it('plugin.ofType', () => { const userId = 'user1'; const userId2 = 'user2'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await Promise.all([dataSearchedEvent1, dataSearchedEvent2].map( - (ev) => itly.track(userId, ev), - )); - await itly.track(userId2, dataSearchedEvent3); + [dataSearchedEvent1, dataSearchedEvent2].forEach((ev) => itly.track(userId, ev)); + itly.track(userId2, dataSearchedEvent3); expect(testingPlugin.ofType(DataSearchedEvent)).toHaveLength(3); // eslint-disable-next-line max-len @@ -91,7 +87,7 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.ofType(DataSearchedEvent, 'random')).toEqual([]); }); - it('plugin.firstOfType', async () => { + it('plugin.firstOfType', () => { const userId1 = 'user1'; const userId2 = 'user2'; const userId3 = 'user3'; @@ -99,9 +95,9 @@ describe('TestingPlugin/node', () => { const dataFilteredEvent = new DataFilteredEvent({ page: 'Stream' }); const streamPausedEvent = new StreamPausedEvent(); - await itly.track(userId1, dataSearchedEvent); - await itly.track(userId2, dataFilteredEvent); - await itly.track(userId3, streamPausedEvent); + itly.track(userId1, dataSearchedEvent); + itly.track(userId2, dataFilteredEvent); + itly.track(userId3, streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent)).toEqual(streamPausedEvent); expect(testingPlugin.firstOfType(StreamPausedEvent, userId3)).toEqual(streamPausedEvent); @@ -109,15 +105,13 @@ describe('TestingPlugin/node', () => { expect(testingPlugin.firstOfType(DataSearchedEvent, userId2)).toEqual(null); }); - it('plugin.reset', async () => { + it('plugin.reset', () => { const userId = 'user1'; const dataSearchedEvent1 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent2 = new DataSearchedEvent({ page: 'Stream' }); const dataSearchedEvent3 = new DataSearchedEvent({ page: 'Stream' }); - await Promise.all([dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].map( - (ev) => itly.track(userId, ev), - )); + [dataSearchedEvent1, dataSearchedEvent2, dataSearchedEvent3].forEach((ev) => itly.track(userId, ev)); expect(testingPlugin.all()).toHaveLength(3); expect(testingPlugin.all()).toEqual([ diff --git a/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap b/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap index 96429802..0d89dba3 100644 --- a/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap +++ b/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap @@ -14,11 +14,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"userProp\\":1}", + "postIdentify() userId='undefined' properties={\\"userProp\\":1} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"userProp\\":1} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"userProp\\":1}", ], Array [ "CustomPlugin: ", @@ -30,11 +30,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"}", + "postGroup() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"}", ], Array [ "CustomPlugin: ", @@ -42,11 +42,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -58,11 +58,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -74,11 +74,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -90,11 +90,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], ] `; diff --git a/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap b/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap index 591d25de..ce3a1852 100644 --- a/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap +++ b/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap @@ -18,11 +18,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties=undefined", + "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties=undefined", ], Array [ "CustomPlugin: ", @@ -30,11 +30,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -42,11 +42,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", + "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", ], Array [ "CustomPlugin: ", @@ -62,11 +62,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -74,11 +74,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -90,11 +90,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", @@ -106,11 +106,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -122,11 +122,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], ] `; @@ -149,11 +149,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties=undefined", + "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties=undefined", ], Array [ "CustomPlugin: ", @@ -161,11 +161,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", + "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", ], Array [ "CustomPlugin: ", @@ -193,11 +193,11 @@ Array [ ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", @@ -205,11 +205,11 @@ Array [ ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", @@ -217,11 +217,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties=undefined", + "postTrack() userId='test-user-id' event='Event No Properties' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties=undefined", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], ] `; diff --git a/packages/sdk/lib/__tests__/browser-smoke.test.ts b/packages/sdk/lib/__tests__/browser-smoke.test.ts index 151e74da..cad069bb 100644 --- a/packages/sdk/lib/__tests__/browser-smoke.test.ts +++ b/packages/sdk/lib/__tests__/browser-smoke.test.ts @@ -15,7 +15,7 @@ beforeEach(() => { const Itly = requireForTestEnv(__dirname); -test('should load and track events to a custom destination (no validation)', async () => { +test('should load and track events to a custom destination (no validation)', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); const userId = 'test-user-id'; @@ -30,25 +30,25 @@ test('should load and track events to a custom destination (no validation)', asy plugins: [new CustomPlugin()], }); - await itly.identify(undefined, { + itly.identify(undefined, { userProp: 1, }); - await itly.alias(userId); + itly.alias(userId); - await itly.group('a-group-id', { + itly.group('a-group-id', { groupProp: 'test value', }); - await itly.page('page category', 'page name', { + itly.page('page category', 'page name', { pageProp: 'a page property', }); - await itly.track({ + itly.track({ name: 'Event No Properties', }); - await itly.track({ + itly.track({ name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -63,7 +63,7 @@ test('should load and track events to a custom destination (no validation)', asy }); try { - await itly.track({ + itly.track({ name: 'EventMaxIntForTest', properties: { intMax10: 20, @@ -78,7 +78,7 @@ test('should load and track events to a custom destination (no validation)', asy consoleSpy.mockRestore(); }); -test('should load and track events with properly merged context', async () => { +test('should load and track events with properly merged context', () => { const testingPlugin = new TestingPlugin(); const userId = 'test-user-id'; const context = { @@ -102,25 +102,25 @@ test('should load and track events with properly merged context', async () => { plugins: [testingPlugin], }); - await itly.identify(undefined, { + itly.identify(undefined, { userProp: 1, }); - await itly.alias(userId); + itly.alias(userId); - await itly.group('a-group-id', { + itly.group('a-group-id', { groupProp: 'test value', }); - await itly.page('page category', 'page name', { + itly.page('page category', 'page name', { pageProp: 'a page property', }); - await itly.track({ + itly.track({ name: 'Event No Properties', }); - await itly.track(new TrackingEvent({ + itly.track(new TrackingEvent({ requiredNumber: 2.0, requiredInteger: 42, requiredEnum: 'Enum1', @@ -151,7 +151,7 @@ test('should load and track events with properly merged context', async () => { expect(testingPlugin.firstOfType(TrackingEvent)).toEqual(trackingEvent); }); -test('other plugins should continue if another plugin throws errors in callback methods', async () => { +test('other plugins should continue if another plugin throws errors in callback methods', () => { const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); const itly = new Itly(); @@ -177,11 +177,11 @@ test('other plugins should continue if another plugin throws errors in callback dummyPlugin, ], }); - await itly.identify('tmp-id'); - await itly.alias(id, 'tmp-id'); - await itly.group('group-id'); - await itly.page('category', 'name'); - await itly.track({ + itly.identify('tmp-id'); + itly.alias(id, 'tmp-id'); + itly.group('group-id'); + itly.page('category', 'name'); + itly.track({ name: 'my-event', properties: { prop: 'a value', diff --git a/packages/sdk/lib/__tests__/node-smoke.test.ts b/packages/sdk/lib/__tests__/node-smoke.test.ts index 6faeed21..cb080610 100644 --- a/packages/sdk/lib/__tests__/node-smoke.test.ts +++ b/packages/sdk/lib/__tests__/node-smoke.test.ts @@ -63,7 +63,7 @@ describe('should load and track events to a custom destination (no validation)', async (name: string, { context, options }: TestParams) => { // Try tracking before load, should throw error try { - await itly.identify(userId); + itly.identify(userId); } catch (e) { console.log(`Caught expected error. ${e.message}`); } @@ -78,26 +78,26 @@ describe('should load and track events to a custom destination (no validation)', console.log(`Caught expected error. ${e.message}`); } - await itly.identify(undefined); - await itly.identify(tempUserId); - await itly.identify(tempUserId, { + itly.identify(undefined); + itly.identify(tempUserId); + itly.identify(tempUserId, { userProp: 'A user property value', }); - await itly.alias(userId); - await itly.alias(userId, tempUserId); + itly.alias(userId); + itly.alias(userId, tempUserId); - await itly.group(userId, groupId); + itly.group(userId, groupId); - await itly.page(userId, 'page category', 'page name', { + itly.page(userId, 'page category', 'page name', { pageProp: 'a page property', }); - await itly.track(userId, { + itly.track(userId, { name: 'Event No Properties', }); - await itly.track(userId, { + itly.track(userId, { name: 'Event With All Properties', properties: { requiredString: 'A required string', @@ -112,7 +112,7 @@ describe('should load and track events to a custom destination (no validation)', }); try { - await itly.track(userId, { + itly.track(userId, { name: 'EventMaxIntForTest', properties: { intMax10: 20, @@ -149,7 +149,7 @@ describe('should load and track events to a custom destination (no validation)', expect(spyPluginLoad).not.toHaveBeenCalled(); }); - test('should load and track events with properly merged context', async () => { + test('should load and track events with properly merged context', () => { const testingPlugin = new TestingPlugin(); const context = { requiredString: 'A required string', @@ -170,25 +170,25 @@ describe('should load and track events to a custom destination (no validation)', plugins: [testingPlugin], }); - await itly.identify(undefined, { + itly.identify(undefined, { userProp: 1, }); - await itly.alias(userId); + itly.alias(userId); - await itly.group('a-group-id', { + itly.group('a-group-id', { groupProp: 'test value', }); - await itly.page('page category', 'page name', { + itly.page('page category', 'page name', { pageProp: 'a page property', }); - await itly.track(userId, { + itly.track(userId, { name: 'Event No Properties', }); - await itly.track(userId, new TrackingEvent({ + itly.track(userId, new TrackingEvent({ requiredNumber: 2.0, requiredInteger: 42, requiredEnum: 'Enum1', diff --git a/packages/sdk/lib/base.ts b/packages/sdk/lib/base.ts index 94d4971f..a67878c0 100644 --- a/packages/sdk/lib/base.ts +++ b/packages/sdk/lib/base.ts @@ -200,6 +200,8 @@ const DEFAULT_PROD_OPTIONS: Required = { validation: Validation.TrackOnInvalid, }; +type ReturnedPromise = { promise: Promise }; + export class Itly { private options: Required | undefined = undefined; @@ -252,16 +254,18 @@ export class Itly { * @param previousId The user's previous ID. * @param options Options for this Alias call. */ - async alias( + alias( userId: string, previousId?: string, options?: AliasOptions, - ): Promise { + ): ReturnedPromise { if (!this.isInitializedAndEnabled()) { - return; + return { promise: Promise.resolve() }; } - await this.runOnAllPluginsAsync('alias', (p) => p.alias(userId, previousId, options)); + return { + promise: this.runOnAllPluginsAsync('alias', (p) => p.alias(userId, previousId, options)), + }; } /** @@ -270,13 +274,13 @@ export class Itly { * @param identifyProperties The user's properties. * @param options Options for this Identify call. */ - async identify( + identify( userId: string | undefined, identifyProperties?: Properties, options?: IdentifyOptions, - ): Promise { + ): ReturnedPromise { if (!this.isInitializedAndEnabled()) { - return; + return { promise: Promise.resolve() }; } const identifyEvent = { @@ -286,14 +290,16 @@ export class Itly { version: '0-0-0', }; - await this.validateAndRunOnAllPlugins( - 'identify', - identifyEvent, - (p, e) => p.identify(userId, identifyProperties, options), - (p, e, validationResponses) => p.postIdentify( - userId, identifyProperties, validationResponses, + return { + promise: this.validateAndRunOnAllPlugins( + 'identify', + identifyEvent, + (p, e) => p.identify(userId, identifyProperties, options), + (p, e, validationResponses) => p.postIdentify( + userId, identifyProperties, validationResponses, + ), ), - ); + }; } /** @@ -303,14 +309,14 @@ export class Itly { * @param groupProperties The group's properties. * @param options Options for this Group call. */ - async group( + group( userId: string | undefined, groupId: string, groupProperties?: Properties, options?: GroupOptions, - ): Promise { + ): ReturnedPromise { if (!this.isInitializedAndEnabled()) { - return; + return { promise: Promise.resolve() }; } const groupEvent = { @@ -320,14 +326,16 @@ export class Itly { version: '0-0-0', }; - await this.validateAndRunOnAllPlugins( - 'group', - groupEvent, - (p, e) => p.group(userId, groupId, groupProperties, options), - (p, e, validationResponses) => p.postGroup( - userId, groupId, groupProperties, validationResponses, + return { + promise: this.validateAndRunOnAllPlugins( + 'group', + groupEvent, + (p, e) => p.group(userId, groupId, groupProperties, options), + (p, e, validationResponses) => p.postGroup( + userId, groupId, groupProperties, validationResponses, + ), ), - ); + }; } /** @@ -338,14 +346,14 @@ export class Itly { * @param pageProperties The page's properties. * @param options Options for this Page call. */ - async page( + page( userId: string | undefined, category: string, name: string, pageProperties?: Properties, options?: PageOptions, - ): Promise { + ): ReturnedPromise { if (!this.isInitializedAndEnabled()) { - return; + return { promise: Promise.resolve() }; } const pageEvent = { @@ -355,14 +363,16 @@ export class Itly { version: '0-0-0', }; - await this.validateAndRunOnAllPlugins( - 'page', - pageEvent, - (p, e) => p.page(userId, category, name, pageProperties, options), - (p, e, validationResponses) => p.postPage( - userId, category, name, pageProperties, validationResponses, + return { + promise: this.validateAndRunOnAllPlugins( + 'page', + pageEvent, + (p, e) => p.page(userId, category, name, pageProperties, options), + (p, e, validationResponses) => p.postPage( + userId, category, name, pageProperties, validationResponses, + ), ), - ); + }; } /** @@ -375,26 +385,28 @@ export class Itly { * @param event.version The event's version. * @param options Options for this Track call. */ - async track( + track( userId: string | undefined, event: Event, options?: TrackOptions, - ): Promise { + ): ReturnedPromise { if (!this.isInitializedAndEnabled()) { - return; + return { promise: Promise.resolve() }; } const mergedEvent = this.mergeContext(event, this.context); - await this.validateAndRunOnAllPlugins( - 'track', - event, - (p, e) => p.track(userId, mergedEvent, options), - (p, e, validationResponses) => p.postTrack( - userId, mergedEvent, validationResponses, + return { + promise: this.validateAndRunOnAllPlugins( + 'track', + event, + (p, e) => p.track(userId, mergedEvent, options), + (p, e, validationResponses) => p.postTrack( + userId, mergedEvent, validationResponses, + ), + this.context, ), - this.context, - ); + }; } /** @@ -404,7 +416,7 @@ export class Itly { this.runOnAllPlugins('reset', (p) => p.reset()); } - async flush(): Promise { + flush(): ReturnedPromise { const flushPromises = this.plugins.map(async (plugin) => { try { await plugin.flush(); @@ -412,7 +424,9 @@ export class Itly { this.logger.error(`Error in ${plugin.id}.flush(). ${e.message}.`); } }); - await Promise.all(flushPromises); + return { + promise: Promise.all(flushPromises).then(), + }; } private validate(event: Event): ValidationResponse[] { @@ -447,7 +461,7 @@ export class Itly { return !this.options.disabled; } - private async validateAndRunOnAllPlugins( + private validateAndRunOnAllPlugins( op: string, event: Event, method: (plugin: Plugin, event: Event) => Promise, @@ -468,17 +482,7 @@ export class Itly { || validationResponses.every((vr) => vr.valid); } - // #2 track phase - // invoke track(), group(), identify(), page() on every plugin if allowed - if (shouldRun) { - await this.runOnAllPluginsAsync(op, async (p) => { - if (this.canRunEventOnPlugin(event, p)) { - await method(p, event); - } - }); - } - - // invoke postTrack(), postGroup(), postIdentify(), postPage() on every plugin + // #2 invoke postTrack(), postGroup(), postIdentify(), postPage() on every plugin this.runOnAllPlugins( `post${this.capitalize(op)}`, (p) => { @@ -488,13 +492,25 @@ export class Itly { }, ); - // #3 response phase + // #3 throw validation error if (this.validation === Validation.ErrorOnInvalid) { const invalidResult = validationResponses.find((vr) => !vr.valid); if (invalidResult) { throw new Error(`Validation Error: ${invalidResult.message}`); } } + + if (!shouldRun) { + return Promise.resolve(); + } + + // #4 track phase + // invoke track(), group(), identify(), page() on every plugin if allowed + return this.runOnAllPluginsAsync(op, async (p) => { + if (this.canRunEventOnPlugin(event, p)) { + await method(p, event); + } + }); } private canRunEventOnPlugin(event: Event, plugin: Plugin) { @@ -528,7 +544,7 @@ export class Itly { }); } - private async runOnAllPluginsAsync(op: string, method: (p: Plugin) => Promise): Promise { + private runOnAllPluginsAsync(op: string, method: (p: Plugin) => Promise) { const promises = this.plugins.map(async (plugin) => { try { await method(plugin); @@ -536,16 +552,17 @@ export class Itly { this.logger.error(`Error in ${plugin.id}.${op}(). ${e.message}.`); } }); - let timeout; - await Promise.race([ + let timeout: ReturnType; + return Promise.race([ Promise.all(promises), new Promise((resolve) => { timeout = setTimeout(resolve, 3000); }), - ]); - if (timeout) { - clearTimeout(timeout); - } + ]).then(() => { + if (timeout) { + clearTimeout(timeout); + } + }); } private capitalize(str: string) { From c56a7a6c21cacfb709cab0ed1b913879fa25b4ff Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Fri, 12 Mar 2021 09:48:23 +0400 Subject: [PATCH 5/5] fix: restored method/postMethod call order --- .../__snapshots__/browser-smoke.test.ts.snap | 156 +++++++------- .../__snapshots__/node-smoke.test.ts.snap | 200 +++++++++--------- .../__snapshots__/browser-smoke.test.ts.snap | 24 +-- .../__snapshots__/node-smoke.test.ts.snap | 64 +++--- packages/sdk/lib/base.ts | 42 ++-- 5 files changed, 244 insertions(+), 242 deletions(-) diff --git a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap index 050f9cb5..7ed8372b 100644 --- a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap +++ b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap @@ -12,11 +12,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -24,11 +24,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -80,11 +80,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -92,11 +92,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -120,11 +120,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -136,11 +136,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -185,11 +185,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -197,11 +197,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -209,11 +209,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -253,11 +253,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -265,11 +265,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -281,11 +281,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -297,11 +297,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -313,11 +313,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -334,11 +334,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -346,11 +346,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -358,11 +358,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -370,11 +370,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -390,11 +390,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -402,11 +402,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -414,11 +414,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -426,11 +426,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -442,11 +442,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={}", + "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -458,11 +458,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -474,11 +474,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -495,11 +495,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -507,11 +507,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -519,11 +519,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -531,11 +531,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -551,11 +551,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties=undefined", + "postGroup() userId='undefined' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -563,11 +563,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='undefined' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -575,11 +575,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='undefined' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -587,11 +587,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -599,11 +599,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={}", + "postTrack() userId='undefined' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -611,11 +611,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -623,11 +623,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; diff --git a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap index 0a99cd5f..46deefc4 100644 --- a/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap +++ b/packages/plugin-schema-validator/lib/__tests__/__snapshots__/node-smoke.test.ts.snap @@ -12,11 +12,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -24,11 +24,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -80,11 +80,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -92,11 +92,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -120,11 +120,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -136,11 +136,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -185,11 +185,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -197,11 +197,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -209,11 +209,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -253,11 +253,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -265,11 +265,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -281,11 +281,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -297,11 +297,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -313,11 +313,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -334,11 +334,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -346,11 +346,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -358,11 +358,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -370,11 +370,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -390,11 +390,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -402,11 +402,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -414,11 +414,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -426,11 +426,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -442,11 +442,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -458,11 +458,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -474,11 +474,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"is required\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -495,11 +495,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -507,11 +507,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -519,11 +519,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -531,11 +531,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -551,11 +551,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -563,11 +563,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -575,11 +575,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -587,11 +587,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -603,11 +603,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -619,11 +619,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -635,11 +635,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":false,\\"message\\":\\"Passed in context properties did not validate against your tracking plan. \`properties\` should have required property 'requiredString'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -656,11 +656,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='undefined' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -668,11 +668,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"requiredNumber\\":42}", + "postIdentify() userId='temp-user-id' properties={\\"requiredNumber\\":42} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -680,11 +680,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should have required property 'requiredNumber'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -692,11 +692,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"}", + "postIdentify() userId='temp-user-id' properties={\\"badProp\\":\\"unsupported property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in identify properties did not validate against your tracking plan. \`properties\` should NOT have additional properties (badProp).\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -712,11 +712,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in group properties did not validate against your tracking plan. \`properties\` should have required property 'requiredBoolean'.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -724,11 +724,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true}", + "postGroup() userId='test-user-id' groupId='test-group-id' properties={\\"requiredBoolean\\":true} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -736,11 +736,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined", + "postPage() userId='test-user-id' category='page category 1' name='page name 1' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -748,11 +748,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category 2' name='page name 2' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":false,\\"message\\":\\"'page' schema is empty but properties were found. properties={\\\\\\"pageProp\\\\\\":\\\\\\"a page property\\\\\\"}\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -760,11 +760,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -772,11 +772,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -784,11 +784,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":false,\\"message\\":\\"Passed in EventMaxIntForTest properties did not validate against your tracking plan. \`properties.intMax10\` should be <= 10.\\",\\"pluginId\\":\\"schema-validator\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; diff --git a/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap b/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap index 0d89dba3..96429802 100644 --- a/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap +++ b/packages/sdk/lib/__tests__/__snapshots__/browser-smoke.test.ts.snap @@ -14,11 +14,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties={\\"userProp\\":1} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties={\\"userProp\\":1}", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties={\\"userProp\\":1}", + "postIdentify() userId='undefined' properties={\\"userProp\\":1} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -30,11 +30,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"}", ], Array [ "CustomPlugin: ", - "group() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"}", + "postGroup() userId='undefined' groupId='a-group-id' properties={\\"groupProp\\":\\"test value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -42,11 +42,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='undefined' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -58,11 +58,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='undefined' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -74,11 +74,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='undefined' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -90,11 +90,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='undefined' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; diff --git a/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap b/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap index ce3a1852..591d25de 100644 --- a/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap +++ b/packages/sdk/lib/__tests__/__snapshots__/node-smoke.test.ts.snap @@ -18,11 +18,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties=undefined", + "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -30,11 +30,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -42,11 +42,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", + "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -62,11 +62,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -74,11 +74,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -90,11 +90,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"}", + "postTrack() userId='test-user-id' event='Event No Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -106,11 +106,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -122,11 +122,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"requiredString\\":\\"A required string\\",\\"optionalEnum\\":\\"Value 1\\",\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"},{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; @@ -149,11 +149,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='undefined' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='undefined' properties=undefined", + "postIdentify() userId='undefined' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -161,11 +161,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties=undefined", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties=undefined", + "postIdentify() userId='temp-user-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -173,11 +173,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", ], Array [ "CustomPlugin: ", - "identify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"}", + "postIdentify() userId='temp-user-id' properties={\\"userProp\\":\\"A user property value\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -193,11 +193,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "group() userId='test-user-id' groupId='test-group-id' properties=undefined", ], Array [ "CustomPlugin: ", - "group() userId='test-user-id' groupId='test-group-id' properties=undefined", + "postGroup() userId='test-user-id' groupId='test-group-id' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -205,11 +205,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", ], Array [ "CustomPlugin: ", - "page() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"}", + "postPage() userId='test-user-id' category='page category' name='page name' properties={\\"pageProp\\":\\"a page property\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -217,11 +217,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event No Properties' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event No Properties' properties=undefined", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event No Properties' properties=undefined", + "postTrack() userId='test-user-id' event='Event No Properties' properties=undefined validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -229,11 +229,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"}", + "postTrack() userId='test-user-id' event='Event With All Properties' properties={\\"requiredString\\":\\"A required string\\",\\"requiredNumber\\":2,\\"requiredInteger\\":42,\\"requiredEnum\\":\\"Enum1\\",\\"requiredBoolean\\":false,\\"requiredConst\\":\\"some-const-value\\",\\"requiredArray\\":[\\"required\\",\\"array\\"],\\"optionalString\\":\\"I'm optional!\\"} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], Array [ "CustomPlugin: ", @@ -241,11 +241,11 @@ Array [ ], Array [ "CustomPlugin: ", - "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", + "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", ], Array [ "CustomPlugin: ", - "track() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20}", + "postTrack() userId='test-user-id' event='EventMaxIntForTest' properties={\\"intMax10\\":20} validationResponses=[{\\"valid\\":true,\\"pluginId\\":\\"custom\\"}]", ], ] `; diff --git a/packages/sdk/lib/base.ts b/packages/sdk/lib/base.ts index a67878c0..ad617adb 100644 --- a/packages/sdk/lib/base.ts +++ b/packages/sdk/lib/base.ts @@ -200,7 +200,9 @@ const DEFAULT_PROD_OPTIONS: Required = { validation: Validation.TrackOnInvalid, }; -type ReturnedPromise = { promise: Promise }; +type CallResponse = { + promise: Promise, +}; export class Itly { private options: Required | undefined = undefined; @@ -258,7 +260,7 @@ export class Itly { userId: string, previousId?: string, options?: AliasOptions, - ): ReturnedPromise { + ): CallResponse { if (!this.isInitializedAndEnabled()) { return { promise: Promise.resolve() }; } @@ -278,7 +280,7 @@ export class Itly { userId: string | undefined, identifyProperties?: Properties, options?: IdentifyOptions, - ): ReturnedPromise { + ): CallResponse { if (!this.isInitializedAndEnabled()) { return { promise: Promise.resolve() }; } @@ -314,7 +316,7 @@ export class Itly { groupId: string, groupProperties?: Properties, options?: GroupOptions, - ): ReturnedPromise { + ): CallResponse { if (!this.isInitializedAndEnabled()) { return { promise: Promise.resolve() }; } @@ -351,7 +353,7 @@ export class Itly { category: string, name: string, pageProperties?: Properties, options?: PageOptions, - ): ReturnedPromise { + ): CallResponse { if (!this.isInitializedAndEnabled()) { return { promise: Promise.resolve() }; } @@ -389,7 +391,7 @@ export class Itly { userId: string | undefined, event: Event, options?: TrackOptions, - ): ReturnedPromise { + ): CallResponse { if (!this.isInitializedAndEnabled()) { return { promise: Promise.resolve() }; } @@ -416,7 +418,7 @@ export class Itly { this.runOnAllPlugins('reset', (p) => p.reset()); } - flush(): ReturnedPromise { + flush(): CallResponse { const flushPromises = this.plugins.map(async (plugin) => { try { await plugin.flush(); @@ -482,7 +484,17 @@ export class Itly { || validationResponses.every((vr) => vr.valid); } - // #2 invoke postTrack(), postGroup(), postIdentify(), postPage() on every plugin + // #2 track phase + // invoke track(), group(), identify(), page() on every plugin if allowed + const callPromise = shouldRun + ? this.runOnAllPluginsAsync(op, async (p) => { + if (this.canRunEventOnPlugin(event, p)) { + await method(p, event); + } + }) + : Promise.resolve(); + + // invoke postTrack(), postGroup(), postIdentify(), postPage() on every plugin this.runOnAllPlugins( `post${this.capitalize(op)}`, (p) => { @@ -492,7 +504,7 @@ export class Itly { }, ); - // #3 throw validation error + // #3 response phase if (this.validation === Validation.ErrorOnInvalid) { const invalidResult = validationResponses.find((vr) => !vr.valid); if (invalidResult) { @@ -500,17 +512,7 @@ export class Itly { } } - if (!shouldRun) { - return Promise.resolve(); - } - - // #4 track phase - // invoke track(), group(), identify(), page() on every plugin if allowed - return this.runOnAllPluginsAsync(op, async (p) => { - if (this.canRunEventOnPlugin(event, p)) { - await method(p, event); - } - }); + return callPromise; } private canRunEventOnPlugin(event: Event, plugin: Plugin) {