diff --git a/google.analytics/ga-tests.ts b/google.analytics/ga-tests.ts
index 03d5c2ed5..ba4f80dea 100644
--- a/google.analytics/ga-tests.ts
+++ b/google.analytics/ga-tests.ts
@@ -2,24 +2,44 @@
///
describe("tester Google Analytics Tracker _gat object", () => {
-
it("can set ga script element", () => {
- ga = document.createElement("script");
+ gaClassic = document.createElement("script");
});
-
it("can set aync to true", () => {
- ga.async = true;
- });
-
+ gaClassic.async = true;
+ });
it("can set src to string url", () => {
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';;
+ gaClassic.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
});
-
it("can set type", () => {
- ga.type = 'text/javascript';
+ gaClassic.type = 'text/javascript';
});
-
+});
+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');
+ 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", () => {
@@ -27,7 +47,7 @@ describe("tester Google Analytics Tracker _gat object", () => {
_gat._createTracker('UA-65432-1');
_gat._createTracker('UA-65432-2', 't2');
});
-
+
it("can create _getTrackerByName", () => {
_gat._getTrackerByName();
_gat._getTrackerByName('t2');
@@ -36,7 +56,7 @@ describe("tester Google Analytics Tracker _gat object", () => {
it("can create _anonymizeIp", () => {
_gat._anonymizeIp();
});
-
+
});
describe("tester Google Analytics Code _gaq object", () => {
@@ -50,12 +70,12 @@ describe("tester Google Analytics Code _gaq object", () => {
tracker._trackPageview();
}
);
- });
+ });
});
describe("tester Google Analytics Code Tracker object", () => {
- it("can create Tracker object and call methods", () => {
+ it("can create Tracker object and call methods", () => {
var tracker = _gat._getTrackerByName('UA-65432-1');
tracker._trackPageview();
tracker._getName();
@@ -71,6 +91,3 @@ describe("tester Google Analytics Code Tracker object", () => {
tracker._trackPageLoadTime();
});
});
-
-
-
diff --git a/google.analytics/ga.d.ts b/google.analytics/ga.d.ts
index 032e236ee..96ba12bf9 100644
--- a/google.analytics/ga.d.ts
+++ b/google.analytics/ga.d.ts
@@ -1,6 +1,6 @@
-// Type definitions for Google Analytics
-// Project: https://developers.google.com/analytics/devguides/collection/gajs/
-// Definitions by: Ronnie Haakon Hegelund
+// Type definitions for Google Analytics (Classic and Universal)
+// Project: https://developers.google.com/analytics/devguides/collection/gajs/, https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference
+// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare class Tracker {
@@ -36,6 +36,30 @@ interface GoogleAnalytics {
async: boolean;
}
-declare var ga: GoogleAnalytics;
+declare module UniversalAnalytics {
+ // https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference
+
+ interface ga {
+ (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[];
+ 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;
+ }
+}
+
+declare var gaClassic: GoogleAnalytics;
+declare var ga: UniversalAnalytics.ga;
declare var _gaq: GoogleAnalyticsCode;
declare var _gat: GoogleAnalyticsTracker;