diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts
index 23edc0fe8..4b5f200c4 100644
--- a/google.analytics/ga-tests.ts
+++ b/google.analytics/ga-tests.ts
@@ -1,15 +1,30 @@
///
///
-describe('UniversalGoogleAnalytics', () => {
- it('should be a function', () => {
- ga('create', 'UA-65432-1');
+describe('UniversalAnalytics', () => {
+ it('should exercise all ga APIs', () => {
+ ga('create', 'UA-65432-1', 'auto');
+ ga('create', 'UA-65432-1', {some: 'config'});
+ ga('create', 'UA-65432-1', 'auto', {some: 'config'});
ga('send', 'pageview');
- });
- it('should have methods', () => {
+ ga('send', 'pageview', {some: 'details'});
+ ga.create('UA-65432-1', 'auto');
+ ga.create('UA-65432-1', {some: 'config'});
+ ga.create('UA-65432-1', 'auto', {some: 'config'});
ga.getAll();
ga.getByName('aNamedTracker');
});
+ it('should excercise Tracker APIs', () => {
+ 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');
+ tracker.send('pageview');
+ tracker.send('pageview', {some: 'details'});
+ tracker.set('aString', aString);
+ tracker.set('aNumber', aNumber);
+ tracker.set('anObject', anObject);
+ });
});
describe("tester Google Analytics Tracker _gat object", () => {
diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts
index f711f894e..e58074bb4 100644
--- a/google.analytics/ga.d.ts
+++ b/google.analytics/ga.d.ts
@@ -1,6 +1,6 @@
-// Type definitions for Google Analytics
+// Type definitions for Google Analytics (Classic and Universal)
// Project: https://developers.google.com/analytics/devguides/collection/gajs/
-// Definitions by: Ronnie Haakon Hegelund
+// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare class Tracker {
@@ -30,19 +30,30 @@ interface GoogleAnalyticsTracker {
_anonymizeIp(): void;
}
-interface UniversalGoogleAnalytics {
- (command: string, trackingId:string, opt_configObject?: {}): UniversalTracker;
- (command: string, ...rest): void;
- getAll(): UniversalTracker[];
- getByName(trackerName: string): UniversalTracker;
+declare module UniversalAnalytics {
+ // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference
+
+ interface ga {
+ (command: string, trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker;
+ (command: string, trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker;
+ (command: string, hitDetails: {}): void;
+ (command: string, hitType: string, hitDetails?: {}): void;
+ create(trackingId: string, opt_configObject?: {}): UniversalAnalytics.Tracker;
+ create(trackingId: string, auto: string, opt_configObject?: {}): UniversalAnalytics.Tracker;
+ getAll(): UniversalAnalytics.Tracker[];
+ getByName(name: string): UniversalAnalytics.Tracker;
+ }
+
+ interface Tracker {
+ get(fieldName: string): T;
+ send(hitType: string, opt_fieldObject?: {}): void;
+ set(fieldName: string, value: string): void;
+ set(fieldName: string, value: {}): void;
+ set(fieldName: string, value: number): void;
+ set(fieldName: string, value: boolean): void;
+ }
}
-interface UniversalTracker {
- get(...any): any;
- send(...any): any;
- set(...any): any;
-}
-
-declare var ga: UniversalGoogleAnalytics;
+declare var ga: UniversalAnalytics.ga;
declare var _gaq: GoogleAnalyticsCode;
declare var _gat: GoogleAnalyticsTracker;