From 2748f0e2768849aa1fc2322c8fe43f7614d1ffb7 Mon Sep 17 00:00:00 2001 From: Peter Shershov <16524839+PeterShershov@users.noreply.github.com> Date: Fri, 16 Jun 2023 12:12:56 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#65777=20[Mixpanel]?= =?UTF-8?q?=20Update=20types=20of=20register=20methods=20by=20@PeterShersh?= =?UTF-8?q?ov?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update types of register methods - added test for the days and options object - added tests for unregister method signature in mixpanel-browser * formatting * make persistent optional in the mixpanel package --- types/mixpanel-browser/index.d.ts | 20 +++++++++++++------ .../mixpanel-browser-tests.ts | 15 ++++++++++++++ types/mixpanel/index.d.ts | 15 +++++++++----- types/mixpanel/mixpanel-tests.ts | 3 +++ 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/types/mixpanel-browser/index.d.ts b/types/mixpanel-browser/index.d.ts index 841bd408e8..3d59f2199f 100644 --- a/types/mixpanel-browser/index.d.ts +++ b/types/mixpanel-browser/index.d.ts @@ -48,6 +48,10 @@ export interface OutTrackingOptions extends ClearOptOutInOutOptions { delete_user: boolean; } +export interface RegisterOptions { + persistent: boolean; +} + export interface Config { api_host: string; api_method: string; @@ -158,8 +162,8 @@ export interface Mixpanel { opt_in_tracking(options?: Partial): void; opt_out_tracking(options?: Partial): void; push(item: PushItem): void; - register(props: Dict, days?: number): void; - register_once(props: Dict, default_value?: any, days?: number): void; + register(props: Dict, days_or_options?: number | Partial): void; + register_once(props: Dict, default_value?: any, days_or_options?: number | Partial): void; remove_group(group_key: string, group_ids: string | string[] | number | number[], callback?: Callback): void; reset(): void; set_config(config: Partial): void; @@ -174,7 +178,7 @@ export interface Mixpanel { track_forms(query: Query, event_name: string, properties?: Dict | (() => void)): void; track_links(query: Query, event_name: string, properties?: Dict | (() => void)): void; track_with_groups(event_name: string, properties: Dict, groups: Dict, callback?: Callback): void; - unregister(property: string): void; + unregister(property: string, options?: Partial): void; people: People; } @@ -199,8 +203,12 @@ export function init(token: string, config?: Partial): undefined; export function opt_in_tracking(options?: Partial): void; export function opt_out_tracking(options?: Partial): void; export function push(item: PushItem): void; -export function register(props: Dict, days?: number): void; -export function register_once(props: Dict, default_value?: any, days?: number): void; +export function register(props: Dict, days_or_options?: number | Partial): void; +export function register_once( + props: Dict, + default_value?: any, + days_or_options?: number | Partial, +): void; export function remove_group( group_key: string, group_ids: string | string[] | number | number[], @@ -223,7 +231,7 @@ export function track( export function track_forms(query: Query, event_name: string, properties?: Dict | (() => void)): void; export function track_links(query: Query, event_name: string, properties?: Dict | (() => void)): void; export function track_with_groups(event_name: string, properties: Dict, groups: Dict, callback?: Callback): void; -export function unregister(property: string): void; +export function unregister(property: string, options?: Partial): void; export const people: People; declare const mixpanel: OverridedMixpanel; diff --git a/types/mixpanel-browser/mixpanel-browser-tests.ts b/types/mixpanel-browser/mixpanel-browser-tests.ts index aaa43834d7..789f26124e 100644 --- a/types/mixpanel-browser/mixpanel-browser-tests.ts +++ b/types/mixpanel-browser/mixpanel-browser-tests.ts @@ -34,9 +34,24 @@ mixpanel.register({ Email: 'jdoe@example.com', 'Account Type': 'Free', }); +mixpanel.register({ + Email: 'jdoe@example.com', +}, 3); +mixpanel.register({ + Email: 'jdoe@example.com', +}, { persistent: false }); mixpanel.register_once({ 'First Login Date': new Date().toISOString(), }); +mixpanel.register_once({ + 'First Login Date': new Date().toISOString(), +}, 3); +mixpanel.register_once({ + 'First Login Date': new Date().toISOString(), +}, { persistent: false }); + +mixpanel.unregister('First Login Date'); +mixpanel.unregister('First Login Date', { persistent: false }); mixpanel.init('YOUR PROJECT TOKEN', { loaded: mixpanel => { const distinct_id = mixpanel.get_distinct_id(); diff --git a/types/mixpanel/index.d.ts b/types/mixpanel/index.d.ts index a811291665..aad2a82f7b 100644 --- a/types/mixpanel/index.d.ts +++ b/types/mixpanel/index.d.ts @@ -191,9 +191,9 @@ interface Mixpanel { * }); * * @param properties An associative array of properties to store about the user - * @param days How many days since the user's last visit to store the super properties + * @param daysOrOptions How many days since the user's last visit to store the super properties or the options object which controls persistence */ - register(properties: { [index: string]: any }, days?: number): void; + register(properties: { [index: string]: any }, daysOrOptions?: number | { persistent?: boolean }): void; /** * Register a set of super properties only once. This will not @@ -213,16 +213,21 @@ interface Mixpanel { * * @param properties An associative array of properties to store about the user * @param defaultValue Value to override if already set in super properties (ex: 'False') Default: 'None' - * @param days How many days since the users last visit to store the super properties + * @param daysOrOptions How many days since the users last visit to store the super properties or the options object which controls persistence */ - register_once(properties: { [index: string]: any }, defaultValue?: string, days?: number): void; + register_once( + properties: { [index: string]: any }, + defaultValue?: string, + daysOrOptions?: number | { persistent?: boolean }, + ): void; /** * Delete a super property stored with the current user. * * @param propertyName The name of the super property to remove + * @param options The options object which controls persistence */ - unregister(propertyName: string): void; + unregister(propertyName: string, options?: { persistent?: boolean }): void; /** * Identify a user with a unique ID. All subsequent diff --git a/types/mixpanel/mixpanel-tests.ts b/types/mixpanel/mixpanel-tests.ts index c57d6fdf8a..2267a30819 100644 --- a/types/mixpanel/mixpanel-tests.ts +++ b/types/mixpanel/mixpanel-tests.ts @@ -38,11 +38,14 @@ function mixpanel_base() { mixpanel.register({ device: 'android', version: '4.0.1' }); mixpanel.register({ device: 'android', version: '4.0.1' }, 5); + mixpanel.register({ device: 'android', version: '4.0.1' }, { persistent: false }); mixpanel.register_once({ device: 'android', version: '4.0.1' }); mixpanel.register_once({ device: 'android', version: '4.0.1' }, 'default', 4); + mixpanel.register_once({ device: 'android', version: '4.0.1' }, 'default', { persistent: false }); mixpanel.unregister('device'); + mixpanel.unregister('device', { persistent: false }); mixpanel.identify(); mixpanel.identify('234234sdfdsf');