diff --git a/angular1/app/app.ts b/angular1/app/app.ts index 21eccdb..68fd66c 100644 --- a/angular1/app/app.ts +++ b/angular1/app/app.ts @@ -6,7 +6,7 @@ angular.module('myApp', [ 'myApp.view1', 'myApp.view2', 'myApp.version' -]). -config(['$routeProvider', function($routeProvider) { - $routeProvider.otherwise({redirectTo: '/view1'}); -}]); +]) + .config(['$routeProvider', $routeProvider => { + $routeProvider.otherwise({ redirectTo: '/view1' }); + }]); diff --git a/angular1/app/components/version/interpolate-filter.ts b/angular1/app/components/version/interpolate-filter.ts index 03bb198..91a4198 100644 --- a/angular1/app/components/version/interpolate-filter.ts +++ b/angular1/app/components/version/interpolate-filter.ts @@ -1,9 +1,6 @@ 'use strict'; angular.module('myApp.version.interpolate-filter', []) - -.filter('interpolate', ['version', function(version) { - return function(text) { - return String(text).replace(/\%VERSION\%/mg, version); - }; -}]); + .filter('interpolate', ['version', version => { + return text => String(text).replace(/\%VERSION\%/mg, version); + }]); diff --git a/angular1/app/components/version/interpolate-filter_test.ts b/angular1/app/components/version/interpolate-filter_test.ts index ff56c52..c4b060f 100644 --- a/angular1/app/components/version/interpolate-filter_test.ts +++ b/angular1/app/components/version/interpolate-filter_test.ts @@ -1,14 +1,14 @@ 'use strict'; -describe('myApp.version module', function() { +describe('myApp.version module', () => { beforeEach(module('myApp.version')); - describe('interpolate filter', function() { - beforeEach(module(function($provide) { + describe('interpolate filter', () => { + beforeEach(module($provide => { $provide.value('version', 'TEST_VER'); })); - it('should replace VERSION', inject(function(interpolateFilter) { + it('should replace VERSION', inject(interpolateFilter => { expect(interpolateFilter('before %VERSION% after')).toEqual('before TEST_VER after'); })); }); diff --git a/angular1/app/components/version/version-directive.ts b/angular1/app/components/version/version-directive.ts index 74088f8..deb07d0 100644 --- a/angular1/app/components/version/version-directive.ts +++ b/angular1/app/components/version/version-directive.ts @@ -1,9 +1,8 @@ 'use strict'; angular.module('myApp.version.version-directive', []) - -.directive('appVersion', ['version', function(version) { - return function(scope, elm, attrs) { - elm.text(version); - }; -}]); + .directive('appVersion', ['version', version => { + return (scope, element, attributes) => { + element.text(version); + }; + }]); diff --git a/angular1/app/components/version/version-directive_test.ts b/angular1/app/components/version/version-directive_test.ts index 4a59e11..2510e13 100644 --- a/angular1/app/components/version/version-directive_test.ts +++ b/angular1/app/components/version/version-directive_test.ts @@ -1,15 +1,16 @@ 'use strict'; -describe('myApp.version module', function() { +describe('myApp.version module', () => { beforeEach(module('myApp.version')); - describe('app-version directive', function() { - it('should print current version', function() { - module(function($provide) { + describe('app-version directive', () => { + it('should print current version', () => { + module($provide => { $provide.value('version', 'TEST_VER'); }); - inject(function($compile, $rootScope) { - var element = $compile('')($rootScope); + + inject(($compile, $rootScope) => { + let element = $compile('')($rootScope); expect(element.text()).toEqual('TEST_VER'); }); }); diff --git a/angular1/app/components/version/version.ts b/angular1/app/components/version/version.ts index cb7a10f..0139bdb 100644 --- a/angular1/app/components/version/version.ts +++ b/angular1/app/components/version/version.ts @@ -4,5 +4,4 @@ angular.module('myApp.version', [ 'myApp.version.interpolate-filter', 'myApp.version.version-directive' ]) - .value('version', '0.1'); diff --git a/angular1/app/components/version/version_test.ts b/angular1/app/components/version/version_test.ts index 4ca6880..b911ef2 100644 --- a/angular1/app/components/version/version_test.ts +++ b/angular1/app/components/version/version_test.ts @@ -1,10 +1,10 @@ 'use strict'; -describe('myApp.version module', function() { +describe('myApp.version module', () => { beforeEach(module('myApp.version')); - describe('version service', function() { - it('should return current version', inject(function(version) { + describe('version service', () => { + it('should return current version', inject(version => { expect(version).toEqual('0.1'); })); }); diff --git a/angular1/app/view1/view1.ts b/angular1/app/view1/view1.ts index 4a50ba2..8cf391b 100644 --- a/angular1/app/view1/view1.ts +++ b/angular1/app/view1/view1.ts @@ -1,19 +1,14 @@ 'use strict'; -class View1Controller{ - static $inject = []; - constructor(){ - - } +class View1Controller { + static $inject = []; } angular.module('myApp.view1', ['ngRoute']) - -.config(['$routeProvider', function($routeProvider) { - $routeProvider.when('/view1', { - templateUrl: 'view1/view1.html', - controller: 'View1Ctrl' - }); -}]) - -.controller('View1Ctrl', View1Controller); + .config(['$routeProvider', $routeProvider => { + $routeProvider.when('/view1', { + templateUrl: 'view1/view1.html', + controller: 'View1Ctrl' + }); + }]) + .controller('View1Ctrl', View1Controller); diff --git a/angular1/app/view1/view1_test.ts b/angular1/app/view1/view1_test.ts index c993773..95fa007 100644 --- a/angular1/app/view1/view1_test.ts +++ b/angular1/app/view1/view1_test.ts @@ -1,16 +1,12 @@ 'use strict'; -describe('myApp.view1 module', function() { - +describe('myApp.view1 module', () => { beforeEach(module('myApp.view1')); - describe('view1 controller', function(){ - - it('should ....', inject(function($controller) { - //spec body - var view1Ctrl:View1Controller = $controller('View1Ctrl'); + describe('view1 controller', () => { + it('should be defined', inject($controller => { + let view1Ctrl: View1Controller = $controller('View1Ctrl'); expect(view1Ctrl).toBeDefined(); })); - }); }); diff --git a/angular1/app/view2/view2.ts b/angular1/app/view2/view2.ts index 35a8126..264db98 100644 --- a/angular1/app/view2/view2.ts +++ b/angular1/app/view2/view2.ts @@ -1,19 +1,14 @@ 'use strict'; -class View2Controller{ - static $inject = []; - constructor(){ - - } +class View2Controller { + static $inject = []; } angular.module('myApp.view2', ['ngRoute']) - -.config(['$routeProvider', function($routeProvider) { - $routeProvider.when('/view2', { - templateUrl: 'view2/view2.html', - controller: 'View2Ctrl' - }); -}]) - -.controller('View2Ctrl', View2Controller); + .config(['$routeProvider', $routeProvider => { + $routeProvider.when('/view2', { + templateUrl: 'view2/view2.html', + controller: 'View2Ctrl' + }); + }]) + .controller('View2Ctrl', View2Controller); diff --git a/angular1/app/view2/view2_test.ts b/angular1/app/view2/view2_test.ts index 8467624..b3ee22b 100644 --- a/angular1/app/view2/view2_test.ts +++ b/angular1/app/view2/view2_test.ts @@ -1,16 +1,12 @@ 'use strict'; -describe('myApp.view2 module', function() { - +describe('myApp.view2 module', () => { beforeEach(module('myApp.view2')); - describe('view2 controller', function(){ - - it('should ....', inject(function($controller) { - //spec body - var view2Ctrl:View2Controller = $controller('View2Ctrl'); + describe('view2 controller', () => { + it('should be defined', inject($controller => { + let view2Ctrl: View2Controller = $controller('View2Ctrl'); expect(view2Ctrl).toBeDefined(); })); - }); }); diff --git a/angular1/e2e-tests/scenarios.ts b/angular1/e2e-tests/scenarios.ts index 0e8348a..234906c 100644 --- a/angular1/e2e-tests/scenarios.ts +++ b/angular1/e2e-tests/scenarios.ts @@ -2,41 +2,29 @@ /* https://github.com/angular/protractor/blob/master/docs/toc.md */ -describe('my app', function() { - - - it('should automatically redirect to /view1 when location hash/fragment is empty', function() { +describe('my app', () => { + it('should automatically redirect to /view1 when location hash/fragment is empty', () => { browser.get('index.html'); expect(browser.getLocationAbsUrl()).toMatch("/view1"); }); - - describe('view1', function() { - - beforeEach(function() { + describe('view1', () => { + beforeEach(() => { browser.get('index.html#/view1'); }); - - it('should render view1 when user navigates to /view1', function() { - expect(element.all(by.css('[ng-view] p')).first().getText()). - toMatch(/partial for view 1/); + it('should render view1 when user navigates to /view1', () => { + expect(element.all(by.css('[ng-view] p')).first().getText()).toMatch(/partial for view 1/); }); - }); - - describe('view2', function() { - - beforeEach(function() { + describe('view2', () => { + beforeEach(() => { browser.get('index.html#/view2'); }); - - it('should render view2 when user navigates to /view2', function() { - expect(element.all(by.css('[ng-view] p')).first().getText()). - toMatch(/partial for view 2/); + it('should render view2 when user navigates to /view2', () => { + expect(element.all(by.css('[ng-view] p')).first().getText()).toMatch(/partial for view 2/); }); - }); }); diff --git a/jquery/README.md b/jquery/README.md index 6739dba..2ffaefc 100644 --- a/jquery/README.md +++ b/jquery/README.md @@ -10,6 +10,7 @@ For best results, scroll the window using the scrollbar. ## Running ``` -tsc --sourcemap --target ES5 parallax.ts -start parallax.html +npm install +tsc +open parallax.html ``` diff --git a/jquery/jquery.d.ts b/jquery/jquery.d.ts deleted file mode 100644 index 219469c..0000000 --- a/jquery/jquery.d.ts +++ /dev/null @@ -1,703 +0,0 @@ -/* ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ - -// Typing for the jQuery library, version 1.10 - -/* - Interface for the AJAX setting that will configure the AJAX request -*/ -interface JQueryAjaxSettings { - accepts?: any; - async?: boolean; - beforeSend? (jqXHR: JQueryXHR, settings: JQueryAjaxSettings): any; - cache?: boolean; - complete? (jqXHR: JQueryXHR, textStatus: string): any; - contents?: { [key: string]: any; }; - contentType?: any; - context?: any; - converters?: { [key: string]: any; }; - crossDomain?: boolean; - data?: any; - dataFilter? (data: any, ty: any): any; - dataType?: string; - error? (jqXHR: JQueryXHR, textStatus: string, errorThrow: string): any; - global?: boolean; - headers?: { [key: string]: any; }; - ifModified?: boolean; - isLocal?: boolean; - jsonp?: string; - jsonpCallback?: any; - mimeType?: string; - password?: string; - processData?: boolean; - scriptCharset?: string; - statusCode?: { [key: string]: any; }; - success? (data: any, textStatus: string, jqXHR: JQueryXHR): any; - timeout?: number; - traditional?: boolean; - type?: string; - url?: string; - username?: string; - xhr?: any; - xhrFields?: { [key: string]: any; }; -} - -/* - Interface for the jqXHR object -*/ -interface JQueryXHR extends XMLHttpRequest { - overrideMimeType(): any; -} - -/* - Interface for the JQuery callback -*/ -interface JQueryCallback { - add(...callbacks: any[]): any; - disable(): any; - empty(): any; - fire(...arguments: any[]): any; - fired(): boolean; - fireWith(context: any, ...args: any[]): any; - has(callback: any): boolean; - lock(): any; - locked(): boolean; - removed(...callbacks: any[]): any; -} - -/* - Interface for the JQuery promise, part of callbacks -*/ -interface JQueryPromise { - always(...alwaysCallbacks: any[]): JQueryDeferred; - done(...doneCallbacks: any[]): JQueryDeferred; - fail(...failCallbacks: any[]): JQueryDeferred; - pipe(doneFilter?: (x: any) => any, failFilter?: (x: any) => any, progressFilter?: (x: any) => any): JQueryPromise; - then(doneCallbacks: any, failCallbacks: any, progressCallbacks?: any): JQueryDeferred; -} - -/* - Interface for the JQuery deferred, part of callbacks -*/ -interface JQueryDeferred extends JQueryPromise { - notify(...args: any[]): JQueryDeferred; - notifyWith(context: any, ...args: any[]): JQueryDeferred; - - progress(...progressCallbacks: any[]): JQueryDeferred; - reject(...args: any[]): JQueryDeferred; - rejectWith(context: any, ...args: any[]): JQueryDeferred; - resolve(...args: any[]): JQueryDeferred; - resolveWith(context: any, ...args: any[]): JQueryDeferred; - state(): string; - then(doneCallbacks: any, failCallbacks?: any, progressCallbacks?: any): JQueryDeferred; -} - -/* - Interface of the JQuery extension of the W3C event object -*/ -interface JQueryEventObject extends Event { - data: any; - delegateTarget: Element; - isDefaultPrevented(): boolean; - isImmediatePropogationStopped(): boolean; - isPropogationStopped(): boolean; - namespace: string; - preventDefault(): any; - relatedTarget: Element; - result: any; - stopImmediatePropagation(): void; - stopPropagation(): void; - pageX: number; - pageY: number; - which: number; - metaKey: any; -} - -/* - Collection of properties of the current browser -*/ -interface JQueryBrowserInfo { - safari: boolean; - opera: boolean; - msie: boolean; - mozilla: boolean; - version: string; -} - -interface JQuerySupport { - ajax?: boolean; - boxModel?: boolean; - changeBubbles?: boolean; - checkClone?: boolean; - checkOn?: boolean; - cors?: boolean; - cssFloat?: boolean; - hrefNormalized?: boolean; - htmlSerialize?: boolean; - leadingWhitespace?: boolean; - noCloneChecked?: boolean; - noCloneEvent?: boolean; - opacity?: boolean; - optDisabled?: boolean; - optSelected?: boolean; - scriptEval? (): boolean; - style?: boolean; - submitBubbles?: boolean; - tbody?: boolean; -} - -interface JQueryTransport { - send(headers: { [index: string]: string; }, completeCallback: (status: number, statusText: string, responses: { [dataType: string]: any; }, headers: string) => void): void; - abort(): void; -} - -/* - Static members of jQuery (those on $ and jQuery themselves) -*/ -interface JQueryStatic { - - // AJAX - ajax(settings: JQueryAjaxSettings): JQueryXHR; - ajax(url: string, settings: JQueryAjaxSettings): JQueryXHR; - - ajaxPrefilter(handler: (opts: any, originalOpts: any, jqXHR: JQueryXHR) => any): any; - ajaxPrefilter(dataTypes: string, handler: (opts: any, originalOpts: any, jqXHR: JQueryXHR) => any): any; - - ajaxSetup(options: any): void; - ajaxTransport(dataType: string, handler: (options: JQueryAjaxSettings, originalOptions: JQueryAjaxSettings, jqXHR: JQueryXHR) => JQueryTransport): void; - - get(url: string, data?: any, success?: any, dataType?: any): JQueryXHR; - getJSON(url: string, data?: any, success?: any): JQueryXHR; - getScript(url: string, success?: any): JQueryXHR; - - param(obj: any): string; - param(obj: any, traditional: boolean): string; - - post(url: string, data?: any, success?: any, dataType?: any): JQueryXHR; - - // Callbacks - Callbacks(flags: any): JQueryCallback; - - // Core - holdReady(hold: boolean): any; - - (): JQuery; - (selector: string, context?: any): JQuery; - (element: Element): JQuery; - (elementArray: Element[]): JQuery; - (object: JQuery): JQuery; - (func: Function): JQuery; - (object: {}): JQuery; - - noConflict(removeAll?: boolean): Object; - - when(...deferreds: any[]): JQueryPromise; - - // CSS - css(e: any, propertyName: string, value?: any): any; - css(e: any, propertyName: any, value?: any): any; - cssHooks: { [key: string]: any; }; - - // Data - data(element: Element, key: string, value: any): Object; - - dequeue(element: Element, queueName?: string): any; - - hasData(element: Element): boolean; - - queue(element: Element, queueName?: string): any[]; - queue(element: Element, queueName: string, newQueueOrCallback: any): JQuery; - - removeData(element: Element, name?: string): JQuery; - - // Deferred - Deferred(beforeStart?: (deferred: JQueryDeferred) => any): JQueryDeferred; - - // Effects - fx: { tick: () => void; interval: number; stop: () => void; speeds: { slow: number; fast: number; }; off: boolean; step: any; }; - - // Events - proxy(func: Function, context: any): any; - proxy(context: any, name: string): any; - - // Internals - error(message: any): void; - - // Miscellaneous - expr: any; - fn: any; //TODO: Decide how we want to type this - isReady: boolean; - - // Properties - browser: JQueryBrowserInfo; - support: JQuerySupport; - - // Utilities - contains(container: Element, contained: Element): boolean; - - each(collection: any, callback: (indexInArray: any, valueOfElement: any) => any): any; - - extend(deep: boolean, target: any, ...objs: any[]): Object; - extend(target: any, ...objs: any[]): Object; - - globalEval(code: string): any; - - grep(array: any[], func: any, invert: boolean): any[]; - - inArray(value: any, array: any[], fromIndex?: number): number; - - isArray(obj: any): boolean; - isEmptyObject(obj: any): boolean; - isFunction(obj: any): boolean; - isNumeric(value: any): boolean; - isPlainObject(obj: any): boolean; - isWindow(obj: any): boolean; - isXMLDoc(node: Node): boolean; - - makeArray(obj: any): any[]; - - map(array: any[], callback: (elementOfArray: any, indexInArray: any) => any): any[]; - - merge(first: any[], second: any[]): any[]; - - noop(): any; - - now(): number; - - parseHTML(data: string, context?: Element, keepScripts?: boolean): any[]; - parseJSON(json: string): any; - - //FIXME: This should return an XMLDocument - parseXML(data: string): any; - - queue(element: Element, queueName: string, newQueue: any[]): JQuery; - - trim(str: string): string; - - type(obj: any): string; - - unique(arr: any[]): any[]; -} - -/* - The jQuery instance members -*/ -interface JQuery { - // AJAX - ajaxComplete(handler: any): JQuery; - ajaxError(handler: (evt: any, xhr: any, opts: any) => any): JQuery; - ajaxSend(handler: (evt: any, xhr: any, opts: any) => any): JQuery; - ajaxStart(handler: () => any): JQuery; - ajaxStop(handler: () => any): JQuery; - ajaxSuccess(handler: (evt: any, xml: any, opts: any) => any): JQuery; - - serialize(): string; - serializeArray(): any[]; - - // Attributes - addClass(classNames: string): JQuery; - addClass(func: (index: any, currentClass: any) => JQuery): JQuery; - - attr(attributeName: string): string; - attr(attributeName: string, func: (index: any, attr: any) => any): JQuery; - attr(attributeName: string, value: any): JQuery; - attr(map: { [key: string]: any; }): JQuery; - - hasClass(className: string): boolean; - - html(): string; - html(htmlString: string): JQuery; - - prop(propertyName: string): any; - prop(propertyName: string, func: (index: any, oldPropertyValue: any) => any): JQuery; - prop(propertyName: string, value: any): JQuery; - prop(map: any): JQuery; - - removeAttr(attributeName: any): JQuery; - - removeClass(func: (index: any, cls: any) => any): JQuery; - removeClass(className?: string): JQuery; - - removeProp(propertyName: any): JQuery; - - toggleClass(func: (index: any, cls: any, swtch: any) => any): JQuery; - toggleClass(swtch?: boolean): JQuery; - toggleClass(className: any, swtch?: boolean): JQuery; - - val(): any; - val(value: string[]): JQuery; - val(value: string): JQuery; - val(func: (index: any, value: any) => any): JQuery; - - // CSS - css(propertyNames: any[]): string; - css(propertyName: string): string; - css(propertyName: string, value: any): JQuery; - css(propertyName: any, value?: any): JQuery; - - height(): number; - height(value: number): JQuery; - height(func: (index: any, height: any) => any): JQuery; - - innerHeight(): number; - innerWidth(): number; - - offset(): { top: number; left: number; }; - offset(func: (index: any, coords: any) => any): JQuery; - offset(coordinates: any): JQuery; - - outerHeight(includeMargin?: boolean): number; - outerWidth(includeMargin?: boolean): number; - - position(): { top: number; left: number; }; - - scrollLeft(): number; - scrollLeft(value: number): JQuery; - - scrollTop(): number; - scrollTop(value: number): JQuery; - - width(): number; - width(value: number): JQuery; - width(func: (index: any, height: any) => any): JQuery; - - // Data - clearQueue(queueName?: string): JQuery; - - data(key: string, value: any): JQuery; - data(obj: { [key: string]: any; }): JQuery; - data(key?: string): any; - - dequeue(queueName?: string): JQuery; - - queue(queueName?: string): any[]; - queue(queueName: string, newQueueOrCallback: any): JQuery; - queue(newQueueOrCallback: any): JQuery; - - removeData(nameOrList?: any): JQuery; - - // Deferred - promise(type?: any, target?: any): JQueryPromise; - - // Effects - animate(properties: any, options: { duration?: any; easing?: string; complete?: Function; step?: Function; queue?: boolean; specialEasing?: any; }): JQuery; - animate(properties: any, duration?: any, easing?: "linear", complete?: Function): JQuery; - animate(properties: any, duration?: any, easing?: "swing", complete?: Function): JQuery; - animate(properties: any, duration?: any, easing?: string, complete?: Function): JQuery; - - delay(duration: number, queueName?: string): JQuery; - - fadeIn(duration?: any, easing?: "linear", complete?: Function): JQuery; - fadeIn(duration?: any, easing?: "swing", complete?: Function): JQuery; - fadeIn(duration?: any, easing?: string, complete?: Function): JQuery; - fadeIn(duration?: any, complete?: Function): JQuery; - - - fadeOut(duration?: any, easing?: "linear", complete?: Function): JQuery; - fadeOut(duration?: any, easing?: "swing", complete?: Function): JQuery; - fadeOut(duration?: any, easing?: string, complete?: Function): JQuery; - fadeOut(duration?: any, complete?: any): JQuery; - - fadeTo(duration: any, opacity: number, easing?: "linear", complete?: Function): JQuery; - fadeTo(duration: any, opacity: number, easing?: "swing", complete?: Function): JQuery; - fadeTo(duration: any, opacity: number, easing?: string, complete?: Function): JQuery; - fadeTo(duration: any, opacity: number, complete?: Function): JQuery; - - fadeToggle(duration?: any, easing?: "linear", complete?: Function): JQuery; - fadeToggle(duration?: any, easing?: "swing", complete?: Function): JQuery; - fadeToggle(duration?: any, easing?: string, complete?: Function): JQuery; - - finish(queue?: string): JQuery; - - hide(duration?: any, easing?: "linear", callback?: Function): JQuery; - hide(duration?: any, easing?: "swing", callback?: Function): JQuery; - hide(duration?: any, easing?: string, callback?: Function): JQuery; - hide(duration?: any, callback?: Function): JQuery; - - show(duration?: any, easing?: "linear", complete?: Function): JQuery; - show(duration?: any, easing?: "swing", complete?: Function): JQuery; - show(duration?: any, easing?: string, complete?: Function): JQuery; - show(duration?: any, complete?: Function): JQuery; - - slideDown(duration?: any, easing?: "linear", complete?: Function): JQuery; - slideDown(duration?: any, easing?: "swing", complete?: Function): JQuery; - slideDown(duration?: any, easing?: string, complete?: Function): JQuery; - slideDown(duration?: any, complete?: Function): JQuery; - - slideToggle(duration?: any, easing?: "linear", complete?: Function): JQuery; - slideToggle(duration?: any, easing?: "swing", complete?: Function): JQuery; - slideToggle(duration?: any, easing?: string, complete?: Function): JQuery; - slideToggle(duration?: any, complete?: Function): JQuery; - - slideUp(duration?: any, easing?: "linear", complete?: Function): JQuery; - slideUp(duration?: any, easing?: "swing", complete?: Function): JQuery; - slideUp(duration?: any, easing?: string, complete?: Function): JQuery; - slideUp(duration?: any, complete?: Function): JQuery; - - stop(clearQueue?: boolean, jumpToEnd?: boolean): JQuery; - stop(queue?: any, clearQueue?: boolean, jumpToEnd?: boolean): JQuery; - - toggle(showOrHide: boolean): JQuery; - toggle(duration?: any, easing?: "linear", complete?: Function): JQuery; - toggle(duration?: any, easing?: "swing", complete?: Function): JQuery; - toggle(duration?: any, easing?: string, complete?: Function): JQuery; - toggle(duration?: any, complete?: Function): JQuery; - - // Events - bind(eventType: string, preventBubble: boolean): JQuery; - bind(eventType: string, eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - bind(eventType: string, eventData: any, preventBubble: boolean): JQuery; - bind(...events: any[]): JQuery; - - blur(handler: (eventObject: JQueryEventObject) => any): JQuery; - blur(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - change(handler: (eventObject: JQueryEventObject) => any): JQuery; - change(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - click(handler: (eventObject: JQueryEventObject) => any): JQuery; - click(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - dblclick(handler: (eventObject: JQueryEventObject) => any): JQuery; - dblclick(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - delegate(selector: any, eventType: string, handler: (eventObject: JQueryEventObject) => any): JQuery; - - focus(handler: (eventObject: JQueryEventObject) => any): JQuery; - focus(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - focusin(handler: (eventObject: JQueryEventObject) => any): JQuery; - focusin(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - focusout(handler: (eventObject: JQueryEventObject) => any): JQuery; - focusout(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - hover(handlerIn: (eventObject: JQueryEventObject) => any, handlerOut: (eventObject: JQueryEventObject) => any): JQuery; - hover(handlerInOut: (eventObject: JQueryEventObject) => any): JQuery; - - keydown(handler: (eventObject: JQueryEventObject) => any): JQuery; - keydown(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - keypress(handler: (eventObject: JQueryEventObject) => any): JQuery; - keypress(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - keyup(handler: (eventObject: JQueryEventObject) => any): JQuery; - keyup(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - mousedown(handler: (eventObject: JQueryEventObject) => any): JQuery; - mousedown(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseevent(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseevent(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseenter(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseenter(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseleave(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseleave(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mousemove(handler: (eventObject: JQueryEventObject) => any): JQuery; - mousemove(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseout(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseout(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseover(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseover(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - mouseup(handler: (eventObject: JQueryEventObject) => any): JQuery; - mouseup(eventData: any, handler: (eventObject: JQueryEventObject) => any): JQuery; - - off(events?: string, selector?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - off(eventsMap: { [key: string]: any; }, selector?: any): JQuery; - - on(events: string, selector?: any, data?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - on(eventsMap: { [key: string]: any; }, selector?: any, data?: any): JQuery; - - one(events: string, selector?: any, data?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - one(eventsMap: { [key: string]: any; }, selector?: any, data?: any): JQuery; - - ready(handler: any): JQuery; - - resize(handler: (eventObject: JQueryEventObject) => any): JQuery; - resize(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - scroll(handler: (eventObject: JQueryEventObject) => any): JQuery; - scroll(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - select(handler: (eventObject: JQueryEventObject) => any): JQuery; - select(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - submit(handler: (eventObject: JQueryEventObject) => any): JQuery; - submit(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery; - - trigger(eventType: string, ...extraParameters: any[]): JQuery; - trigger(event: JQueryEventObject): JQuery; - - triggerHandler(eventType: string, ...extraParameters: any[]): Object; - - unbind(eventType?: string, handler?: (eventObject: JQueryEventObject) => any): JQuery; - unbind(eventType: string, fls: boolean): JQuery; - unbind(evt: any): JQuery; - - undelegate(): JQuery; - undelegate(selector: any, eventType: string, handler?: (eventObject: JQueryEventObject) => any): JQuery; - undelegate(selector: any, events: any): JQuery; - undelegate(namespace: string): JQuery; - - // Internals - context: Element; - jquery: string; - pushStack(elements: any[]): JQuery; - pushStack(elements: any[], name: any, arguments: any): JQuery; - - // Manipulation - after(func: (index: any) => any): JQuery; - after(...content: any[]): JQuery; - - append(func: (index: any, html: any) => any): JQuery; - append(...content: any[]): JQuery; - - appendTo(target: any): JQuery; - - before(func: (index: any) => any): JQuery; - before(...content: any[]): JQuery; - - clone(withDataAndEvents?: boolean, deepWithDataAndEvents?: boolean): JQuery; - - detach(selector?: any): JQuery; - - empty(): JQuery; - - insertAfter(target: any): JQuery; - insertBefore(target: any): JQuery; - - prepend(func: (index: any, html: any) => any): JQuery; - prepend(...content: any[]): JQuery; - - prependTo(target: any): JQuery; - - remove(selector?: any): JQuery; - - replaceAll(target: any): JQuery; - - replaceWith(func: any): JQuery; - - text(textString: string): JQuery; - text(): string; - - toArray(): any[]; - - unwrap(): JQuery; - - wrap(func: (index: any) => any): JQuery; - wrap(wrappingElement: any): JQuery; - - wrapAll(wrappingElement: any): JQuery; - - wrapInner(func: (index: any) => any): JQuery; - wrapInner(wrappingElement: any): JQuery; - - // Miscellaneous - each(func: (index: any, elem: Element) => any): JQuery; - - get(index?: number): any; - - index(selectorOrElement?: any): number; - - // Properties - length: number; - [x: number]: HTMLElement; - - // Traversing - add(selector: string, context?: any): JQuery; - add(html: string): JQuery; - add(obj: JQuery): JQuery; - add(...elements: any[]): JQuery; - - addBack(selector?: any): JQuery; - - children(selector?: any): JQuery; - - closest(selector: string): JQuery; - closest(selector: string, context?: Element): JQuery; - closest(obj: JQuery): JQuery; - closest(element: any): JQuery; - closest(selectors: any, context?: Element): any[]; - - contents(): JQuery; - - end(): JQuery; - - eq(index: number): JQuery; - - filter(selector: string): JQuery; - filter(func: (index: any) => any): JQuery; - filter(obj: JQuery): JQuery; - filter(element: any): JQuery; - - find(selector: string): JQuery; - find(element: any): JQuery; - find(obj: JQuery): JQuery; - - first(): JQuery; - - has(selector: string): JQuery; - has(contained: Element): JQuery; - - is(selector: string): boolean; - is(func: (index: any) => any): boolean; - is(obj: JQuery): boolean; - is(element: any): boolean; - - last(): JQuery; - - map(callback: (index: any, domElement: Element) => any): JQuery; - - next(selector?: string): JQuery; - - nextAll(selector?: string): JQuery; - - nextUntil(selector?: string, filter?: string): JQuery; - nextUntil(element?: Element, filter?: string): JQuery; - - not(selector: string): JQuery; - not(func: (index: any) => any): JQuery; - not(obj: JQuery): JQuery; - not(element: any): JQuery; - - offsetParent(): JQuery; - - parent(selector?: string): JQuery; - - parents(selector?: string): JQuery; - - parentsUntil(selector?: string, filter?: string): JQuery; - parentsUntil(element?: Element, filter?: string): JQuery; - - prev(selector?: string): JQuery; - - prevAll(selector?: string): JQuery; - - prevUntil(selector?: string, filter?: string): JQuery; - prevUntil(element?: Element, filter?: string): JQuery; - - siblings(selector?: string): JQuery; - - slice(start: number, end?: number): JQuery; -} - -declare var jQuery: JQueryStatic; -declare var $: JQueryStatic; diff --git a/jquery/package.json b/jquery/package.json new file mode 100644 index 0000000..8fe52aa --- /dev/null +++ b/jquery/package.json @@ -0,0 +1,18 @@ +{ + "name": "jquery", + "version": "1.0.0", + "description": "jQuery Typescript Demo", + "scripts":{ + "tsc": "tsc" + }, + "dependencies": { + "jquery": "^3.1.1" + }, + "devDependencies": { + "@types/jquery": "^2.0.40", + "typescript": "^2.1.6" + }, + "type": "git", + "url": "https://github.com/Microsoft/TypeScriptSamples.git", + "license": "MIT" +} \ No newline at end of file diff --git a/jquery/parallax.html b/jquery/parallax.html index 2ac4626..4f2c4c7 100644 --- a/jquery/parallax.html +++ b/jquery/parallax.html @@ -1,4 +1,4 @@ - + @@ -7,11 +7,9 @@ height: 2000px; background-color: Black; } - #plaxHost div { width: 95%; } - #plax1 { position: fixed; color:White; @@ -21,14 +19,12 @@ left: 0; z-index: 1; } - #plax2 { position: fixed; height: 2000px; background-image: url(starfield.png); background-position: 1087px 0; top: 0; - left: 0; z-index: 2; } @@ -42,7 +38,6 @@ left: 0; z-index: 3; } - #plax4 { position: fixed; height: 2000px; @@ -52,7 +47,6 @@ left: 0; z-index: 4; } - #plax5 { position: fixed; height: 2000px; @@ -84,7 +78,7 @@ - + - + \ No newline at end of file diff --git a/jquery/parallax.ts b/jquery/parallax.ts index 4c81bca..8d44af9 100644 --- a/jquery/parallax.ts +++ b/jquery/parallax.ts @@ -1,5 +1,3 @@ -/// - module Parallax { export class ParallaxContainer { private content: HTMLElement; @@ -55,4 +53,4 @@ module Parallax { $(this.content).css({ marginTop: value }); } } -} +} \ No newline at end of file diff --git a/js-and-ts/README.md b/js-and-ts/README.md new file mode 100644 index 0000000..2b3ecfb --- /dev/null +++ b/js-and-ts/README.md @@ -0,0 +1,17 @@ +# TypeScript Sample: Mixing TypeScript and JavaScript + +## Overview + +A sample of how to use the `allowJS` option to use both JavaScript and TypeScript together. +A simple text formatter is provided, written in JavaScript. This formatter is then used +within a TypeScript class to format a computation. + +To run this sample, you must have `node` installed. You can also use `ts-node` to run this directly +without a compilation from TypeScript to JavaScript. + +## Running + +```bash +$ tsc robot.ts` +$ node robot.js` +``` \ No newline at end of file diff --git a/js-and-ts/format.js b/js-and-ts/format.js new file mode 100644 index 0000000..9b6ebd7 --- /dev/null +++ b/js-and-ts/format.js @@ -0,0 +1,13 @@ +const surroundWithStars = (value) => { + const valueLength = value.toString().length; + const topBottomBorder = '*'.repeat(valueLength + 2); + + return topBottomBorder + + "\n" + + '*' + value.toString() + '*' + + "\n" + + topBottomBorder; +} + +module.exports.Formatter = { surroundWithStars }; + diff --git a/js-and-ts/robot.ts b/js-and-ts/robot.ts new file mode 100644 index 0000000..0542c12 --- /dev/null +++ b/js-and-ts/robot.ts @@ -0,0 +1,46 @@ +// This import wouldn't be possible without the allowJS option in tsconfig +import { Formatter } from './format.js'; + +interface Robot { + name: String; + currentComputation: Number; +} + +class Robot { + constructor(public name: String) { + this.name = name; + this.currentComputation = 0; + } + + // Given a mathematical operation, return a value based on the value passed, + // the operation and the number 10 + compute(operation, value) { + let computedValue = 0; + switch(operation) { + case '+': + computedValue = value + 10; + break; + case '-': + computedValue = value - 10; + break; + case '/': + computedValue = value / 10; + break; + case '*': + computedValue = value * 10; + break; + default: + console.log("Does not compute!!") + } + this.currentComputation = computedValue; + } + + // Using an external JS module, format the computed value from our robot + displayCurrentComputation() { + console.log(Formatter.surroundWithStars(this.currentComputation)); + } +} + +const hal = new Robot('Hal'); +hal.compute('+', 32); +hal.displayCurrentComputation(); \ No newline at end of file diff --git a/js-and-ts/tsconfig.json b/js-and-ts/tsconfig.json new file mode 100644 index 0000000..2a9bebf --- /dev/null +++ b/js-and-ts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "outDir": "./built", + "sourceMap": true, + "allowJs": true, + "target": "es6" + }, + "include": [ + "./**/*" + ] +} \ No newline at end of file diff --git a/jsx/README.md b/jsx/README.md index 4a7e6a5..1ab3bd1 100644 --- a/jsx/README.md +++ b/jsx/README.md @@ -10,11 +10,11 @@ npm install ## Compile ``` -node node_modules/typescript/bin/tsc +npm run build ``` ## Start http server ``` -node node_modules/http-server/bin/http-server -o +npm start ``` diff --git a/jsx/package-lock.json b/jsx/package-lock.json new file mode 100644 index 0000000..5474654 --- /dev/null +++ b/jsx/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "jsx-demo", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + } + } +} diff --git a/jsx/package.json b/jsx/package.json index 71552b9..8c62110 100644 --- a/jsx/package.json +++ b/jsx/package.json @@ -5,9 +5,8 @@ "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "postinstall": "node_modules/.bin/tsd install", "build": "node node_modules/typescript/bin/tsc", - "run": "node node_modules/http-server/bin/http-server -o" + "start": "node node_modules/http-server/bin/http-server -o" }, "repository": { "type": "git", @@ -29,11 +28,12 @@ "devDependencies": { "typescript": "latest", "http-server": "0.8.0", - "tsd": "latest" + "@types/react-dom": "^15", + "@types/react": "^15" }, "dependencies": { - "jquery": "^2.1.4", - "react": "^0.13.3", + "react": "^15.6.1", + "react-dom": "^15.6.1", "requirejs": "^2.1.20" } } diff --git a/jsx/require-config.js b/jsx/require-config.js index a554291..27bb21c 100644 --- a/jsx/require-config.js +++ b/jsx/require-config.js @@ -1,6 +1,7 @@ requirejs.config({ paths: { - react: ['/node_modules/react/dist/react'], - jquery: ['/node_modules/jquery/dist/jquery'] + "react": ['/node_modules/react/dist/react'], + "react-dom": ['/node_modules/react-dom/dist/react-dom'], + "jquery": ['/node_modules/jquery/dist/jquery'] } }); diff --git a/jsx/src/app.tsx b/jsx/src/app.tsx index 59c717c..13a5613 100644 --- a/jsx/src/app.tsx +++ b/jsx/src/app.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import * as $ from 'jquery'; +import * as ReactDOM from 'react-dom'; import {Greeter as Greetifier, GreeterProps as GreeterProps} from 'greeter'; function getRandomGreeting() { @@ -11,11 +11,11 @@ function getRandomGreeting() { } } -$(() => { +(() => { let props: GreeterProps = { whomToGreet: 'world!', }; - React.render(, $('#output').get(0)); -}); + ReactDOM.render(, $('#output').get(0)); +})(); diff --git a/jsx/tsd.json b/jsx/tsd.json deleted file mode 100644 index 4cd4297..0000000 --- a/jsx/tsd.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": "v4", - "repo": "borisyankov/DefinitelyTyped", - "ref": "master", - "path": "typings", - "bundle": "typings/tsd.d.ts", - "installed": { - "react/react.d.ts": { - "commit": "04a025ada3492a22df24ca2d8521c911697721b3" - }, - "jquery/jquery.d.ts": { - "commit": "04a025ada3492a22df24ca2d8521c911697721b3" - } - } -} diff --git a/node/.gitignore b/node/.gitignore new file mode 100644 index 0000000..320c107 --- /dev/null +++ b/node/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +dist/ +package-lock.json diff --git a/node/HttpServer.ts b/node/HttpServer.ts deleted file mode 100644 index 3150405..0000000 --- a/node/HttpServer.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -import http = require("http"); - -http.createServer(function (req, res) { - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.end('Hello World\n'); -}).listen(1337, '127.0.0.1'); - -console.log('Server running at http://127.0.0.1:1337/'); \ No newline at end of file diff --git a/node/README.md b/node/README.md index 032b1e7..ec0e9b3 100644 --- a/node/README.md +++ b/node/README.md @@ -1,18 +1,46 @@ # TypeScript Sample: Node.js +## Overview -## Overview +This sample implements a very basic [node.js](https://nodejs.org/) application using TypeScript. -This sample implements a very basic node.js application using TypeScript +## Running +First of all, install all dependencies with: +```bash +npm install +``` + +Then, you can run each of the listed [examples](#examples) with the following command from the this project root folder: +```bash +ts-node ./examples/example-name.ts +``` -## Running -For HttpServer +To run the HTTPS server example, just: +```bash +ts-node ./examples/HttpServer.ts ``` -tsc --sourcemap --module commonjs HttpServer.ts -node HttpServer.js + +This examples are running through [ts-node](https://github.com/TypeStrong/ts-node), which is not recommended in production environments. You can also build those examples with: +```bash +npm run build ``` -For TcpServer +And then running the compiled JavaScript (JS) example file with: +```bash +node ./dist/example-name.js ``` -tsc --sourcemap --module commonjs TcpServer.ts -node TcpServer.js -``` \ No newline at end of file + +## Examples +* [TcpServer](./src/TcpServer.ts) - a simple TCP server +* [HttpServer](./src/HttpServer.ts) - a simple HTTPS server +* [API Client](./src/APIClient.ts) - client that sends a "ping" +* [API Server](./src/APIServer.ts) - server the receives that "ping" and responds with a "pong" +* [Word counter](./src/WordCounter.ts) - shows how many of the desired words are presented in a file +* [Wikipedia Search](./src/Wikipedia.ts) - searches the [Wikipedia](https://en.wikipedia.org/w/api.php?) website + +**note**: due to HTTP/HTTPS distinct way of handle localhost requests, in the examples HTTP is used instead of HTTPS because is a more easy way to set it up. + +## Standards +A modified version of the [Microsoft Linter Standards](https://github.com/Microsoft/tslint-microsoft-contrib) is used. Please be mindful that they are here to help you out improve you code. + +## Git Hooks +Due to [Husky](https://github.com/typicode/husky) integration, before any push to this Github repository, [TSLint](https://github.com/palantir/tslint) will run and then point out all the fixes that needs to be done to follow the set of code [standards](#standards); if nothing needs to be corrected, you then can push it :) diff --git a/node/TcpServer.ts b/node/TcpServer.ts deleted file mode 100644 index fea0bd4..0000000 --- a/node/TcpServer.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// -import net = require('net'); - -var server = net.createServer(function (socket) { - socket.write('Echo server\r\n'); - socket.pipe(socket); -}); - -server.listen(1337, '127.0.0.1'); diff --git a/node/index.ts b/node/index.ts new file mode 100644 index 0000000..06d7444 --- /dev/null +++ b/node/index.ts @@ -0,0 +1,18 @@ +/** + * Just running the command line program. + */ +import { ChildProcess, exec } from 'child_process'; + +const main: Function = (): ChildProcess => { + let command: string = `ts-node ./src/${process.argv[3]}.ts`; + + if (process.argv[2] === 'js') { + exec('tsc'); + + command = `node ./dist/${process.argv[3]}.js`; + } + + return exec(command); +}; + +main(); diff --git a/node/lorem.txt b/node/lorem.txt new file mode 100644 index 0000000..92fb55f --- /dev/null +++ b/node/lorem.txt @@ -0,0 +1 @@ +"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?" diff --git a/node/node.d.ts b/node/node.d.ts deleted file mode 100644 index 846960a..0000000 --- a/node/node.d.ts +++ /dev/null @@ -1,1079 +0,0 @@ -/************************************************ -* * -* Node.js v0.8.8 API * -* * -************************************************/ - -/************************************************ -* * -* GLOBAL * -* * -************************************************/ -declare var process: NodeProcess; -declare var global: any; - -declare var __filename: string; -declare var __dirname: string; - -declare function setTimeout(callback: () => void , ms: number): any; -declare function clearTimeout(timeoutId: any); -declare function setInterval(callback: () => void , ms: number): any; -declare function clearInterval(intervalId: any); - -declare var require: { - (id: string): any; - resolve(): string; - cache: any; - extensions: any; -} - -declare var module: { - exports: any; - require(id: string): any; - id: string; - filename: string; - loaded: boolean; - parent: any; - children: any[]; -} - -// Same as module.exports -declare var exports: any; -declare var SlowBuffer: { - new (str: string, encoding?: string): NodeBuffer; - new (size: number): NodeBuffer; - new (array: any[]): NodeBuffer; - prototype: NodeBuffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: NodeBuffer[], totalLength?: number): NodeBuffer; -}; -declare var Buffer: { - new (str: string, encoding?: string): NodeBuffer; - new (size: number): NodeBuffer; - new (array: any[]): NodeBuffer; - prototype: NodeBuffer; - isBuffer(obj: any): boolean; - byteLength(string: string, encoding?: string): number; - concat(list: NodeBuffer[], totalLength?: number): NodeBuffer; -} - -/************************************************ -* * -* INTERFACES * -* * -************************************************/ - -declare class EventEmitter { - addListener(event: string, listener: Function); - on(event: string, listener: Function); - once(event: string, listener: Function): void; - removeListener(event: string, listener: Function): void; - removeAllListener(event: string): void; - setMaxListeners(n: number): void; - listeners(event: string): { Function; }[]; - emit(event: string, arg1?: any, arg2?: any): void; -} - -declare class WritableStream extends EventEmitter { - writable: boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - end(): void; - end(str: string, enconding: string): void; - end(buffer: NodeBuffer): void; - destroy(): void; - destroySoon(): void; -} - -declare class ReadableStream extends EventEmitter { - readable: boolean; - setEncoding(encoding: string): void; - pause(): void; - resume(): void; - destroy(): void; - pipe(destination: WritableStream, options?: { end?: boolean; }): void; -} - -declare class NodeProcess extends EventEmitter { - stdout: WritableStream; - stderr: WritableStream; - stdin: ReadableStream; - argv: string[]; - execPath: string; - abort(): void; - chdir(directory: string): void; - cwd(): string; - env: any; - exit(code?: number): void; - getgid(): number; - setgid(id: number): void; - getuid(): number; - setuid(id: number): void; - version: string; - versions: { http_parser: string; node: string; v8: string; ares: string; uv: string; zlib: string; openssl: string; }; - config: { - target_defaults: { - cflags: any[]; - default_configuration: string; - defines: string[]; - include_dirs: string[]; - libraries: string[]; - }; - variables: { - clang: number; - host_arch: string; - node_install_npm: boolean; - node_install_waf: boolean; - node_prefix: string; - node_shared_openssl: boolean; - node_shared_v8: boolean; - node_shared_zlib: boolean; - node_use_dtrace: boolean; - node_use_etw: boolean; - node_use_openssl: boolean; - target_arch: string; - v8_no_strict_aliasing: number; - v8_use_snapshot: boolean; - visibility: string; - }; - }; - kill(pid: number, signal?: string): void; - pid: number; - title: string; - arch: string; - platform: string; - memoryUsage(): { rss: number; heapTotal; number; heapUsed: number; }; - nextTick(callback: Function): void; - umask(mask?: number): number; - uptime(): number; - hrtime(): number[]; -} - -// Buffer class -interface NodeBuffer { - [index: number]: number; - write(string: string, offset?: number, length?: number, encoding?: string): number; - toString(encoding?: string, start?: number, end?: number): string; - length: number; - copy(targetBuffer: NodeBuffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): void; - slice(start?: number, end?: number): NodeBuffer; - readUInt8(offset: number, noAsset?: boolean): number; - readUInt16LE(offset: number, noAssert?: boolean): number; - readUInt16BE(offset: number, noAssert?: boolean): number; - readUInt32LE(offset: number, noAssert?: boolean): number; - readUInt32BE(offset: number, noAssert?: boolean): number; - readInt8(offset: number, noAssert?: boolean): number; - readInt16LE(offset: number, noAssert?: boolean): number; - readInt16BE(offset: number, noAssert?: boolean): number; - readInt32LE(offset: number, noAssert?: boolean): number; - readInt32BE(offset: number, noAssert?: boolean): number; - readFloatLE(offset: number, noAssert?: boolean): number; - readFloatBE(offset: number, noAssert?: boolean): number; - readDoubleLE(offset: number, noAssert?: boolean): number; - readDoubleBE(offset: number, noAssert?: boolean): number; - writeUInt8(value: number, offset: number, noAssert?: boolean): void; - writeUInt16LE(value: number, offset: number, noAssert?: boolean): void; - writeUInt16BE(value: number, offset: number, noAssert?: boolean): void; - writeUInt32LE(value: number, offset: number, noAssert?: boolean): void; - writeUInt32BE(value: number, offset: number, noAssert?: boolean): void; - writeInt8(value: number, offset: number, noAssert?: boolean): void; - writeInt16LE(value: number, offset: number, noAssert?: boolean): void; - writeInt16BE(value: number, offset: number, noAssert?: boolean): void; - writeInt32LE(value: number, offset: number, noAssert?: boolean): void; - writeInt32BE(value: number, offset: number, noAssert?: boolean): void; - writeFloatLE(value: number, offset: number, noAssert?: boolean): void; - writeFloatBE(value: number, offset: number, noAssert?: boolean): void; - writeDoubleLE(value: number, offset: number, noAssert?: boolean): void; - writeDoubleBE(value: number, offset: number, noAssert?: boolean): void; - fill(value: any, offset?: number, end?: number): void; - INSPECT_MAX_BYTES: number; -} - -/************************************************ -* * -* MODULES * -* * -************************************************/ -declare module "querystring" { - export function stringify(obj: any, sep?: string, eq?: string): string; - export function parse(str: string, sep?: string, eq?: string, options?: { maxKeys?: number; }): any; - export function escape(): any; - export function unescape(): any; -} - -declare module "events" { - export class EventEmitter { - addListener(event: string, listener: Function); - on(event: string, listener: Function): any; - once(event: string, listener: Function): void; - removeListener(event: string, listener: Function): void; - removeAllListener(event: string): void; - setMaxListeners(n: number): void; - listeners(event: string): { Function; }[]; - emit(event: string, arg1?: any, arg2?: any): void; - } -} - -declare module "http" { - import events = require("events"); - import net = require("net"); - import stream = require("stream"); - - export class Server extends events.EventEmitter { - listen(port: number, hostname?: string, backlog?: number, callback?: Function): void; - listen(path: string, callback?: Function): void; - listen(handle: any, listeningListener?: Function): void; - close(cb?: any): void; - maxHeadersCount: number; - } - export class ServerRequest extends stream.ReadableStream { - method: string; - url: string; - headers: string; - trailers: string; - httpVersion: string; - setEncoding(encoding?: string): void; - pause(): void; - resume(): void; - connection: net.NodeSocket; - } - export class ServerResponse extends stream.WritableStream { - // Extended base methods - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - - writeContinue(): void; - writeHead(statusCode: number, reasonPhrase?: string, headers?: any): void; - writeHead(statusCode: number, headers?: any): void; - statusCode: number; - setHeader(name: string, value: string): void; - sendDate: boolean; - getHeader(name: string): string; - removeHeader(name: string): void; - write(chunk: any, encoding?: string): any; - addTrailers(headers: any): void; - end(data?: any, encoding?: string): void; - } - export class ClientRequest extends stream.WritableStream { - // Extended base methods - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - - write(chunk: any, encoding?: string): void; - end(data?: any, encoding?: string): void; - abort(): void; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: Function): void; - setSocketKeepAlive(enable?: boolean, initialDelay?: number): void; - } - export class ClientResponse extends stream.ReadableStream { - statusCode: number; - httpVersion: string; - headers: any; - trailers: any; - setEncoding(encoding?: string): void; - pause(): void; - resume(): void; - } - export interface Agent { maxSockets: number; sockets: any; requests: any; } - - export var STATUS_CODES; - export function createServer(requestListener?: (request: ServerRequest, response: ServerResponse) =>void ): Server; - export function createClient(port?: number, host?: string): any; - export function request(options: any, callback?: Function): ClientRequest; - export function get(options: any, callback?: Function): ClientRequest; - export var globalAgent: Agent; -} - -declare module "cluster" { - import child_process = require("child_process"); - - export interface ClusterSettings { - exec: string; - args: string[]; - silent: boolean; - } - export interface Worker { - id: string; - process: child_process.ChildProcess; - suicide: boolean; - send(message: any, sendHandle?: any): void; - destroy(): void; - disconnect(): void; - } - - - export var settings: ClusterSettings; - export var isMaster: boolean; - export var isWorker: boolean; - export function setupMaster(settings?: ClusterSettings): void; - export function fork(env?: any): Worker; - export function disconnect(callback?: Function): void; - export var workers: any; - - // Event emitter - export function addListener(event: string, listener: Function): void; - export function on(event: string, listener: Function): any; - export function once(event: string, listener: Function): void; - export function removeListener(event: string, listener: Function): void; - export function removeAllListener(event: string): void; - export function setMaxListeners(n: number): void; - export function listeners(event: string): { Function; }[]; - export function emit(event: string, arg1?: any, arg2?: any): void; -} - -declare module "zlib" { - import stream = require("stream"); - export interface ZlibOptions { chunkSize?: number; windowBits?: number; level?: number; memLevel?: number; strategy?: number; dictionary?: any; } - - export class Gzip extends stream.ReadWriteStream { } - export class Gunzip extends stream.ReadWriteStream { } - export class Deflate extends stream.ReadWriteStream { } - export class Inflate extends stream.ReadWriteStream { } - export class DeflateRaw extends stream.ReadWriteStream { } - export class InflateRaw extends stream.ReadWriteStream { } - export class Unzip extends stream.ReadWriteStream { } - - export function createGzip(options: ZlibOptions): Gzip; - export function createGunzip(options: ZlibOptions): Gunzip; - export function createDeflate(options: ZlibOptions): Deflate; - export function createInflate(options: ZlibOptions): Inflate; - export function createDeflateRaw(options: ZlibOptions): DeflateRaw; - export function createInflateRaw(options: ZlibOptions): InflateRaw; - export function createUnzip(options: ZlibOptions): Unzip; - - export function deflate(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function deflateRaw(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function gzip(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function gunzip(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function inflate(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function inflateRaw(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - export function unzip(buf: NodeBuffer, callback: (error: Error, result) =>void ): void; - - // Constants - export var Z_NO_FLUSH: number; - export var Z_PARTIAL_FLUSH: number; - export var Z_SYNC_FLUSH: number; - export var Z_FULL_FLUSH: number; - export var Z_FINISH: number; - export var Z_BLOCK: number; - export var Z_TREES: number; - export var Z_OK: number; - export var Z_STREAM_END: number; - export var Z_NEED_DICT: number; - export var Z_ERRNO: number; - export var Z_STREAM_ERROR: number; - export var Z_DATA_ERROR: number; - export var Z_MEM_ERROR: number; - export var Z_BUF_ERROR: number; - export var Z_VERSION_ERROR: number; - export var Z_NO_COMPRESSION: number; - export var Z_BEST_SPEED: number; - export var Z_BEST_COMPRESSION: number; - export var Z_DEFAULT_COMPRESSION: number; - export var Z_FILTERED: number; - export var Z_HUFFMAN_ONLY: number; - export var Z_RLE: number; - export var Z_FIXED: number; - export var Z_DEFAULT_STRATEGY: number; - export var Z_BINARY: number; - export var Z_TEXT: number; - export var Z_ASCII: number; - export var Z_UNKNOWN: number; - export var Z_DEFLATED: number; - export var Z_NULL: number; -} - -declare module "os" { - export function tmpDir(): string; - export function hostname(): string; - export function type(): string; - export function platform(): string; - export function arch(): string; - export function release(): string; - export function uptime(): number; - export function loadavg(): number[]; - export function totalmem(): number; - export function freemem(): number; - export function cpus(): { model: string; speed: number; times: { user: number; nice: number; sys: number; idle: number; irq: number; }; }[]; - export function networkInterfaces(): any; - export var EOL: string; -} - -declare module "https" { - import tls = require("tls"); - import events = require("events"); - import http = require("http"); - - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string) => any; - } - - export interface RequestOptions { - host?: string; - hostname?: string; - port?: number; - path?: string; - method?: string; - headers?: any; - auth?: string; - agent?: any; - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - } - - export interface NodeAgent { - maxSockets: number; - sockets: any; - requests: any; - } - export var Agent: { - new (options?: RequestOptions): NodeAgent; - }; - export class Server extends tls.Server { } - export function createServer(options: ServerOptions, requestListener?: Function): Server; - export function request(options: RequestOptions, callback?: (res: events.EventEmitter) =>void ): http.ClientRequest; - export function get(options: RequestOptions, callback?: (res: events.EventEmitter) =>void ): http.ClientRequest; - export var globalAgent: NodeAgent; -} - -declare module "punycode" { - export function decode(string: string): string; - export function encode(string: string): string; - export function toUnicode(domain: string): string; - export function toASCII(domain: string): string; - export var ucs2: ucs2; - export interface ucs2 { - decode(string: string): string; - encode(codePoints: number[]): string; - } - export var version; -} - -declare module "repl" { - import stream = require("stream"); - import events = require("events"); - - export interface ReplOptions { - prompt?: string; - input?: stream.ReadableStream; - output?: stream.WritableStream; - terminal?: boolean; - eval?: Function; - useColors?: boolean; - useGlobal?: boolean; - ignoreUndefined?: boolean; - writer?: Function; - } - export function start(options: ReplOptions): events.EventEmitter; -} - -declare module "readline" { - import events = require("events"); - import stream = require("stream"); - - export class ReadLine extends events.EventEmitter { - setPrompt(prompt: string, length: number): void; - prompt(preserveCursor?: boolean): void; - question(query: string, callback: Function): void; - pause(): void; - resume(): void; - close(): void; - write(data: any, key?: any): void; - } - export interface ReadLineOptions { - input: stream.ReadableStream; - output: stream.WritableStream; - completer?: Function; - terminal?: boolean; - } - export function createInterface(options: ReadLineOptions): ReadLine; -} - -declare module "vm" { - export interface Context { } - export interface Script { - runInThisContext(): void; - runInNewContext(sandbox?: Context): void; - } - export function runInThisContext(code: string, filename?: string): void; - export function runInNewContext(code: string, sandbox?: Context, filename?: string): void; - export function runInContext(code: string, context: Context, filename?: string): void; - export function createContext(initSandbox?: Context): Context; - export function createScript(code: string, filename?: string): Script; -} - -declare module "child_process" { - import events = require("events"); - import stream = require("stream"); - - export class ChildProcess extends events.EventEmitter { - stdin: stream.WritableStream; - stdout: stream.ReadableStream; - stderr: stream.ReadableStream; - pid: number; - kill(signal?: string): void; - send(message: any, sendHandle: any): void; - disconnect(): void; - } - - export function spawn(command: string, args?: string[], options?: { - cwd?: string; - stdio?: any; - custom?: any; - env?: any; - detached?: boolean; - }): ChildProcess; - export function exec(command: string, options: { - cwd?: string; - stdio?: any; - customFds?: any; - env?: any; - encoding?: string; - timeout?: number; - maxBuffer?: number; - killSignal?: string; - }, callback: (error: Error, stdout: NodeBuffer, stderr: NodeBuffer) =>void ): ChildProcess; - export function exec(command: string, callback: (error: Error, stdout: NodeBuffer, stderr: NodeBuffer) =>void ): ChildProcess; - export function execFile(file: string, args: string[], options: { - cwd?: string; - stdio?: any; - customFds?: any; - env?: any; - encoding?: string; - timeout?: number; - maxBuffer?: string; - killSignal?: string; - }, callback: (error: Error, stdout: NodeBuffer, stderr: NodeBuffer) =>void ): ChildProcess; - export function fork(modulePath: string, args?: string[], options?: { - cwd?: string; - env?: any; - encoding?: string; - }): ChildProcess; -} - -declare module "url" { - export interface Url { - href?: string; - protocol?: string; - auth?: string; - hostname?: string; - port?: string; - host?: string; - pathname?: string; - search?: string; - query?: string; - slashes?: boolean; - hash?: string; - } - - export function parse(urlStr: string, parseQueryString? , slashesDenoteHost? ): Url; - export function format(url: Url): string; - export function resolve(from: string, to: string): string; -} - -declare module "dns" { - export function lookup(domain: string, family: number, callback: (err: Error, address: string, family: number) =>void ): string; - export function lookup(domain: string, callback: (err: Error, address: string, family: number) =>void ): string; - export function resolve(domain: string, rrtype: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolve(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolve4(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolve6(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolveMx(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolveTxt(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolveSrv(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolveNs(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function resolveCname(domain: string, callback: (err: Error, addresses: string[]) =>void ): string[]; - export function reverse(ip: string, callback: (err: Error, domains: string[]) =>void ): string[]; -} - -declare module "net" { - import stream = require("stream"); - - export class NodeSocket extends stream.ReadWriteStream { - // Extended base methods - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - - connect(port: number, host?: string, connectionListener?: Function): void; - connect(path: string, connectionListener?: Function): void; - bufferSize: number; - setEncoding(encoding?: string): void; - write(data: any, encoding?: string, callback?: Function): void; - end(data?: any, encoding?: string): void; - destroy(): void; - pause(): void; - resume(): void; - setTimeout(timeout: number, callback?: Function); void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; - address(): { port: number; family: string; address: string; }; - remoteAddress: string; - remotePort: number; - bytesRead: number; - bytesWritten: number; - } - - export var Socket: { - new (options?: { fd?: string; type?: string; allowHalfOpen?: boolean; }): NodeSocket; - }; - - export class Server extends NodeSocket { - listen(port: number, host?: string, backlog?: number, listeningListener?: Function): void; - listen(path: string, listeningListener?: Function): void; - listen(handle: any, listeningListener?: Function): void; - close(callback?: Function): void; - address(): { port: number; family: string; address: string; }; - maxConnections: number; - connections: number; - } - export function createServer(connectionListener?: (socket: NodeSocket) =>void ): Server; - export function createServer(options?: { allowHalfOpen?: boolean; }, connectionListener?: (socket: NodeSocket) =>void ): Server; - export function connect(options: { allowHalfOpen?: boolean; }, connectionListener?: Function): void; - export function connect(port: number, host?: string, connectionListener?: Function): void; - export function connect(path: string, connectionListener?: Function): void; - export function createConnection(options: { allowHalfOpen?: boolean; }, connectionListener?: Function): void; - export function createConnection(port: number, host?: string, connectionListener?: Function): void; - export function createConnection(path: string, connectionListener?: Function): void; - export function isIP(input: string): number; - export function isIPv4(input: string): boolean; - export function isIPv6(input: string): boolean; -} - -declare module "dgram" { - import events = require("events"); - - export function createSocket(type: string, callback?: Function): Socket; - - export class Socket extends events.EventEmitter { - send(buf: NodeBuffer, offset: number, length: number, port: number, address: string, callback?: Function): void; - bind(port: number, address?: string): void; - close(): void; - address: { address: string; family: string; port: number; }; - setBroadcast(flag: boolean): void; - setMulticastTTL(ttl: number): void; - setMulticastLoopback(flag: boolean): void; - addMembership(multicastAddress: string, multicastInterface?: string): void; - dropMembership(multicastAddress: string, multicastInterface?: string): void; - } -} - -declare module "fs" { - import stream = require("stream"); - - export interface Stats { - isFile(): boolean; - isDirectory(): boolean; - isBlockDevice(): boolean; - isCharacterDevice(): boolean; - isSymbolicLink(): boolean; - isFIFO(): boolean; - isSocket(): boolean; - dev: number; - ino: number; - mode: number; - nlink: number; - uid: number; - gid: number; - rdev: number; - size: number; - blksize: number; - blocks: number; - atime: Date; - mtime: Date; - ctime: Date; - } - - export interface FSWatcher { - close(): void; - } - - export class ReadStream extends stream.ReadableStream { } - export class WriteStream extends stream.WritableStream { } - - export function rename(oldPath: string, newPath: string, callback?: Function): void; - export function renameSync(oldPath: string, newPath: string): void; - export function truncate(fd: number, len: number, callback?: Function): void; - export function truncateSync(fd: number, len: number): void; - export function chown(path: string, uid: number, gid: number, callback?: Function): void; - export function chownSync(path: string, uid: number, gid: number): void; - export function fchown(fd: number, uid: number, gid: number, callback?: Function): void; - export function fchownSync(fd: number, uid: number, gid: number): void; - export function lchown(path: string, uid: number, gid: number, callback?: Function): void; - export function lchownSync(path: string, uid: number, gid: number): void; - export function chmod(path: string, mode: number, callback?: Function): void; - export function chmod(path: string, mode: string, callback?: Function): void; - export function chmodSync(path: string, mode: number): void; - export function chmodSync(path: string, mode: string): void; - export function fchmod(fd: number, mode: number, callback?: Function): void; - export function fchmod(fd: number, mode: string, callback?: Function): void; - export function fchmodSync(fd: number, mode: number): void; - export function fchmodSync(fd: number, mode: string): void; - export function lchmod(path: string, mode: string, callback?: Function): void; - export function lchmod(path: string, mode: number, callback?: Function): void; - export function lchmodSync(path: string, mode: number): void; - export function lchmodSync(path: string, mode: string): void; - export function stat(path: string, callback?: (err: Error, stats: Stats) =>any): Stats; - export function lstat(path: string, callback?: (err: Error, stats: Stats) =>any): Stats; - export function fstat(fd: number, callback?: (err: Error, stats: Stats) =>any): Stats; - export function statSync(path: string): Stats; - export function lstatSync(path: string): Stats; - export function fstatSync(fd: number): Stats; - export function link(srcpath: string, dstpath: string, callback?: Function): void; - export function linkSync(srcpath: string, dstpath: string): void; - export function symlink(srcpath: string, dstpath: string, type?: string, callback?: Function): void; - export function symlinkSync(srcpath: string, dstpath: string, type?: string): void; - export function readlink(path: string, callback?: (err: Error, linkString: string) =>any): void; - export function realpath(path: string, callback?: (err: Error, resolvedPath: string) =>any): void; - export function realpath(path: string, cache: string, callback: (err: Error, resolvedPath: string) =>any): void; - export function realpathSync(path: string, cache?: string): string; - export function unlink(path: string, callback?: Function): void; - export function unlinkSync(path: string): void; - export function rmdir(path: string, callback?: Function): void; - export function rmdirSync(path: string): void; - export function mkdir(path: string, mode?: number, callback?: Function): void; - export function mkdir(path: string, mode?: string, callback?: Function): void; - export function mkdirSync(path: string, mode?: number): void; - export function mkdirSync(path: string, mode?: string): void; - export function readdir(path: string, callback?: (err: Error, files: string[]) => void): void; - export function readdirSync(path: string): string[]; - export function close(fd: number, callback?: Function): void; - export function closeSync(fd: number): void; - export function open(path: string, flags: string, mode?: string, callback?: (err: Error, fd: number) =>any): void; - export function openSync(path: string, flags: string, mode?: string): number; - export function utimes(path: string, atime: number, mtime: number, callback?: Function): void; - export function utimesSync(path: string, atime: number, mtime: number): void; - export function futimes(fd: number, atime: number, mtime: number, callback?: Function): void; - export function futimesSync(fd: number, atime: number, mtime: number): void; - export function fsync(fd: number, callback?: Function): void; - export function fsyncSync(fd: number): void; - export function write(fd: number, buffer: NodeBuffer, offset: number, length: number, position: number, callback?: (err: Error, written: number, buffer: NodeBuffer) =>any): void; - export function writeSync(fd: number, buffer: NodeBuffer, offset: number, length: number, position: number): number; - export function read(fd: number, buffer: NodeBuffer, offset: number, length: number, position: number, callback?: (err: Error, bytesRead: number, buffer: NodeBuffer) => void): void; - export function readSync(fd: number, buffer: NodeBuffer, offset: number, length: number, position: number): number; - export function readFile(filename: string, encoding: string, callback: (err: Error, data: string) => void ): void; - export function readFile(filename: string, callback: (err: Error, data: NodeBuffer) => void ): void; - export function readFileSync(filename: string): NodeBuffer; - export function readFileSync(filename: string, encoding: string): string; - export function writeFile(filename: string, data: any, encoding?: string, callback?: Function): void; - export function writeFileSync(filename: string, data: any, encoding?: string): void; - export function appendFile(filename: string, data: any, encoding?: string, callback?: Function): void; - export function appendFileSync(filename: string, data: any, encoding?: string): void; - export function watchFile(filename: string, listener: { curr: Stats; prev: Stats; }): void; - export function watchFile(filename: string, options: { persistent?: boolean; interval?: number; }, listener: { curr: Stats; prev: Stats; }): void; - export function unwatchFile(filename: string, listener?: Stats): void; - export function watch(filename: string, options?: { persistent?: boolean; }, listener?: (event: string, filename: string) =>any): FSWatcher; - export function exists(path: string, callback?: (exists: boolean) =>void ): void; - export function existsSync(path: string): boolean; - export function createReadStream(path: string, options?: { - flags?: string; - encoding?: string; - fd?: string; - mode?: number; - bufferSize?: number; - }): ReadStream; - export function createWriteStream(path: string, options?: { - flags?: string; - encoding?: string; - string?: string; - }): WriteStream; -} - -declare module "path" { - export function normalize(p: string): string; - export function join(...paths: any[]): string; - export function resolve(from: string, to: string): string; - export function resolve(from: string, from2: string, to: string): string; - export function resolve(from: string, from2: string, from3: string, to: string): string; - export function resolve(from: string, from2: string, from3: string, from4: string, to: string): string; - export function resolve(from: string, from2: string, from3: string, from4: string, from5: string, to: string): string; - export function relative(from: string, to: string): string; - export function dirname(p: string): string; - export function basename(p: string, ext?: string): string; - export function extname(p: string): string; - export var sep: string; -} - -declare module "string_decoder" { - export interface NodeStringDecoder { - write(buffer: NodeBuffer): string; - detectIncompleteChar(buffer: NodeBuffer): number; - } - export var StringDecoder: { - new (encoding: string): NodeStringDecoder; - }; -} - -declare module "tls" { - import crypto = require("crypto"); - import net = require("net"); - import stream = require("stream"); - - export var CLIENT_RENEG_LIMIT: number; - export var CLIENT_RENEG_WINDOW: number; - - export interface TlsOptions { - pfx?: any; //string or buffer - key?: any; //string or buffer - passphrase?: string; - cert?: any; - ca?: any; //string or buffer - crl?: any; //string or string array - ciphers?: string; - honorCipherOrder?: any; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; //array or Buffer; - SNICallback?: (servername: string) => any; - } - - export interface ConnectionOptions { - host?: string; - port?: number; - socket?: net.NodeSocket; - pfx?: any; //string | Buffer - key?: any; //string | Buffer - passphrase?: string; - cert?: any; //string | Buffer - ca?: any; //Array of string | Buffer - rejectUnauthorized?: boolean; - NPNProtocols?: any; //Array of string | Buffer - servername?: string; - } - - export class Server extends net.Server { - // Extended base methods - listen(port: number, host?: string, backlog?: number, listeningListener?: Function): void; - listen(path: string, listeningListener?: Function): void; - listen(handle: any, listeningListener?: Function): void; - - listen(port: number, host?: string, callback?: Function): void; - close(): void; - address(): { port: number; family: string; address: string; }; - addContext(hostName: string, credentials: { - key: string; - cert: string; - ca: string; - }): void; - maxConnections: number; - connections: number; - } - - export class ClearTextStream extends stream.ReadWriteStream { - authorized: boolean; - authorizationError: Error; - getPeerCertificate(): any; - getCipher: { - name: string; - version: string; - }; - address: { - port: number; - family: string; - address: string; - }; - remoteAddress: string; - remotePort: number; - } - - export interface SecurePair { - encrypted: any; - cleartext: any; - } - - export function createServer(options: TlsOptions, secureConnectionListener?: (cleartextStream: ClearTextStream) =>void ): Server; - export function connect(options: TlsOptions, secureConnectionListener?: () =>void ): ClearTextStream; - export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () =>void ): ClearTextStream; - export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () =>void ): ClearTextStream; - export function createSecurePair(credentials?: crypto.Credentials, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair; -} - -declare module "crypto" { - export interface CredentialDetails { - pfx: string; - key: string; - passphrase: string; - cert: string; - ca: any; //string | string array - crl: any; //string | string array - ciphers: string; - } - export interface Credentials { context?: any; } - export function createCredentials(details: CredentialDetails): Credentials; - export function createHash(algorithm: string): Hash; - export function createHmac(algorithm: string, key: string): Hmac; - export interface Hash { - update(data: any, input_encoding?: string): void; - digest(encoding?: string): string; - } - export interface Hmac { - update(data: any): void; - digest(encoding?: string): void; - } - export function createCipher(algorithm: string, password: any): Cipher; - export function createCipheriv(algorithm: string, key: any, iv: any): Cipher; - export interface Cipher { - update(data: any, input_encoding?: string, output_encoding?: string): string; - final(output_encoding?: string): string; - setAutoPadding(auto_padding: boolean): void; - createDecipher(algorithm: string, password: any): Decipher; - createDecipheriv(algorithm: string, key: any, iv: any): Decipher; - } - export interface Decipher { - update(data: any, input_encoding?: string, output_encoding?: string): void; - final(output_encoding?: string): string; - setAutoPadding(auto_padding: boolean): void; - } - export function createSign(algorithm: string): Signer; - export interface Signer { - update(data: any): void; - sign(private_key: string, output_format: string): string; - } - export function createVerify(algorith: string): Verify; - export interface Verify { - update(data: any): void; - verify(object: string, signature: string, signature_format?: string): boolean; - } - export function createDiffieHellman(prime_length: number): DiffieHellman; - export function createDiffieHellman(prime: number, encoding?: string): DiffieHellman; - export interface DiffieHellman { - generateKeys(encoding?: string): string; - computeSecret(other_public_key: string, input_encoding?: string, output_encoding?: string): string; - getPrime(encoding?: string): string; - getGenerator(encoding: string): string; - getPublicKey(encoding?: string): string; - getPrivateKey(encoding?: string): string; - setPublicKey(public_key: string, encoding?: string): void; - setPrivateKey(public_key: string, encoding?: string): void; - } - export function getDiffieHellman(group_name: string): DiffieHellman; - export function pbkdf2(password: string, salt: string, iterations: number, keylen: number, callback: (err: Error, derivedKey: string) => any): void; - export function randomBytes(size: number, callback?: (err: Error, buf: NodeBuffer) =>void ); -} - -declare module "stream" { - import events = require("events"); - - export interface WriteStream { - writable: boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - end(): void; - end(str: string, enconding: string): void; - end(buffer: NodeBuffer): void; - destroy(): void; - destroySoon(): void; - } - - export class WritableStream extends events.EventEmitter implements WriteStream { - writable: boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - end(): void; - end(str: string, enconding: string): void; - end(buffer: NodeBuffer): void; - destroy(): void; - destroySoon(): void; - } - - export class ReadableStream extends events.EventEmitter { - readable: boolean; - setEncoding(encoding: string): void; - pause(): void; - resume(): void; - destroy(): void; - pipe(destination: WriteStream, options?: { end?: boolean; }): void; - } - - export class ReadWriteStream extends events.EventEmitter implements WriteStream { - readable: boolean; - setEncoding(encoding: string): void; - pause(): void; - resume(): void; - pipe(destination: WriteStream, options?: { end?: boolean; }): void; - - writable: boolean; - write(str: string, encoding?: string, fd?: string): boolean; - write(buffer: NodeBuffer): boolean; - end(): void; - end(str: string, enconding: string): void; - end(buffer: NodeBuffer): void; - destroy(): void; - destroySoon(): void; - } -} - -declare module "util" { - export function format(format: any, ...param: any[]): string; - export function debug(string: string): void; - export function error(...param: any[]): void; - export function puts(...param: any[]): void; - export function print(...param: any[]): void; - export function log(string: string): void; - export function inspect(object: any, showHidden?: boolean, depth?: number, color?: boolean): void; - export function isArray(object: any): boolean; - export function isRegExp(object: any): boolean; - export function isDate(object: any): boolean; - export function isError(object: any): boolean; - export function inherits(constructor: any, superConstructor: any): void; -} - -declare module "assert" { - export function fail(actual: any, expected: any, message: string, operator: string): void; - export function assert(value: any, message: string): void; - export function ok(value: any, message?: string): void; - export function equal(actual: any, expected: any, message?: string): void; - export function notEqual(actual: any, expected: any, message?: string): void; - export function deepEqual(actual: any, expected: any, message?: string): void; - export function notDeepEqual(acutal: any, expected: any, message?: string): void; - export function strictEqual(actual: any, expected: any, message?: string): void; - export function notStrictEqual(actual: any, expected: any, message?: string): void; - export function throws(block: any, error?: any, messsage?: string): void; - export function doesNotThrow(block: any, error?: any, messsage?: string): void; - export function ifError(value: any): void; -} - -declare module "tty" { - import net = require("net"); - - export function isatty(fd: string): boolean; - export class ReadStream extends net.NodeSocket { - isRaw: boolean; - setRawMode(mode: boolean): void; - } - export class WriteStream extends net.NodeSocket { - columns: number; - rows: number; - } -} - -declare module "domain" { - import events = require("events"); - - export class Domain extends events.EventEmitter { } - - export function create(): Domain; - export function run(fn: Function): void; - export function add(emitter: events.EventEmitter): void; - export function remove(emitter: events.EventEmitter): void; - export function bind(cb: (er: Error, data: any) =>any): any; - export function intercept(cb: (data: any) => any): any; - export function dispose(): void; -} \ No newline at end of file diff --git a/node/package.json b/node/package.json new file mode 100644 index 0000000..8438908 --- /dev/null +++ b/node/package.json @@ -0,0 +1,32 @@ +{ + "name": "node", + "version": "1.0.0", + "description": "Node examples using TypeScript", + "scripts": { + "build": "tsc", + "lint": "tslint --config tslint.json --project ." + }, + "contributors": [ + { + "name": "Mohamed Hegazy", + "url": "https://github.com/mhegazy" + }, + { + "name": "Lucas de Almeida Carotta", + "url": "https://github.com/Fazendaaa" + } + ], + "devDependencies": { + "@types/node": "^10.11.4", + "ts-node": "^7.0.1", + "tslint": "^5.11.0", + "tslint-microsoft-contrib": "^5.2.1", + "typescript": "^3.1.1" + }, + "husky": { + "hooks": { + "pre-push": "npm run lint" + } + }, + "dependencies": {} +} diff --git a/node/src/APIClient.ts b/node/src/APIClient.ts new file mode 100644 index 0000000..84a8ef7 --- /dev/null +++ b/node/src/APIClient.ts @@ -0,0 +1,39 @@ +/** + * API client example. + */ +import { IncomingMessage, request } from 'http'; + +const handleResponse = (resolve: (data: string) => void, reject: (data: Error) => void, response: IncomingMessage): void => { + let chunk = ''; + const { statusCode } = response; + + if (statusCode !== 200) { + reject(new Error('Server error')); + } + + response.setEncoding('utf8') + .on('error', reject) + .on('uncaughtException', reject) + .on('data', (data: string) => chunk += data) + .on('end', () => { resolve(chunk); }); +}; + +const ping = async (): Promise => new Promise((resolve: (data: string) => void, reject: (data: Error) => void) => { + const post = request({ + path: '/', + port: 8080, + method: 'GET', + hostname: 'localhost', + headers: { + 'Content-Type': 'text/plain' + } + }); + const curriedHandleResponse = ((response: IncomingMessage) => { handleResponse(resolve, reject, response); }); + + post.write('ping'); + post.on('response', curriedHandleResponse); + post.on('error', () => { reject(new Error('Request error')); }); + post.end(); +}); + +ping().then(console.log).catch(console.error); diff --git a/node/src/APIServer.ts b/node/src/APIServer.ts new file mode 100644 index 0000000..38fe4d3 --- /dev/null +++ b/node/src/APIServer.ts @@ -0,0 +1,21 @@ +/** + * API example server. + */ +import { createServer, IncomingMessage, ServerResponse } from 'http'; + +const server = createServer((sent: IncomingMessage, res: ServerResponse) => { + const body = []; + + sent.on('data', (data: Buffer) => body.push(data)); + sent.on('error', (err) => { console.error(err); }); + sent.on('end', () => { + const message = Buffer.concat(body).toString(); + + console.log(message); + }); + + res.writeHead(200, { 'Content-Type': 'text/plain' }); + res.end('pong'); +}); + +server.listen(8080, 'localhost', () => { console.log('Server running at https://localhost:8080/'); }); diff --git a/node/src/HttpServer.ts b/node/src/HttpServer.ts new file mode 100644 index 0000000..9f55352 --- /dev/null +++ b/node/src/HttpServer.ts @@ -0,0 +1,14 @@ +/** + * HTTPS server example. + */ +import { createServer, IncomingMessage, ServerResponse } from 'http'; + +const host = 'localhost'; +const port = 1337; + +const server = createServer((_: IncomingMessage, res: ServerResponse) => { + res.writeHead(200, { 'Content-Type': 'text/plain' }); + res.end('Hello World\n'); +}); + +server.listen(port, host, () => { console.log(`Server running at ${host}:${port}`); }); diff --git a/node/src/TcpServer.ts b/node/src/TcpServer.ts new file mode 100644 index 0000000..d72bcfa --- /dev/null +++ b/node/src/TcpServer.ts @@ -0,0 +1,14 @@ +/** + * TCP server example. + */ +import { createServer, Socket } from 'net'; + +const host = 'localhost'; +const port = 1337; + +const server = createServer((socket: Socket) => { + socket.write('Echo server\r\n'); + socket.pipe(socket); +}); + +server.listen(port, host, () => { console.log(`Server running at ${host}:${port}`); }); diff --git a/node/src/Wikipedia.ts b/node/src/Wikipedia.ts new file mode 100644 index 0000000..bbd76a9 --- /dev/null +++ b/node/src/Wikipedia.ts @@ -0,0 +1,41 @@ +/** + * Searches Wikipedia database + */ +import { IncomingMessage } from 'http'; +import { request } from 'https'; + +const response = (res: IncomingMessage) => { + const { statusCode } = res; + let chunk = ''; + + if (statusCode !== 200) { + console.error(new Error(`[Request status ${statusCode}] Not accepted`)); + } else { + res.on('error', console.error) + .on('uncaughtException', console.error) + .on('data', (data: string) => chunk += data) + .on('end', () => { + const result = JSON.parse(chunk); + + console.log(result); + }); + } +}; + +const search = 'microsoft'; +const query = `action=query&format=json&list=search&srsearch=${encodeURI(search)}`; +const path = `/w/api.php?${query}`; +const options = { + path, + method: 'GET', + hostname: 'en.wikipedia.org', + headers: { + Accept: 'application/json', + 'Content-Type': 'text/html' + } +}; +const wikipedia = request(options); + +wikipedia.on('error', console.error) + .on('response', response) + .end(); diff --git a/node/src/WordCounter.ts b/node/src/WordCounter.ts new file mode 100644 index 0000000..a49dfa2 --- /dev/null +++ b/node/src/WordCounter.ts @@ -0,0 +1,13 @@ +/** + * Reads file then shows how many matching occurrences of a word is found + */ +import { readFileSync } from 'fs'; +import { join } from 'path'; + +const path = join(__dirname, '../lorem.txt'); +const ipsum = readFileSync(path, { encoding: 'utf8' }); +const word = 'ut'; +const re = new RegExp(word, 'gm'); +const matching = ipsum.match(re); + +console.log(`Number of occurrences of the \"${word}\" word is: ${matching.length}`); diff --git a/node/tsconfig.json b/node/tsconfig.json index f955121..f7fc400 100644 --- a/node/tsconfig.json +++ b/node/tsconfig.json @@ -1,6 +1,62 @@ { - "compilerOptions": { - "module": "commonjs", - "sourceMap": true - } -} \ No newline at end of file + "compilerOptions": { + /* Basic Options */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + "strictNullChecks": true, /* Enable strict null checks. */ + "strictFunctionTypes": true, /* Enable strict checking of function types. */ + "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + "noUnusedLocals": true, /* Report errors on unused locals. */ + "noUnusedParameters": true, /* Report errors on unused parameters. */ + "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + "baseUrl": "./src", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + }, + "exclude": [ + "./index.ts" + ] +} diff --git a/node/tslint.json b/node/tslint.json new file mode 100644 index 0000000..39a8b28 --- /dev/null +++ b/node/tslint.json @@ -0,0 +1,12 @@ +{ + "defaultSeverity": "error", + "extends": [ + "tslint-microsoft-contrib" + ], + "jsRules": {}, + "rules": { + "typedef": false, + "no-console": false + }, + "rulesDirectory": [] +} diff --git a/raytracer/raytracer.ts b/raytracer/raytracer.ts index 450d8a5..6b15fc7 100644 --- a/raytracer/raytracer.ts +++ b/raytracer/raytracer.ts @@ -244,7 +244,7 @@ class RayTracer { var color = this.traceRay({ start: scene.camera.pos, dir: getPoint(x, y, scene.camera) }, scene, 0); var c = Color.toDrawingColor(color); ctx.fillStyle = "rgb(" + String(c.r) + ", " + String(c.g) + ", " + String(c.b) + ")"; - ctx.fillRect(x, y, x + 1, y + 1); + ctx.fillRect(x, y, 1, 1); } } } diff --git a/react-flux-babel-karma/gulp/webpack.js b/react-flux-babel-karma/gulp/webpack.js index f3cff9c..2ecbf42 100644 --- a/react-flux-babel-karma/gulp/webpack.js +++ b/react-flux-babel-karma/gulp/webpack.js @@ -10,7 +10,7 @@ var packageJson = require('../package.json'); function buildProduction(done) { // modify some webpack config options - var myProdConfig = Object.create(webpackConfig); + var myProdConfig = webpackConfig; myProdConfig.output.filename = '[name].[hash].js'; myProdConfig.plugins = myProdConfig.plugins.concat( @@ -20,8 +20,11 @@ function buildProduction(done) { } }), new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor.[hash].js' }), - new webpack.optimize.DedupePlugin(), - new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: true + } + }), failPlugin ); @@ -38,9 +41,8 @@ function buildProduction(done) { function createDevCompiler() { // modify some webpack config options - var myDevConfig = Object.create(webpackConfig); + var myDevConfig = webpackConfig; myDevConfig.devtool = 'inline-source-map'; - myDevConfig.debug = true; myDevConfig.plugins = myDevConfig.plugins.concat( new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor.js' }), @@ -73,13 +75,13 @@ function watch() { }, function (err, stats) { if (err) { if (!firstBuildDone) { - firstBuildDone = true; + firstBuildDone = true; reject(err); } throw new gutil.PluginError('webpack:build-dev', err); } else { if (!firstBuildDone) { - firstBuildDone = true; + firstBuildDone = true; resolve('webpack built'); } } @@ -95,4 +97,4 @@ function watch() { module.exports = { build: function () { return build(); }, watch: function () { return watch(); } -}; \ No newline at end of file +}; diff --git a/react-flux-babel-karma/gulpFile.js b/react-flux-babel-karma/gulpFile.js index b7b3abe..0302283 100644 --- a/react-flux-babel-karma/gulpFile.js +++ b/react-flux-babel-karma/gulpFile.js @@ -16,15 +16,11 @@ gulp.task('delete-dist', function (done) { clean.run(done); }); -gulp.task('build-process.env.NODE_ENV', function () { - process.env.NODE_ENV = 'production'; -}); - -gulp.task('build-js', ['delete-dist', 'build-process.env.NODE_ENV'], function(done) { +gulp.task('build-js', ['delete-dist'], function(done) { webpack.build().then(function() { done(); }); }); -gulp.task('build-other', ['delete-dist', 'build-process.env.NODE_ENV'], function() { +gulp.task('build-other', ['delete-dist'], function() { staticFiles.build(); }); diff --git a/react-flux-babel-karma/karma.conf.js b/react-flux-babel-karma/karma.conf.js index 7257992..e43e261 100644 --- a/react-flux-babel-karma/karma.conf.js +++ b/react-flux-babel-karma/karma.conf.js @@ -26,7 +26,6 @@ module.exports = function(config) { webpack: { devtool: 'inline-source-map', - debug: true, module: webpackConfig.module, resolve: webpackConfig.resolve }, diff --git a/react-flux-babel-karma/package.json b/react-flux-babel-karma/package.json index 99168a7..ad2ce3a 100644 --- a/react-flux-babel-karma/package.json +++ b/react-flux-babel-karma/package.json @@ -1,5 +1,5 @@ { - "name": "es6-babel-react-flux-karma", + "name": "react-flux-babel-karma", "version": "1.0.0", "description": "ES6 + TypeScript + Babel + React + Karma: The Secret Recipe", "main": "index.js", @@ -14,17 +14,18 @@ "url": "git+https://github.com/microsoft/typescriptsamples.git" }, "keywords": [ - "React", - "Flux", - "ES2016", - "typescript" + "react", + "flux", + "es2016", + "typescript", + "webpack" ], "author": "John Reilly", "license": "MIT", "bugs": { "url": "https://github.com/microsoft/typescriptsamples/issues" }, - "homepage": "https://github.com/Microsoft/TypeScriptSamples/tree/master/es6-babel-react-flux-karma#readme", + "homepage": "https://github.com/Microsoft/TypeScriptSamples/tree/master/react-flux-babel-karma#readme", "devDependencies": { "@types/fbemitter": "^2.0.32", "@types/flux": "0.0.32", @@ -57,18 +58,17 @@ "gulp-util": "^3.0.6", "jasmine-core": "^2.3.4", "karma": "^1.2.0", - "karma-coverage": "^1.0.0", "karma-jasmine": "^1.0.0", "karma-junit-reporter": "^1.0.0", "karma-mocha-reporter": "^2.0.0", "karma-notify-reporter": "^1.0.0", "karma-phantomjs-launcher": "^1.0.0", "karma-sourcemap-loader": "^0.3.6", - "karma-webpack": "^1.7.0", + "karma-webpack": "^2.0.2", "phantomjs-prebuilt": "^2.1.4", - "ts-loader": "^1.3.1", + "ts-loader": "^2.0.1", "typescript": "^2.1.4", - "webpack": "^1.12.2", + "webpack": "^2.2.1", "webpack-fail-plugin": "^1.0.4", "webpack-notifier": "^1.2.1" }, diff --git a/react-flux-babel-karma/webpack.config.js b/react-flux-babel-karma/webpack.config.js index 26a51cc..70f8201 100644 --- a/react-flux-babel-karma/webpack.config.js +++ b/react-flux-babel-karma/webpack.config.js @@ -3,6 +3,20 @@ var path = require('path'); + +var babelOptions = { + "presets": [ + "react", + [ + "es2015", + { + "modules": false + } + ], + "es2016" + ] +}; + module.exports = { cache: true, entry: { @@ -10,8 +24,10 @@ module.exports = { vendor: [ 'babel-polyfill', 'events', + 'fbemitter', 'flux', - 'react' + 'react', + 'react-dom' ] }, output: { @@ -20,23 +36,32 @@ module.exports = { chunkFilename: '[chunkhash].js' }, module: { - loaders: [{ + rules: [{ test: /\.ts(x?)$/, exclude: /node_modules/, - loader: 'babel-loader?presets[]=es2016&presets[]=es2015&presets[]=react!ts-loader' + use: [ + { + loader: 'babel-loader', + options: babelOptions + }, + { + loader: 'ts-loader' + } + ] }, { test: /\.js$/, exclude: /node_modules/, - loader: 'babel', - query: { - presets: ['es2016', 'es2015', 'react'] - } + use: [ + { + loader: 'babel-loader', + options: babelOptions + } + ] }] }, plugins: [ ], resolve: { - // Add `.ts` and `.tsx` as a resolvable extension. - extensions: ['', '.ts', '.tsx', '.js'] + extensions: ['.ts', '.tsx', '.js'] }, -}; +}; \ No newline at end of file diff --git a/todomvc/.gitignore b/todomvc/.gitignore new file mode 100644 index 0000000..38f2474 --- /dev/null +++ b/todomvc/.gitignore @@ -0,0 +1,2 @@ +js/*.js +js/*.js.map diff --git a/todomvc/README.md b/todomvc/README.md index 5210584..969ea93 100644 --- a/todomvc/README.md +++ b/todomvc/README.md @@ -11,8 +11,8 @@ TypeScript integration points are highlighted: ## Running ``` -tsc --sourcemap js\todos.ts -start index.html +npm install +npm start ``` ## Caveats diff --git a/todomvc/package.json b/todomvc/package.json new file mode 100644 index 0000000..f16a933 --- /dev/null +++ b/todomvc/package.json @@ -0,0 +1,18 @@ +{ + "name": "typescript-todomvc", + "version": "1.0.0", + "description": "TodoMVC/TypeScript demo", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/TypeScriptSamples.git" + }, + "dependencies": { + "http-server": "^0.11.1" + }, + "devDependencies": { + "typescript": "^3.0.0" + }, + "scripts": { + "start": "tsc && http-server -o" + } +}