From 2acb434381b9182f391a5b9e5779de425eded757 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Thu, 14 Jan 2016 23:50:59 +1100 Subject: [PATCH 01/16] expanded upon event API --- google.analytics/ga-tests.ts | 10 ++++++++++ google.analytics/ga.d.ts | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index ba4f80dea..226d1432b 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -23,6 +23,16 @@ describe('UniversalAnalytics', () => { ga('create', 'UA-65432-1', 'auto', {some: 'config'}); ga('send', 'pageview'); ga('send', 'pageview', {some: 'details'}); + ga('send', 'event', 'Videos', 'play', 'Fall Campaign'); + ga('send', {hitType: 'event', eventCategory: 'Videos', eventAction: 'play', eventLabel: 'Fall Campaign'}); + ga('send', 'event', 'Videos', 'play', 'Fall Campaign', {nonInteraction: true}); + ga('send', 'pageview', '/page'); + ga('send', 'social', {'socialNetwork': 'facebook', 'socialAction': 'like', 'socialTarget': 'http://foo.com'}); + ga('send', 'social', {'socialNetwork': 'google+', 'socialAction': 'plus', 'socialTarget': 'http://foo.com'}); + ga('send', 'timing', {'timingCategory': 'category', 'timingVar': 'lookup', 'timingValue': 123}); + ga('send', 'timing', {'timingCategory': 'category', 'timingVar': 'lookup', 'timingValue': 123, 'timingLabel': 'label'}); + ga('trackerName.send', 'event', 'load'); + ga.create('UA-65432-1', 'auto'); ga.create('UA-65432-1', {some: 'config'}); ga.create('UA-65432-1', 'auto', {some: 'config'}); diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index a8e1b1e25..9fc9d34cc 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -36,15 +36,48 @@ interface GoogleAnalytics { async: boolean; } +enum HitType { + 'pageview', 'screenview', 'event', 'transaction', 'item', 'social', 'exception', 'timing' +} + declare module UniversalAnalytics { // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference interface ga { l: number; q: any[]; + + (command: 'send', hitType: 'event', eventCategory: string, eventAction: string, + eventLabel?: string, eventValue?: number, fieldsObject?: {} ): void; + (command: 'send', hitType: 'event', fieldsObject: { + eventCategory: string + eventAction: string, + eventLabel?: string, + eventValue?: number, + nonInteraction?: boolean}): void; + (command: 'send', fieldsObject: { + hitType: 'event', + eventCategory: string + eventAction: string, + eventLabel?: string, + eventValue?: number, + nonInteraction?: boolean}): void; + (command: 'send', hitType: 'pageview', page: string): void; + (command: 'send', hitType: 'social', + socialNetwork: string, socialAction: string, socialTarget: string): void; + (command: 'send', hitType: 'social', + fieldsObject: {socialNetwork: string, socialAction: string, socialTarget: string}): void; + (command: 'send', hitType: 'timing', + timingCategory: string, timingVar: string, timingValue: number): void; + (command: 'send', hitType: 'timing', + fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; + (command: 'send', hitType: HitType, ...fields): void; + (command: 'send', fieldsObject: {}): void; + + (command: string, hitDetails: {}): void; (command: string, poly: string, opt_poly?: {}): UniversalAnalytics.Tracker; (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; - (command: string, hitDetails: {}): void; + create(trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker; create(trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; getAll(): UniversalAnalytics.Tracker[]; From ac5fc67d21f6438c7cab98fa0406de8d5ae76c2b Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Thu, 14 Jan 2016 23:54:30 +1100 Subject: [PATCH 02/16] expanded upon event API --- google.analytics/ga-tests.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index 226d1432b..dd03e0d25 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -24,9 +24,9 @@ describe('UniversalAnalytics', () => { ga('send', 'pageview'); ga('send', 'pageview', {some: 'details'}); ga('send', 'event', 'Videos', 'play', 'Fall Campaign'); - ga('send', {hitType: 'event', eventCategory: 'Videos', eventAction: 'play', eventLabel: 'Fall Campaign'}); - ga('send', 'event', 'Videos', 'play', 'Fall Campaign', {nonInteraction: true}); - ga('send', 'pageview', '/page'); + ga('send', {hitType: 'event', eventCategory: 'Videos', eventAction: 'play', eventLabel: 'Fall Campaign'}); + ga('send', 'event', 'Videos', 'play', 'Fall Campaign', {nonInteraction: true}); + ga('send', 'pageview', '/page'); ga('send', 'social', {'socialNetwork': 'facebook', 'socialAction': 'like', 'socialTarget': 'http://foo.com'}); ga('send', 'social', {'socialNetwork': 'google+', 'socialAction': 'plus', 'socialTarget': 'http://foo.com'}); ga('send', 'timing', {'timingCategory': 'category', 'timingVar': 'lookup', 'timingValue': 123}); From da079d9eda78490d8803a3d325c81ed743d84cb4 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 10:53:32 +1100 Subject: [PATCH 03/16] added missing commas --- google.analytics/ga.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 9fc9d34cc..505bb3b49 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -48,16 +48,16 @@ declare module UniversalAnalytics { q: any[]; (command: 'send', hitType: 'event', eventCategory: string, eventAction: string, - eventLabel?: string, eventValue?: number, fieldsObject?: {} ): void; + eventLabel?: string, eventValue?: number, fieldsObject?: {}): void; (command: 'send', hitType: 'event', fieldsObject: { - eventCategory: string + eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, nonInteraction?: boolean}): void; (command: 'send', fieldsObject: { hitType: 'event', - eventCategory: string + eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, From a4d7c74e725b545e187bceb8aa28f3374082331e Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 14:23:30 +1100 Subject: [PATCH 04/16] hitType: string, // 'event' --- google.analytics/ga.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 505bb3b49..abc4d4a8d 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -56,7 +56,7 @@ declare module UniversalAnalytics { eventValue?: number, nonInteraction?: boolean}): void; (command: 'send', fieldsObject: { - hitType: 'event', + hitType: string, // 'event' eventCategory: string, eventAction: string, eventLabel?: string, From 98ff9a0a9cfb2adcc3cf006a2bdcb0e5938202d0 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 14:30:46 +1100 Subject: [PATCH 05/16] moved HitType --- google.analytics/ga.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index abc4d4a8d..9166f7192 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -36,12 +36,12 @@ interface GoogleAnalytics { async: boolean; } -enum HitType { - 'pageview', 'screenview', 'event', 'transaction', 'item', 'social', 'exception', 'timing' -} - declare module UniversalAnalytics { // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference + + enum HitType { + 'pageview', 'screenview', 'event', 'transaction', 'item', 'social', 'exception', 'timing' + } interface ga { l: number; @@ -56,7 +56,7 @@ declare module UniversalAnalytics { eventValue?: number, nonInteraction?: boolean}): void; (command: 'send', fieldsObject: { - hitType: string, // 'event' + hitType: HitType, // 'event' eventCategory: string, eventAction: string, eventLabel?: string, From fc5b458c58dd3c41b0d663c471bf96ce14b57819 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 14:41:15 +1100 Subject: [PATCH 06/16] ...fields: any --- google.analytics/ga.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 9166f7192..1f20ed538 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -71,7 +71,7 @@ declare module UniversalAnalytics { timingCategory: string, timingVar: string, timingValue: number): void; (command: 'send', hitType: 'timing', fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; - (command: 'send', hitType: HitType, ...fields): void; + (command: 'send', hitType: HitType, ...fields: any): void; (command: 'send', fieldsObject: {}): void; (command: string, hitDetails: {}): void; From db036a4d67535fd050a16746b95bd43d1f93caaa Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 15:39:11 +1100 Subject: [PATCH 07/16] (command: 'send', hitType: HitType, ...fields: any[]): void; --- google.analytics/ga.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 1f20ed538..f51c84dc7 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -71,7 +71,7 @@ declare module UniversalAnalytics { timingCategory: string, timingVar: string, timingValue: number): void; (command: 'send', hitType: 'timing', fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; - (command: 'send', hitType: HitType, ...fields: any): void; + (command: 'send', hitType: HitType, ...fields: any[]): void; (command: 'send', fieldsObject: {}): void; (command: string, hitDetails: {}): void; From 7c64a2a73d131106efcd8746c89bb8b979c1d6f1 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Fri, 15 Jan 2016 17:36:20 +1100 Subject: [PATCH 08/16] (command: string, hitType: string, ...fields: any[]): void; --- google.analytics/ga.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index f51c84dc7..1cbbba44e 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -74,6 +74,7 @@ declare module UniversalAnalytics { (command: 'send', hitType: HitType, ...fields: any[]): void; (command: 'send', fieldsObject: {}): void; + (command: string, hitType: string, ...fields: any[]): void; (command: string, hitDetails: {}): void; (command: string, poly: string, opt_poly?: {}): UniversalAnalytics.Tracker; (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; From fe559849bffe3845ee62e585b4765c2cf3c685be Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 13:49:09 +1100 Subject: [PATCH 09/16] ga('UA-65432-1', 'auto') actually returns `undefined` --- google.analytics/ga-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts index dd03e0d25..acff9eb55 100644 --- a/google.analytics/ga-tests.ts +++ b/google.analytics/ga-tests.ts @@ -40,7 +40,7 @@ describe('UniversalAnalytics', () => { ga.getByName('aNamedTracker'); }); it('should excercise Tracker APIs', () => { - var tracker: UniversalAnalytics.Tracker = ga('create', 'UA-65432-1', 'auto'); + var tracker: UniversalAnalytics.Tracker = ga.create('UA-65432-1', 'auto'); var aString: string = tracker.get('aString'); var aNumber: number = tracker.get('aNumber'); var anObject: {} = tracker.get<{}>('anObject'); From 91fbf92911f47c8a3ef0c0efd856fa6e966d2fa2 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 13:49:20 +1100 Subject: [PATCH 10/16] updated API --- google.analytics/ga.d.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 1cbbba44e..794f4cd19 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -46,7 +46,7 @@ declare module UniversalAnalytics { interface ga { l: number; q: any[]; - + (command: 'send', hitType: 'event', eventCategory: string, eventAction: string, eventLabel?: string, eventValue?: number, fieldsObject?: {}): void; (command: 'send', hitType: 'event', fieldsObject: { @@ -71,18 +71,22 @@ declare module UniversalAnalytics { timingCategory: string, timingVar: string, timingValue: number): void; (command: 'send', hitType: 'timing', fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; - (command: 'send', hitType: HitType, ...fields: any[]): void; + (command: 'send', hitType: HitType, ...fields: any[], fieldsObject?: {}): void; (command: 'send', fieldsObject: {}): void; - (command: string, hitType: string, ...fields: any[]): void; - (command: string, hitDetails: {}): void; - (command: string, poly: string, opt_poly?: {}): UniversalAnalytics.Tracker; - (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; - - create(trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker; - create(trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker; + (command: 'create', trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): void; + (command: 'remove'): void; + + (command: string, ...fields?: any[], fieldsObject?: {}): void; + (command: string, ...fields: any[], fieldsObject?: {}): void; + + (readyCallback: (tracker?: UniversalAnalytics.Tracker):void): void; + + create(trackingId: string, fieldsObject?: {}): UniversalAnalytics.Tracker; + create(trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): UniversalAnalytics.Tracker; getAll(): UniversalAnalytics.Tracker[]; getByName(name: string): UniversalAnalytics.Tracker; + remove(name:string): void; } interface Tracker { From e61862aca77c16045b31c3194f0732d405cdb4ca Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 13:53:46 +1100 Subject: [PATCH 11/16] use correct callback syntax --- google.analytics/ga.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 794f4cd19..bab55b9e5 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -80,7 +80,7 @@ declare module UniversalAnalytics { (command: string, ...fields?: any[], fieldsObject?: {}): void; (command: string, ...fields: any[], fieldsObject?: {}): void; - (readyCallback: (tracker?: UniversalAnalytics.Tracker):void): void; + (readyCallback: (defaultTracker?: UniversalAnalytics.Tracker) => void): void; create(trackingId: string, fieldsObject?: {}): UniversalAnalytics.Tracker; create(trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): UniversalAnalytics.Tracker; From ae08e2515a5c8621ee3503c0056b9ddc0fea7039 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 14:04:30 +1100 Subject: [PATCH 12/16] `(command: string, ...fields?: any[]}): void;` should handle any other commands --- google.analytics/ga.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index bab55b9e5..b8518fc90 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -73,12 +73,12 @@ declare module UniversalAnalytics { fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; (command: 'send', hitType: HitType, ...fields: any[], fieldsObject?: {}): void; (command: 'send', fieldsObject: {}): void; + (command: string, hitType: HitType, ...fields: any[]): void; (command: 'create', trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): void; (command: 'remove'): void; - (command: string, ...fields?: any[], fieldsObject?: {}): void; - (command: string, ...fields: any[], fieldsObject?: {}): void; + (command: string, ...fields?: any[]}): void; (readyCallback: (defaultTracker?: UniversalAnalytics.Tracker) => void): void; From a608ac5b6701a515269be163dbb825dc5a0a81af Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 14:06:49 +1100 Subject: [PATCH 13/16] fixed typo --- google.analytics/ga.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index b8518fc90..ca142c2fb 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -78,7 +78,7 @@ declare module UniversalAnalytics { (command: 'create', trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): void; (command: 'remove'): void; - (command: string, ...fields?: any[]}): void; + (command: string, ...fields?: any[]): void; (readyCallback: (defaultTracker?: UniversalAnalytics.Tracker) => void): void; From 86c94ff30be1cce6afbbae6edde2777857517c82 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 14:09:15 +1100 Subject: [PATCH 14/16] removed redundant declaration --- google.analytics/ga.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index ca142c2fb..4472cf780 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -71,7 +71,6 @@ declare module UniversalAnalytics { timingCategory: string, timingVar: string, timingValue: number): void; (command: 'send', hitType: 'timing', fieldsObject: {timingCategory: string, timingVar: string, timingValue: number}): void; - (command: 'send', hitType: HitType, ...fields: any[], fieldsObject?: {}): void; (command: 'send', fieldsObject: {}): void; (command: string, hitType: HitType, ...fields: any[]): void; From 3b751150b2818dd5a7447d95db657297e74d3695 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 14:16:08 +1100 Subject: [PATCH 15/16] non-optional rest parameter --- google.analytics/ga.d.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index 4472cf780..d6c817cd5 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -77,12 +77,13 @@ declare module UniversalAnalytics { (command: 'create', trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): void; (command: 'remove'): void; - (command: string, ...fields?: any[]): void; + (command: string, ...fields: any[]): void; (readyCallback: (defaultTracker?: UniversalAnalytics.Tracker) => void): void; - create(trackingId: string, fieldsObject?: {}): UniversalAnalytics.Tracker; create(trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): UniversalAnalytics.Tracker; + create(trackingId: string, fieldsObject?: {}): UniversalAnalytics.Tracker; + getAll(): UniversalAnalytics.Tracker[]; getByName(name: string): UniversalAnalytics.Tracker; remove(name:string): void; From 5c0a2a138ac67c1b1c13dafc5837bfcbff6a00e2 Mon Sep 17 00:00:00 2001 From: Nicholas Albion Date: Mon, 18 Jan 2016 14:19:57 +1100 Subject: [PATCH 16/16] fixed `create` API --- google.analytics/ga.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts index d6c817cd5..68d0293a4 100644 --- a/google.analytics/ga.d.ts +++ b/google.analytics/ga.d.ts @@ -81,7 +81,8 @@ declare module UniversalAnalytics { (readyCallback: (defaultTracker?: UniversalAnalytics.Tracker) => void): void; - create(trackingId: string, cookieDomain?: string, name?: string, fieldsObject?: {}): UniversalAnalytics.Tracker; + create(trackingId: string, cookieDomain: string, name: string, fieldsObject?: {}): UniversalAnalytics.Tracker; + create(trackingId: string, cookieDomain: string, fieldsObject?: {}): UniversalAnalytics.Tracker; create(trackingId: string, fieldsObject?: {}): UniversalAnalytics.Tracker; getAll(): UniversalAnalytics.Tracker[];