From 5dfe84646d23754e21a0fea943553e5cb5bd65de Mon Sep 17 00:00:00 2001 From: Victor Cardins Date: Mon, 6 Jul 2015 18:40:15 -0700 Subject: [PATCH 1/2] Upgraded to alpha 29 --- package.json | 4 +- src/app/LoggedInOutlet.ts | 30 ++- src/app/app.ts | 12 +- src/home/home.ts | 2 +- src/login/login.ts | 2 +- src/signup/signup.ts | 2 +- tsconfig.json | 2 +- typings/_custom/ng2.d.ts | 497 ++++++++++++++++++-------------------- 8 files changed, 262 insertions(+), 289 deletions(-) diff --git a/package.json b/package.json index adc7239..9d31b9f 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ }, "homepage": "https://github.com/auth0/angular2-authentication-sample", "dependencies": { - "angular2": "2.0.0-alpha.26", + "angular2": "^2.0.0-alpha.29", "raw-loader": "^0.5.1", "reflect-metadata": "^0.1.0", - "rtts_assert": "2.0.0-alpha.26", + "rtts_assert": "2.0.0-alpha.29", "rx": "^2.5.3", "zone.js": "^0.5.0", "bootstrap": "~3.3.4", diff --git a/src/app/LoggedInOutlet.ts b/src/app/LoggedInOutlet.ts index bfae6b2..77661ab 100644 --- a/src/app/LoggedInOutlet.ts +++ b/src/app/LoggedInOutlet.ts @@ -1,31 +1,35 @@ -import {Directive, Attribute, ElementRef, DynamicComponentLoader} from 'angular2/angular2'; +import {Directive, Attribute} from 'angular2/annotations'; +import {ElementRef, DynamicComponentLoader} from 'angular2/core'; import {Router, RouterOutlet} from 'angular2/router'; import {Injector} from 'angular2/di'; import {Login} from '../login/login'; +import * as routerMod from 'angular2/router'; + @Directive({selector: 'router-outlet'}) -export class LoggedInRouterOutlet extends RouterOutlet { +export class LoggedInRouterOutlet extends routerMod.RouterOutlet { publicRoutes: any constructor( elementRef: ElementRef, _loader: DynamicComponentLoader, - _parentRouter: Router, + _parentRouter: routerMod.Router, _injector: Injector, - @Attribute('name') nameAttr: string) { - + @Attribute('name') nameAttr: string) { + this.publicRoutes = { '/login': true, '/signup': true }; - + super(elementRef, _loader, _parentRouter, _injector, nameAttr); + } - activate(instruction) { - var url = this._parentRouter.lastNavigationAttempt; - if (!this.publicRoutes[url] && !localStorage.getItem('jwt')) { - instruction.component = Login; - } - super.activate(instruction); - } + // activate(instruction) { + // var url = this._parentRouter.lastNavigationAttempt; + // if (!this.publicRoutes[url] && !localStorage.getItem('jwt')) { + // instruction.component = Login; + // } + // super.activate(instruction); + // } } diff --git a/src/app/app.ts b/src/app/app.ts index df81abf..6f6a622 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,18 +1,20 @@ /// -import {View, Component} from 'angular2/angular2'; +import {View, Component} from 'angular2/annotations'; import {Home} from '../home/home'; import {Login} from '../login/login'; import {Signup} from '../signup/signup'; import {RouteConfig, RouterOutlet, RouterLink, Router} from 'angular2/router'; -import {BrowserLocation} from 'angular2/src/router/browser_location'; +import {Location} from 'angular2/router'; + import {LoggedInRouterOutlet} from './LoggedInOutlet'; let template = require('./app.html'); @Component({ - selector: 'auth-app' + selector: 'auth-app', + viewInjector: [Location] }) @View({ template:`${template}`, @@ -25,10 +27,10 @@ let template = require('./app.html'); ]) export class App { router: Router; - constructor(router: Router, browserLocation: BrowserLocation) { + constructor(router: Router, location: Location) { // we need to manually go to the correct uri until the router is fixed this.router = router; - let uri = browserLocation.path(); + let uri = location.path(); if (uri === '' || uri === '/') { router.navigate('/home'); } else { diff --git a/src/home/home.ts b/src/home/home.ts index 41c11d9..511a6c3 100644 --- a/src/home/home.ts +++ b/src/home/home.ts @@ -1,6 +1,6 @@ /// -import {Component, View} from 'angular2/angular2'; +import {Component, View} from 'angular2/annotations'; import {coreDirectives} from 'angular2/directives'; import {status, text} from '../utils/fetch' import { Router} from 'angular2/router'; diff --git a/src/login/login.ts b/src/login/login.ts index 380f20d..62eadc4 100644 --- a/src/login/login.ts +++ b/src/login/login.ts @@ -1,6 +1,6 @@ /// -import {Component, View} from 'angular2/angular2'; +import {Component, View} from 'angular2/annotations'; import {status, json} from '../utils/fetch' import { Router, RouterLink } from 'angular2/router'; diff --git a/src/signup/signup.ts b/src/signup/signup.ts index b29a48e..5e98a79 100644 --- a/src/signup/signup.ts +++ b/src/signup/signup.ts @@ -1,7 +1,7 @@ /// import {coreDirectives} from 'angular2/directives'; -import {Component, View} from 'angular2/angular2'; +import {Component, View} from 'angular2/annotations'; import {status, json} from '../utils/fetch'; import { Router, RouterLink } from 'angular2/router'; diff --git a/tsconfig.json b/tsconfig.json index bbe0232..dea2205 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "version": "1.5.0", + "version": "1.5.1", "compilerOptions": { "target": "es5", "module": "commonjs", diff --git a/typings/_custom/ng2.d.ts b/typings/_custom/ng2.d.ts index ac375bf..165463e 100644 --- a/typings/_custom/ng2.d.ts +++ b/typings/_custom/ng2.d.ts @@ -1,299 +1,266 @@ -declare var zone: any; -declare var Zone: any; +/** + * Angular 2 + */ - -declare module "angular2/change_detection" { - class Pipe {} - class NullPipeFactory {} - class PipeRegistry { - constructor(pipes: any) - } - class JitChangeDetection {} - class ChangeDetection {} - class DynamicChangeDetection {} - var defaultPipes: any; +declare module 'angular2/di' { + class Injector {} + var Injectable; + var Inject: any; + var InjectPromise: any; } - -declare module "angular2/src/core/zone/ng_zone" { - class NgZone { - runOutsideAngular(func: Function): any - } +declare module 'angular2/render' { + class NativeShadowDomStrategy { + constructor(styleUrlResolver: any) + } + interface EventDispatcher { + dispatchEvent(elementIndex: number, eventName: string, locals: Map): any; + } + class RenderViewRef {} + class RenderProtoViewRef {} + class ShadowDomStrategy {} + class Renderer { + attachComponentView(hostViewRef: RenderViewRef, elementIndex: number, componentViewRef: RenderViewRef): any; + attachViewInContainer(parentViewRef: RenderViewRef, boundElementIndex: number, atIndex: number, viewRef: RenderViewRef): any; + callAction(viewRef: RenderViewRef, elementIndex: number, actionExpression: string, actionArgs: any): any; + createRootHostView(hostProtoViewRef: RenderProtoViewRef, hostElementSelector: string): RenderViewRef; + createView(protoViewRef: RenderProtoViewRef): RenderViewRef; + dehydrateView(viewRef: RenderViewRef): any; + destroyView(viewRef: RenderViewRef): any; + detachComponentView(hostViewRef: RenderViewRef, boundElementIndex: number, componentViewRef: RenderViewRef): any; + detachFreeView(view: RenderViewRef): any; + detachViewInContainer(parentViewRef: RenderViewRef, boundElementIndex: number, atIndex: number, viewRef: RenderViewRef): any; + hydrateView(viewRef: RenderViewRef): any; + setElementProperty(viewRef: RenderViewRef, elementIndex: number, propertyName: string, propertyValue: any): any; + setEventDispatcher(viewRef: RenderViewRef, dispatcher: EventDispatcher): any; + setText(viewRef: RenderViewRef, textNodeIndex: number, text: string): any; + } } -declare module 'angular2/src/services/url_resolver' { - class UrlResolver {} +declare module 'angular2/core' { + import { RenderViewRef } from 'angular2/render'; + class DynamicComponentLoader {} + class Injector {} + class ViewRef { + render: RenderViewRef; + } + class ProtoViewRef {} + class ViewContainerRef { + create(protoViewRef?: ProtoViewRef, atIndex?: number, context?: ElementRef, injector?: Injector): ViewRef; + element: ElementRef; + } + class ElementRef { + boundElementIndex: number; + nativeElement: any; + getAttribute(name: string): string; + parentView: ViewRef; + } + class BaseQueryList { + add(obj: any): any; + fireCallbacks(): any; + onChange(callback: any): any; + removeCallback(callback: any): any; + reset(newList: any): any; + } + class QueryList extends BaseQueryList { + onChange(callback: any): any; + removeCallback(callback: any): any; + } } -declare module "angular2/src/facade/async" { - class Observable {} - class EventEmitter { - next(val:any) - return(val:any) - throw(val:any) - } - class PromiseWrapper { +declare module 'angular2/src/facade/async' { + class Observable { + observer(generator: any): Object + } + class ObservableWrapper { + static subscribe(emitter: Observable, onNext: Function, onThrow?: Function, onReturn?: Function): Object; + static dispose(subscription: any): void; + static callNext(emitter: EventEmitter, value: any): void; + static callThrow(emitter: EventEmitter, error: any): void; + } + class EventEmitter extends Observable { + next(value: any): any; + observer(generator: any): any; + return(value: any): any; + throw(error: any): any; + toRx(): Rx.Observable; + } +} - } +declare module 'angular2/src/facade/browser' { + var document: any; + const KeyboardEvent; } -declare module "angular2/src/render/dom/shadow_dom/style_url_resolver" { - class StyleUrlResolver {} +declare module 'angular2/src/facade/lang' { + class BaseException { + constructor(message: string); + } + class FunctionWrapper { + static apply(fn: Function, posArgs?: Array): any + } + class StringWrapper { + static toLowerCase(s: string): string + } + class NumberWrapper { + static parseInt(text: string, radix: number): number; + static isNaN(value: any): boolean; + } + function isBlank (obj: any): boolean; + function isJsObject(obj: any): boolean; + function isPresent(obj: any): boolean; + function isFunction(obj: any): boolean; + function isString(obj: any): boolean; } -declare module "angular2/src/core/life_cycle/life_cycle" { - class LifeCycle { - tick(): any; - } +declare module "angular2/annotations" { + var Attribute: any; + var Parent: any; + var Query: any; + const onDestroy; + function Directive(arg: any): (target: any) => any; + function Component(arg: any): (target: any) => any; + function View(arg: any): (target: any) => any; } -declare module "zone.js" { - var zone: any; - var Zone: any; +declare module "angular2/change_detection" { + interface Pipe { + supports(obj): boolean; + onDestroy(): void; + transform(value: any): any; + } + interface PipeFactory { + supports(obs): boolean; + create(cdRef): Pipe; + } + class NullPipeFactory implements PipeFactory { + supports(obj): boolean; + create(cdRef): Pipe; + } + class PipeRegistry { + constructor(pipes: any) + } + class BasePipe implements Pipe { + supports(obj): boolean; + onDestroy(): void; + transform(value: any): any; + } + class JitChangeDetection {} + class ChangeDetection {} + class DynamicChangeDetection {} + var defaultPipes: any; } declare module "angular2/directives" { - function NgSwitch(): void; - function NgSwitchWhen(): void; - function NgSwitchDefault(): void; - function NgNonBindable(): void; - function NgIf(): void; - function NgFor(): void; - - var formDirectives: any; - var coreDirectives: any; - + class NgFor {} + class NgIf {} } declare module "angular2/forms" { - var formDirectives: any; - class FormBuilder { - group(controls: any): any; - } - class Control { - constructor(controls: any) - updateValue(value: any) - _valueChanges: any - valueChanges: any - } - class ControlArray { - removeAt(index: any) - push(item: any) - } - class ControlGroup { - constructor(controls: any) - controls: any; - valueChanges: any; - } - class Validators { - static required: any; - } + class CheckboxControlValueAccessor {} + interface ControlValueAccessor { + registerOnChange(fn: any): void; + registerOnTouched(fn: any): void; + writeValue(obj: any): void; + } + class DefaultValueAccessor {} + + class NgControl { + valueAccessor: ControlValueAccessor; + control: Control; + } + class NgControlGroup {} + class NgControlName {} + class NgForm {} + class NgFormControl {} + class NgFormModel {} + class NgModel {} + class NgRequiredValidator {} + class FormBuilder { + group(controls: any): any + controls: any; + } + class AbstractControl { + dirty: boolean; + touched: boolean; + untouched: boolean; + valueChanges: any; + valid: boolean; + pristine: boolean; + } + class Control extends AbstractControl { + constructor(controls: any); + updateValue(value: any); + } + class ControlGroup { + constructor(controls: any) + controls: any; + valueChanges: any; + } + class Validators { + static required: any; + } + const formInjectables: any; + const formDirectives: any; } -declare module "angular2/render" { - class EmulatedScopedShadowDomStrategy { - constructor(styleInliner: any, styleUrlResolver: any, styleHost: any) - } - class EmulatedUnscopedShadowDomStrategy { - constructor(styleUrlResolver: any, styleHost: any) - } - class NativeShadowDomStrategy { - constructor(styleUrlResolver: any) - } - class ShadowDomStrategy {} +declare module 'angular2/src/http/static_response' { + class Response { + headers: any; + text(): string; + } } -declare module "angular2/src/facade/browser" { - var __esModule: boolean; - var win: any; - var document: any; - var location: any; - var gc: () => void; - const Event: any; - const MouseEvent: any; - const KeyboardEvent: any; +declare module 'angular2/http' { + class Http {} + const httpInjectables: any; } -declare module "angular2/src/router/browser_location" { - class BrowserLocation { - path(): string - } +declare module 'angular2/router' { + class Instruction {} + class Router { + navigate(url: string): Promise + config(config: any): Promise + subscribe(onNext: Function): Promise + } + class LocationStrategy {} + class HashLocationStrategy {} + class Location { + path(): string; + } + var RouterOutlet: any; + var RouterLink: any; + var routerInjectables: any; + var RouteConfig: any; } -declare module "angular2/src/router/location" { - class Location { - normalize(url: string): string - } -} -declare module "angular2/router" { - class Instruction {} - class Router { - _registry: any; - _pipeline: any; - hostComponent: any; - navigating: boolean; - lastNavigationAttempt: string; - previousUrl: string; - _currentInstruction: any; - _outlets: any; - _subject: any; - navigate(url: string): Promise; - config(config: any): Promise; - deactivate(): Promise; - activate(instruction: Instruction): Promise; - recognize(url: string): Instruction; - recognize(url: string): Instruction; - renavigate(): Promise; - generate(name:string, params:any): string; - subscribe(onNext: Function): void; - parent: Router; - } - class RouterOutlet { - constructor(elementRef: any, _loader: any, _parentRouter: any, _injector: any, nameAttr: any) - _loader: any; - _parentRouter: any; - _injector: any; - _childRouter: any; - _componentRef: any; - _elementRef: any; - _currentInstruction: any; - /** - * Given an instruction, update the contents of this viewport. - */ - activate(instruction: any): any; - deactivate(): any; - canDeactivate(instruction: any): any; - } - class RouteParams {} - var RouterLink: any; - var routerInjectables: any; - var RouteConfigAnnotation: any; - var RouteConfig: any; +/** + * ES6 + * + * Sources: + * - [maps]{@link https://github.com/Microsoft/TypeScript/issues/3290} + */ + +interface Map { + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: Map) => void, thisArg?: any): void; + get(key: K): V; + has(key: K): boolean; + set(key: K, value: V): Map; + size: number; } - -declare module "angular2/src/dom/browser_adapter" { - class BrowserDomAdapter { - static makeCurrent(): void; - logError(error: any): void; - attrToPropMap: any; - query(selector: string): any; - querySelector(el: any, selector: string): Node; - querySelectorAll(el: any, selector: string): List; - on(el: any, evt: any, listener: any): void; - onAndCancel(el: any, evt: any, listener: any): Function; - dispatchEvent(el: any, evt: any): void; - createMouseEvent(eventType: string): MouseEvent; - createEvent(eventType: any): Event; - getInnerHTML(el: any): any; - getOuterHTML(el: any): any; - nodeName(node: Node): string; - nodeValue(node: Node): string; - type(node: HTMLInputElement): string; - content(node: Node): Node; - firstChild(el: any): Node; - nextSibling(el: any): Node; - parentElement(el: any): any; - childNodes(el: any): List; - childNodesAsList(el: any): List; - clearNodes(el: any): void; - appendChild(el: any, node: any): void; - removeChild(el: any, node: any): void; - replaceChild(el: Node, newChild: any, oldChild: any): void; - remove(el: any): any; - insertBefore(el: any, node: any): void; - insertAllBefore(el: any, nodes: any): void; - insertAfter(el: any, node: any): void; - setInnerHTML(el: any, value: any): void; - getText(el: any): any; - setText(el: any, value: string): void; - getValue(el: any): any; - setValue(el: any, value: string): void; - getChecked(el: any): any; - setChecked(el: any, value: boolean): void; - createTemplate(html: any): HTMLElement; - createElement(tagName: any, doc?: Document): HTMLElement; - createTextNode(text: string, doc?: Document): Text; - createScriptTag(attrName: string, attrValue: string, doc?: Document): HTMLScriptElement; - createStyleElement(css: string, doc?: Document): HTMLStyleElement; - createShadowRoot(el: HTMLElement): DocumentFragment; - getShadowRoot(el: HTMLElement): DocumentFragment; - getHost(el: HTMLElement): HTMLElement; - clone(node: Node): Node; - hasProperty(element: any, name: string): boolean; - getElementsByClassName(element: any, name: string): any; - getElementsByTagName(element: any, name: string): any; - classList(element: any): List; - addClass(element: any, classname: string): void; - removeClass(element: any, classname: string): void; - hasClass(element: any, classname: string): any; - setStyle(element: any, stylename: string, stylevalue: string): void; - removeStyle(element: any, stylename: string): void; - getStyle(element: any, stylename: string): any; - tagName(element: any): string; - attributeMap(element: any): any; - hasAttribute(element: any, attribute: string): any; - getAttribute(element: any, attribute: string): any; - setAttribute(element: any, name: string, value: string): void; - removeAttribute(element: any, attribute: string): any; - templateAwareRoot(el: any): any; - createHtmlDocument(): Document; - defaultDoc(): Document; - getBoundingClientRect(el: any): any; - getTitle(): string; - setTitle(newTitle: string): void; - elementMatches(n: any, selector: string): boolean; - isTemplateElement(el: any): boolean; - isTextNode(node: Node): boolean; - isCommentNode(node: Node): boolean; - isElementNode(node: Node): boolean; - hasShadowRoot(node: any): boolean; - isShadowRoot(node: any): boolean; - importIntoDoc(node: Node): Node; - isPageRule(rule: any): boolean; - isStyleRule(rule: any): boolean; - isMediaRule(rule: any): boolean; - isKeyframesRule(rule: any): boolean; - getHref(el: Element): string; - getEventKey(event: any): string; - getGlobalEventTarget(target: string): EventTarget; - getHistory(): History; - getLocation(): Location; - getBaseHref(): any; - } +declare var Map: { + new (...items: Array): Map; + prototype: Map; +} + +interface ObjectConstructor { + assign(target: any, ...sources: any[]): any } -declare module "angular2/di" { - - function bind(token: any): any; - class Injector { - resolveAndCreateChild(bindings: [any]): Injector; - } - var Binding: any; - var ResolvedBinding: any; - var Dependency: any; - var Key: any; - var KeyRegistry: any; - var TypeLiteral: any; - var NoBindingError: any; - var AbstractBindingError: any; - var AsyncBindingError: any; - var CyclicDependencyError: any; - var InstantiationError: any; - var InvalidBindingError: any; - var NoAnnotationError: any; - var OpaqueToken: any; - var ___esModule: any; - var InjectAnnotation: any; - var InjectPromiseAnnotation: any; - var InjectLazyAnnotation: any; - var OptionalAnnotation: any; - var InjectableAnnotation: any; - var DependencyAnnotation: any; - var Inject: any; - var InjectPromise: any; - var InjectLazy: any; - var Optional: any; - var Injectable: any; +interface ArrayConstructor { + from(...sources: any[]): any } From 617bc65cdeecdbd0c72f8cd5e3fff332be35e472 Mon Sep 17 00:00:00 2001 From: Victor Cardins Date: Tue, 7 Jul 2015 00:32:28 -0700 Subject: [PATCH 2/2] Fixed the repeated view loading --- src/app/LoggedInOutlet.ts | 1 + src/app/app.ts | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/app/LoggedInOutlet.ts b/src/app/LoggedInOutlet.ts index 77661ab..b5aa3e0 100644 --- a/src/app/LoggedInOutlet.ts +++ b/src/app/LoggedInOutlet.ts @@ -8,6 +8,7 @@ import * as routerMod from 'angular2/router'; @Directive({selector: 'router-outlet'}) export class LoggedInRouterOutlet extends routerMod.RouterOutlet { + publicRoutes: any constructor( elementRef: ElementRef, diff --git a/src/app/app.ts b/src/app/app.ts index 6f6a622..c7b9cb2 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -4,14 +4,12 @@ import {View, Component} from 'angular2/annotations'; import {Home} from '../home/home'; import {Login} from '../login/login'; import {Signup} from '../signup/signup'; -import {RouteConfig, RouterOutlet, RouterLink, Router} from 'angular2/router'; +import {Router, RouteConfig} from 'angular2/router'; import {Location} from 'angular2/router'; - import {LoggedInRouterOutlet} from './LoggedInOutlet'; let template = require('./app.html'); - @Component({ selector: 'auth-app', viewInjector: [Location] @@ -21,20 +19,20 @@ let template = require('./app.html'); directives: [LoggedInRouterOutlet] }) @RouteConfig([ - { path: '/home', as: 'home', component: Home }, + { path: '/home', as: 'home', component: Home }, { path: '/login', as: 'login', component: Login }, { path: '/signup', as: 'signup', component: Signup } ]) export class App { router: Router; - constructor(router: Router, location: Location) { + constructor(router:Router, location: Location) { // we need to manually go to the correct uri until the router is fixed this.router = router; let uri = location.path(); if (uri === '' || uri === '/') { router.navigate('/home'); - } else { - router.navigate(uri); + //} else { + //router.navigate(uri); } }