diff --git a/README.md b/README.md index 8183ef1c4..d3ce3ca21 100755 --- a/README.md +++ b/README.md @@ -248,6 +248,7 @@ List of Definitions * [Underscore.js](http://underscorejs.org/) (by [Boris Yankov](https://github.com/borisyankov)) * [Underscore.js (Typed)](http://underscorejs.org/) (by [Josh Baldwin](https://github.com/jbaldwin/)) * [Underscore-ko.js](https://github.com/kamranayub/UnderscoreKO) (by [Maurits Elbers](https://github.com/MagicMau)) +* [universal-analytics](https://github.com/peaksandpies/universal-analytics) (by [Bart van der Schoor](https://github.com/Bartvds)) * [UUID.js](https://github.com/LiosK/UUID.js) (by [Jason Jarrett](https://github.com/staxmanade)) * [Valerie](https://github.com/davewatts/valerie) (by [Howard Richards](https://github.com/conficient)) * [Viewporter](https://github.com/zynga/viewporter) (by [Boris Yankov](https://github.com/borisyankov)) diff --git a/universal-analytics/universal-analytics-test.ts b/universal-analytics/universal-analytics-test.ts new file mode 100644 index 000000000..4249218d9 --- /dev/null +++ b/universal-analytics/universal-analytics-test.ts @@ -0,0 +1,87 @@ +/// + +var ui:UniversalAnalytics; + +var str:string; +var num:number; +var value:any; +var bool:boolean; +var params:Object; +var x:any; + +var client:UniversalAnalytics.Client = ui('UA-123-00'); +client = ui.debug(); +client.send(); + +client = client.pageview(str); +client.pageview(str, (err:any) => {}); +client = client.pageview(params); +client.pageview(params, (err:any) => {}); +client = client.pageview(str, str); +client.pageview(str, str, (err:any) => {}); +client = client.pageview(str, str, str); +client.pageview(str, str, str, (err:any) => {}); + + +client = client.event(str, str); +client.event(str, str, (err:any) => {}); +client = client.event(str, str, str); +client.event(str, str, str, (err:any) => {}); +client = client.event(str, str, str, value); +client.event(str, str, str, value, (err:any) => {}); +client.event(str, str, str, value, params, (err:any) => {}); +client = client.event(params); +client.event(params, (err:any) => {}); + + +client = client.transaction(str); +client.transaction(str, (err:any) => {}); +client = client.transaction(str, num); +client.transaction(str, num, (err:any) => {}); +client = client.transaction(str, num, num); +client.transaction(str, num, num, (err:any) => {}); +client = client.transaction(str, num, num, num); +client.transaction(str, num, num, num, (err:any) => {}); +client = client.transaction(str, num, num, num, str); +client.transaction(str, num, num, num, str, (err:any) => {}); +client = client.transaction(params); +client.transaction(params, (err:any) => {}); + + +client = client.item(num); +client.item(num, (err:any) => {}); +client = client.item(num, num); +client.item(num, num, (err:any) => {}); +client = client.item(num, num, num); +client.item(num, num, num, (err:any) => {}); +client = client.item(num, num, num, str); +client.item(num, num, num, str, (err:any) => {}); +client = client.item(num, num, num, str, str); +client.item(num, num, num, str, str, (err:any) => {}); +client = client.item(num, num, num, str, str, params); +client.item(num, num, num, str, str, params, (err:any) => {}); +client = client.item(params); +client.item(params, (err:any) => {}); + + +client = client.exception(str); +client.exception(str, (err:any) => {}); +client = client.exception(str, bool); +client.exception(str, bool, (err:any) => {}); +client = client.exception(params); +client.exception(params, (err:any) => {}); + + +client = client.timing(str); +client.timing(str, (err:any) => {}); +client = client.timing(str, str); +client.timing(str, str, (err:any) => {}); +client = client.timing(str, str, num); +client.timing(str, str, num, (err:any) => {}); +client = client.timing(str, str, num, str); +client.timing(str, str, num, str, (err:any) => {}); +client = client.timing(params); +client.timing(params, (err:any) => {}); + + +x = client.middleware(str, {}); diff --git a/universal-analytics/universal-analytics.d.ts b/universal-analytics/universal-analytics.d.ts new file mode 100644 index 000000000..af81eac94 --- /dev/null +++ b/universal-analytics/universal-analytics.d.ts @@ -0,0 +1,94 @@ +// Type definitions for universal-analytics v0.3.2 +// Project: https://github.com/peaksandpies/universal-analytics +// Definitions by: Bart van der Schoor +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface UniversalAnalytics { + (accountID:string, uuid?:string, opts?:Object):UniversalAnalytics.Client; + debug():UniversalAnalytics.Client; +} + +declare module UniversalAnalytics { + + interface Client { + + send():void; + + pageview(path:string):Client; + pageview(path:string, callback?:(err:any) => void):void; + pageview(params:Object):Client; + pageview(params:Object, callback?:(err:any) => void):void; + pageview(path:string, hostname:string):Client; + pageview(path:string, hostname:string, callback?:(err:any) => void):void; + pageview(path:string, title:string, hostname:string):Client; + pageview(path:string, title:string, hostname:string, callback?:(err:any) => void):void; + + + event(category:string, action:string):Client; + event(category:string, action:string, callback?:(err:any) => void):void; + event(category:string, action:string, label:string):Client; + event(category:string, action:string, label:string, callback?:(err:any) => void):void; + event(category:string, action:string, label:string, value:any):Client; + event(category:string, action:string, label:string, value:any, callback?:(err:any) => void):void; + event(category:string, action:string, label:string, value:any, params:Object, callback?:(err:any) => void):void; + event(params:Object):Client; + event(params:Object, callback:(err:any) => void):void; + + + transaction(id:string):Client; + transaction(id:string, callback:(err:any) => void):void; + transaction(id:string, revenue:number):Client; + transaction(id:string, revenue:number, callback:(err:any) => void):void; + transaction(id:string, revenue:number, shipping:number):Client; + transaction(id:string, revenue:number, shipping:number, callback:(err:any) => void):void; + transaction(id:string, revenue:number, shipping:number, taxping:number):Client; + transaction(id:string, revenue:number, shipping:number, taxping:number, callback:(err:any) => void):void; + transaction(id:string, revenue:number, shipping:number, taxping:number, affiliation:string):Client; + transaction(id:string, revenue:number, shipping:number, taxping:number, affiliation:string, callback:(err:any) => void):void; + transaction(params:Object):Client; + transaction(params:Object, callback:(err:any) => void):void; + + + item(price:number):Client; + item(price:number, callback:(err:any) => void):void; + item(price:number, quantity:number):Client; + item(price:number, quantity:number, callback:(err:any) => void):void; + item(price:number, quantity:number, sku:number):Client; + item(price:number, quantity:number, sku:number, callback:(err:any) => void):void; + item(price:number, quantity:number, sku:number, name:string):Client; + item(price:number, quantity:number, sku:number, name:string, callback:(err:any) => void):void; + item(price:number, quantity:number, sku:number, name:string, variation:string):Client; + item(price:number, quantity:number, sku:number, name:string, variation:string, callback:(err:any) => void):void; + item(price:number, quantity:number, sku:number, name:string, variation:string, params:Object):Client; + item(price:number, quantity:number, sku:number, name:string, variation:string, params:Object, callback:(err:any) => void):void; + item(params:Object):Client; + item(params:Object, callback:(err:any) => void):void; + + + exception(description:string):Client; + exception(description:string, callback:(err:any) => void):void; + exception(description:string, fatal:boolean):Client; + exception(description:string, fatal:boolean, callback:(err:any) => void):void; + exception(params:Object):Client; + exception(params:Object, callback:(err:any) => void):void; + + + timing(category:string):Client; + timing(category:string, callback:(err:any) => void):void; + timing(category:string, variable:string):Client; + timing(category:string, variable:string, callback:(err:any) => void):void; + timing(category:string, variable:string, time:number):Client; + timing(category:string, variable:string, time:number, callback:(err:any) => void):void; + timing(category:string, variable:string, time:number, label:string):Client; + timing(category:string, variable:string, time:number, label:string, callback:(err:any) => void):void; + timing(params:Object):Client; + timing(params:Object, callback:(err:any) => void):void; + + + middleware(accountID:string, options?:any):any; + } +} + +declare module 'universal-analytics' { +export = UniversalAnalytics; +}