From a97d7bef9a2c1b0dd5f1f599726212eb2ec22adb Mon Sep 17 00:00:00 2001 From: ibrahim-islam Date: Tue, 21 Feb 2017 16:53:09 +0600 Subject: [PATCH 01/18] update jquery sample --- jquery/README.md | 4 +- jquery/jquery.d.ts | 703 ------------------------------------------- jquery/package.json | 18 ++ jquery/parallax.html | 13 +- jquery/parallax.ts | 4 +- 5 files changed, 24 insertions(+), 718 deletions(-) delete mode 100644 jquery/jquery.d.ts create mode 100644 jquery/package.json diff --git a/jquery/README.md b/jquery/README.md index 6739dba..8e695e4 100644 --- a/jquery/README.md +++ b/jquery/README.md @@ -10,6 +10,6 @@ For best results, scroll the window using the scrollbar. ## Running ``` -tsc --sourcemap --target ES5 parallax.ts -start parallax.html +npm run start +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..98fc0c3 --- /dev/null +++ b/jquery/package.json @@ -0,0 +1,18 @@ +{ + "name": "jquery", + "version": "1.0.0", + "description": "jQuery Typescript Demo", + "scripts":{ + "start": "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 From 6078824dbceef6c8e2d1af691a34028ef32e616f Mon Sep 17 00:00:00 2001 From: John Reilly Date: Thu, 2 Mar 2017 06:28:42 +0000 Subject: [PATCH 02/18] updated react-flux-babel-karma to webpack 2 --- react-flux-babel-karma/gulp/webpack.js | 18 +++++----- react-flux-babel-karma/gulpFile.js | 8 ++--- react-flux-babel-karma/karma.conf.js | 1 - react-flux-babel-karma/package.json | 20 +++++------ react-flux-babel-karma/webpack.config.js | 45 ++++++++++++++++++------ 5 files changed, 57 insertions(+), 35 deletions(-) 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 From 117f827e9bb51f6fc3305234a2dea107e8844494 Mon Sep 17 00:00:00 2001 From: Ibrahim Islam Date: Mon, 24 Apr 2017 17:28:40 +0600 Subject: [PATCH 03/18] updates readme for running instructions --- jquery/README.md | 3 ++- jquery/package.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jquery/README.md b/jquery/README.md index 8e695e4..2ffaefc 100644 --- a/jquery/README.md +++ b/jquery/README.md @@ -10,6 +10,7 @@ For best results, scroll the window using the scrollbar. ## Running ``` -npm run start +npm install +tsc open parallax.html ``` diff --git a/jquery/package.json b/jquery/package.json index 98fc0c3..8fe52aa 100644 --- a/jquery/package.json +++ b/jquery/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "jQuery Typescript Demo", "scripts":{ - "start": "tsc" + "tsc": "tsc" }, "dependencies": { "jquery": "^3.1.1" From d501977f1315e15b3e01e33851257b29d91d629f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 22 Aug 2017 14:09:01 -0700 Subject: [PATCH 04/18] Update jsx sample with current react version, modern types --- jsx/README.md | 4 ++-- jsx/package.json | 10 ++++++---- jsx/require-config.js | 5 +++-- jsx/src/app.tsx | 3 ++- jsx/tsd.json | 15 --------------- 5 files changed, 13 insertions(+), 24 deletions(-) delete mode 100644 jsx/tsd.json 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.json b/jsx/package.json index 71552b9..6291903 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,14 @@ "devDependencies": { "typescript": "latest", "http-server": "0.8.0", - "tsd": "latest" + "@types/jquery": "^2", + "@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..65c44c2 100644 --- a/jsx/src/app.tsx +++ b/jsx/src/app.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import * as ReactDOM from 'react-dom'; import * as $ from 'jquery'; import {Greeter as Greetifier, GreeterProps as GreeterProps} from 'greeter'; @@ -16,6 +17,6 @@ $(() => { 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" - } - } -} From 1a9d4f9fdb4d45d31b8dcba2766d9d0057480017 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 22 Jan 2018 16:17:39 -0800 Subject: [PATCH 05/18] Update jquery --- jsx/package-lock.json | 13 +++++++++++++ jsx/package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 jsx/package-lock.json 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 6291903..44629ce 100644 --- a/jsx/package.json +++ b/jsx/package.json @@ -33,7 +33,7 @@ "@types/react": "^15" }, "dependencies": { - "jquery": "^2.1.4", + "jquery": "^3.3.1", "react": "^15.6.1", "react-dom": "^15.6.1", "requirejs": "^2.1.20" From f0c91f6b3496d77099cab1d6c713583e1d96509a Mon Sep 17 00:00:00 2001 From: Gabriel Sroka Date: Sat, 11 Aug 2018 12:31:20 -0700 Subject: [PATCH 06/18] Update raytracer.ts `ctx.fillRect()` last 2 args should be width and height (not x2, y2) https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillRect will this fix https://www.typescriptlang.org/play/index.html too? --- raytracer/raytracer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } } } From 678b3d7cc11068e76c51d8c29cfdf75085a03ac3 Mon Sep 17 00:00:00 2001 From: Fazendaaa Date: Fri, 5 Oct 2018 23:35:47 -0300 Subject: [PATCH 07/18] First commit. --- node/.gitignore | 3 + node/HttpServer.ts | 9 - node/README.md | 57 ++- node/TcpServer.ts | 9 - node/index.ts | 18 + node/node.d.ts | 1079 --------------------------------------- node/package.json | 34 ++ node/src/APIClient.ts | 39 ++ node/src/APIServer.ts | 21 + node/src/HttpsServer.ts | 12 + node/src/TcpServer.ts | 11 + node/tsconfig.json | 66 ++- node/tslint.json | 12 + 13 files changed, 258 insertions(+), 1112 deletions(-) create mode 100644 node/.gitignore delete mode 100644 node/HttpServer.ts delete mode 100644 node/TcpServer.ts create mode 100644 node/index.ts delete mode 100644 node/node.d.ts create mode 100644 node/package.json create mode 100644 node/src/APIClient.ts create mode 100644 node/src/APIServer.ts create mode 100644 node/src/HttpsServer.ts create mode 100644 node/src/TcpServer.ts create mode 100644 node/tslint.json 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..aee5513 100644 --- a/node/README.md +++ b/node/README.md @@ -1,18 +1,55 @@ # 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: +```bash +npm run example ts example-name +``` + +To run the HTTPS server example, just: +```bash +npm run example ts HttpsServer +``` + +Under the hood, 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 +``` -## Running -For HttpServer +And then running the compiled JavaScript (JS) example file with: +```bash +npm run example js example-name ``` -tsc --sourcemap --module commonjs HttpServer.ts -node HttpServer.js + +Or even trough node directly: +```bash +node ./dist/example-name.js ``` -For TcpServer +## Examples +* [TcpServer](./src/TcpServer.ts) - a simple TCP server +* [HttpsServer](./src/HttpsServer.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" + +**note**: due to HTTP/HTTPS distinct way of handle localhost requests, in the API example, HTTP is used instead of HTTPS because is a more simple 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 :) + +## Tests +Tests are a resourceful tool to add it, they serve as examples and also as guarantee that your code is doing what needs to be bone. [TDD](https://en.wikipedia.org/wiki/Test-driven_development) is a great example of this. +```bash +npm test ``` -tsc --sourcemap --module commonjs TcpServer.ts -node TcpServer.js -``` \ No newline at end of file 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/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..b2b2d97 --- /dev/null +++ b/node/package.json @@ -0,0 +1,34 @@ +{ + "name": "node", + "version": "1.0.0", + "description": "Node examples using TypeScript", + "scripts": { + "build": "tsc", + "example": "ts-node ./index.ts", + "lint": "tslint --config tslint.json --project .", + "test": "jest --config jest.config.json --ci --runInBand --detectOpenHandles --forceExit --no-cache" + }, + "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..d1c9489 --- /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 = (): 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..e2a1dc0 --- /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.table('Server running at https://localhost:8080/')); diff --git a/node/src/HttpsServer.ts b/node/src/HttpsServer.ts new file mode 100644 index 0000000..cb7b044 --- /dev/null +++ b/node/src/HttpsServer.ts @@ -0,0 +1,12 @@ +/** + * HTTPS server example. + */ +import { IncomingMessage, ServerResponse } from 'http'; +import { createServer } from 'https'; + +const server = createServer({}, (_: IncomingMessage, res: ServerResponse) => { + res.writeHead(200, { 'Content-Type': 'text/plain' }); + res.end('Hello World\n'); +}); + +server.listen(1337, '127.0.0.1', () => console.log('Server running at http://127.0.0.1:1337/')); diff --git a/node/src/TcpServer.ts b/node/src/TcpServer.ts new file mode 100644 index 0000000..0d71ceb --- /dev/null +++ b/node/src/TcpServer.ts @@ -0,0 +1,11 @@ +/** + * TCP server example. + */ +import { createServer, Socket } from 'net'; + +const server = createServer((socket: Socket) => { + socket.write('Echo server\r\n'); + socket.pipe(socket); +}); + +server.listen(1337, '127.0.0.1', () => console.log('Server running at http://127.0.0.1:1337/')); 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": [] +} From ad4118fe41ddbe667ea53c05177b8a0252828ca7 Mon Sep 17 00:00:00 2001 From: Ryan Braganza Date: Sat, 13 Oct 2018 14:30:47 +1100 Subject: [PATCH 08/18] Add a package.json file to run the TodoMVC example fix Microsoft/TypeScriptSamples/#146 --- todomvc/.gitignore | 2 ++ todomvc/README.md | 4 ++-- todomvc/package.json | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 todomvc/.gitignore create mode 100644 todomvc/package.json 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" + } +} From 3f5ab1a1f1517c04babbba6d1cf1e6a16249ca71 Mon Sep 17 00:00:00 2001 From: Fazendaaa Date: Tue, 23 Oct 2018 00:06:38 -0300 Subject: [PATCH 09/18] Adding new examples ideas. --- node/README.md | 9 ++++++--- node/src/APIClient.ts | 8 ++++---- node/src/APIServer.ts | 4 ++-- node/src/HttpServer.ts | 14 ++++++++++++++ node/src/HttpsServer.ts | 12 ------------ node/src/TcpServer.ts | 5 ++++- node/src/WebScrapping.ts | 0 node/src/Wikipedia.ts | 0 node/src/WordCounter.ts | 0 9 files changed, 30 insertions(+), 22 deletions(-) create mode 100644 node/src/HttpServer.ts delete mode 100644 node/src/HttpsServer.ts create mode 100644 node/src/WebScrapping.ts create mode 100644 node/src/Wikipedia.ts create mode 100644 node/src/WordCounter.ts diff --git a/node/README.md b/node/README.md index aee5513..9c19ef7 100644 --- a/node/README.md +++ b/node/README.md @@ -16,7 +16,7 @@ npm run example ts example-name To run the HTTPS server example, just: ```bash -npm run example ts HttpsServer +npm run example ts HttpServer ``` Under the hood, 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: @@ -36,11 +36,14 @@ node ./dist/example-name.js ## Examples * [TcpServer](./src/TcpServer.ts) - a simple TCP server -* [HttpsServer](./src/HttpsServer.ts) - a simple HTTPS 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 +* [Web Scrapping](./src/WebScrapping.ts) - make a web scrapping in the [webscraper.io](https://www.webscraper.io/test-sites/e-commerce/static), pagination included -**note**: due to HTTP/HTTPS distinct way of handle localhost requests, in the API example, HTTP is used instead of HTTPS because is a more simple way to set it up. +**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. diff --git a/node/src/APIClient.ts b/node/src/APIClient.ts index d1c9489..84a8ef7 100644 --- a/node/src/APIClient.ts +++ b/node/src/APIClient.ts @@ -15,10 +15,10 @@ const handleResponse = (resolve: (data: string) => void, reject: (data: Error) = .on('error', reject) .on('uncaughtException', reject) .on('data', (data: string) => chunk += data) - .on('end', () => resolve(chunk)); + .on('end', () => { resolve(chunk); }); }; -const ping = (): Promise => new Promise((resolve: (data: string) => void, reject: (data: Error) => void) => { +const ping = async (): Promise => new Promise((resolve: (data: string) => void, reject: (data: Error) => void) => { const post = request({ path: '/', port: 8080, @@ -28,11 +28,11 @@ const ping = (): Promise => new Promise((resolve: (data: string) => void 'Content-Type': 'text/plain' } }); - const curriedHandleResponse = ((response: IncomingMessage) => handleResponse(resolve, reject, response)); + const curriedHandleResponse = ((response: IncomingMessage) => { handleResponse(resolve, reject, response); }); post.write('ping'); post.on('response', curriedHandleResponse); - post.on('error', () => reject(new Error('Request error'))); + post.on('error', () => { reject(new Error('Request error')); }); post.end(); }); diff --git a/node/src/APIServer.ts b/node/src/APIServer.ts index e2a1dc0..38fe4d3 100644 --- a/node/src/APIServer.ts +++ b/node/src/APIServer.ts @@ -7,7 +7,7 @@ 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('error', (err) => { console.error(err); }); sent.on('end', () => { const message = Buffer.concat(body).toString(); @@ -18,4 +18,4 @@ const server = createServer((sent: IncomingMessage, res: ServerResponse) => { res.end('pong'); }); -server.listen(8080, 'localhost', () => console.table('Server running at https://localhost:8080/')); +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/HttpsServer.ts b/node/src/HttpsServer.ts deleted file mode 100644 index cb7b044..0000000 --- a/node/src/HttpsServer.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * HTTPS server example. - */ -import { IncomingMessage, ServerResponse } from 'http'; -import { createServer } from 'https'; - -const server = createServer({}, (_: IncomingMessage, res: ServerResponse) => { - res.writeHead(200, { 'Content-Type': 'text/plain' }); - res.end('Hello World\n'); -}); - -server.listen(1337, '127.0.0.1', () => console.log('Server running at http://127.0.0.1:1337/')); diff --git a/node/src/TcpServer.ts b/node/src/TcpServer.ts index 0d71ceb..d72bcfa 100644 --- a/node/src/TcpServer.ts +++ b/node/src/TcpServer.ts @@ -3,9 +3,12 @@ */ 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(1337, '127.0.0.1', () => console.log('Server running at http://127.0.0.1:1337/')); +server.listen(port, host, () => { console.log(`Server running at ${host}:${port}`); }); diff --git a/node/src/WebScrapping.ts b/node/src/WebScrapping.ts new file mode 100644 index 0000000..e69de29 diff --git a/node/src/Wikipedia.ts b/node/src/Wikipedia.ts new file mode 100644 index 0000000..e69de29 diff --git a/node/src/WordCounter.ts b/node/src/WordCounter.ts new file mode 100644 index 0000000..e69de29 From 74bfd9e6650df0c260c5b5e4718fc0a212254368 Mon Sep 17 00:00:00 2001 From: Fazendaaa Date: Tue, 23 Oct 2018 11:48:15 -0300 Subject: [PATCH 10/18] Adding Wikipedia and Word Counter. --- node/README.md | 19 ++++--------------- node/lorem.txt | 1 + node/package.json | 4 +--- node/src/Wikipedia.ts | 41 +++++++++++++++++++++++++++++++++++++++++ node/src/WordCounter.ts | 13 +++++++++++++ 5 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 node/lorem.txt diff --git a/node/README.md b/node/README.md index 9c19ef7..afee801 100644 --- a/node/README.md +++ b/node/README.md @@ -9,28 +9,23 @@ First of all, install all dependencies with: npm install ``` -Then, you can run each of the listed [examples](#examples) with the following command: +Then, you can run each of the listed [examples](#examples) with the following command from the this project root folder: ```bash -npm run example ts example-name +ts-node ./examples/example-name.ts ``` To run the HTTPS server example, just: ```bash -npm run example ts HttpServer +ts-node ./examples/HttpServer.ts ``` -Under the hood, 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: +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 ``` And then running the compiled JavaScript (JS) example file with: ```bash -npm run example js example-name -``` - -Or even trough node directly: -```bash node ./dist/example-name.js ``` @@ -50,9 +45,3 @@ A modified version of the [Microsoft Linter Standards](https://github.com/Micros ## 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 :) - -## Tests -Tests are a resourceful tool to add it, they serve as examples and also as guarantee that your code is doing what needs to be bone. [TDD](https://en.wikipedia.org/wiki/Test-driven_development) is a great example of this. -```bash -npm test -``` 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/package.json b/node/package.json index b2b2d97..8438908 100644 --- a/node/package.json +++ b/node/package.json @@ -4,9 +4,7 @@ "description": "Node examples using TypeScript", "scripts": { "build": "tsc", - "example": "ts-node ./index.ts", - "lint": "tslint --config tslint.json --project .", - "test": "jest --config jest.config.json --ci --runInBand --detectOpenHandles --forceExit --no-cache" + "lint": "tslint --config tslint.json --project ." }, "contributors": [ { diff --git a/node/src/Wikipedia.ts b/node/src/Wikipedia.ts index e69de29..bbd76a9 100644 --- a/node/src/Wikipedia.ts +++ 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 index e69de29..a49dfa2 100644 --- a/node/src/WordCounter.ts +++ 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}`); From 1f8ccfe2b8a9176079ca29670d18d51ae21e1c55 Mon Sep 17 00:00:00 2001 From: Fazendaaa Date: Tue, 23 Oct 2018 21:40:32 -0300 Subject: [PATCH 11/18] Removing Web Scrapping. --- node/README.md | 1 - node/src/WebScrapping.ts | 0 2 files changed, 1 deletion(-) delete mode 100644 node/src/WebScrapping.ts diff --git a/node/README.md b/node/README.md index afee801..ec0e9b3 100644 --- a/node/README.md +++ b/node/README.md @@ -36,7 +36,6 @@ node ./dist/example-name.js * [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 -* [Web Scrapping](./src/WebScrapping.ts) - make a web scrapping in the [webscraper.io](https://www.webscraper.io/test-sites/e-commerce/static), pagination included **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. diff --git a/node/src/WebScrapping.ts b/node/src/WebScrapping.ts deleted file mode 100644 index e69de29..0000000 From e190f5accde0d7bd7125ce6e9b6f0e6645fb35ce Mon Sep 17 00:00:00 2001 From: Josiah Nunemaker Date: Thu, 25 Oct 2018 20:17:38 -0400 Subject: [PATCH 12/18] Remove jQuery dependancy in JSX demo to simplify example --- jsx/package.json | 2 -- jsx/src/app.tsx | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/jsx/package.json b/jsx/package.json index 44629ce..8c62110 100644 --- a/jsx/package.json +++ b/jsx/package.json @@ -28,12 +28,10 @@ "devDependencies": { "typescript": "latest", "http-server": "0.8.0", - "@types/jquery": "^2", "@types/react-dom": "^15", "@types/react": "^15" }, "dependencies": { - "jquery": "^3.3.1", "react": "^15.6.1", "react-dom": "^15.6.1", "requirejs": "^2.1.20" diff --git a/jsx/src/app.tsx b/jsx/src/app.tsx index 65c44c2..13a5613 100644 --- a/jsx/src/app.tsx +++ b/jsx/src/app.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import * as $ from 'jquery'; import {Greeter as Greetifier, GreeterProps as GreeterProps} from 'greeter'; function getRandomGreeting() { @@ -12,11 +11,11 @@ function getRandomGreeting() { } } -$(() => { +(() => { let props: GreeterProps = { whomToGreet: 'world!', }; ReactDOM.render(, $('#output').get(0)); -}); +})(); From 41489179e9064c876500f1b1e6dc0bc52afceba6 Mon Sep 17 00:00:00 2001 From: Reltre Date: Fri, 26 Oct 2018 14:17:52 -0700 Subject: [PATCH 13/18] Add tsconfig which allows javascript files. --- js-and-ts/tsconfig.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 js-and-ts/tsconfig.json 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 From f0db5e7a9c3374f66728c7bfecc008111891fbf9 Mon Sep 17 00:00:00 2001 From: Reltre Date: Fri, 26 Oct 2018 14:18:23 -0700 Subject: [PATCH 14/18] Create simple class which requires an existing js module. --- js-and-ts/robot.ts | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 js-and-ts/robot.ts diff --git a/js-and-ts/robot.ts b/js-and-ts/robot.ts new file mode 100644 index 0000000..611a076 --- /dev/null +++ b/js-and-ts/robot.ts @@ -0,0 +1,40 @@ +// 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 + case '-': + computedValue = value - 10 + case '/': + computedValue = value / 10 + case '*': + computedValue = value * 10 + } + 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 From e3b5661a5af713ce09215f4aca24454caec87bc2 Mon Sep 17 00:00:00 2001 From: Reltre Date: Fri, 26 Oct 2018 14:19:12 -0700 Subject: [PATCH 15/18] A simple module, to be used as a mixin to a ts file. --- js-and-ts/format.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 js-and-ts/format.js 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 }; + From f0bc0f2eba9b320650d06f97864daca5e7495e5c Mon Sep 17 00:00:00 2001 From: Reltre Date: Fri, 26 Oct 2018 14:38:18 -0700 Subject: [PATCH 16/18] Fix issues in robot class. --- js-and-ts/robot.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/js-and-ts/robot.ts b/js-and-ts/robot.ts index 611a076..0542c12 100644 --- a/js-and-ts/robot.ts +++ b/js-and-ts/robot.ts @@ -2,8 +2,8 @@ import { Formatter } from './format.js'; interface Robot { - name: String, - currentComputation: Number + name: String; + currentComputation: Number; } class Robot { @@ -18,13 +18,19 @@ class Robot { let computedValue = 0; switch(operation) { case '+': - computedValue = value + 10 + computedValue = value + 10; + break; case '-': - computedValue = value - 10 + computedValue = value - 10; + break; case '/': - computedValue = value / 10 + computedValue = value / 10; + break; case '*': - computedValue = value * 10 + computedValue = value * 10; + break; + default: + console.log("Does not compute!!") } this.currentComputation = computedValue; } From 89f7608ee91c2de1117bbf382ba83b74c547d3ca Mon Sep 17 00:00:00 2001 From: Reltre Date: Fri, 26 Oct 2018 14:38:52 -0700 Subject: [PATCH 17/18] Add readme to 'ts-and-js' sample folder. --- js-and-ts/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 js-and-ts/README.md 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 From 661574a05cb3eba10a39d9a6ac510dd5e61b5464 Mon Sep 17 00:00:00 2001 From: Marcin Biernacik Date: Fri, 26 Oct 2018 23:59:59 +0200 Subject: [PATCH 18/18] Updated AngularJS example to ES6 + cleanups --- angular1/app/app.ts | 8 ++--- .../components/version/interpolate-filter.ts | 9 ++---- .../version/interpolate-filter_test.ts | 8 ++--- .../components/version/version-directive.ts | 11 +++---- .../version/version-directive_test.ts | 13 ++++---- angular1/app/components/version/version.ts | 1 - .../app/components/version/version_test.ts | 6 ++-- angular1/app/view1/view1.ts | 23 ++++++------- angular1/app/view1/view1_test.ts | 12 +++---- angular1/app/view2/view2.ts | 23 ++++++------- angular1/app/view2/view2_test.ts | 12 +++---- angular1/e2e-tests/scenarios.ts | 32 ++++++------------- 12 files changed, 62 insertions(+), 96 deletions(-) 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/); }); - }); });