├── .gitignore ├── README.md ├── app └── app.ts ├── index.html ├── package.json ├── systemjs.config.js ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /__build__ 2 | /__server_build__ 3 | /node_modules 4 | /typings 5 | /tsd_typings/ 6 | npm-debug.log 7 | dist 8 | .idea 9 | .DS_Store 10 | tmp 11 | perf-logs 12 | v8.log 13 | 14 | 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Angular For Beginners - Blog Post Series 3 | 4 | Here is the Angular for Beginners blog post series, available at our blog: 5 | 6 | - [Angular For Beginners Guide - Getting Started (Setup Environment)](https://blog.angular-university.io/getting-started-with-angular-setup-a-development-environment-with-yarn-the-angular-cli-setup-an-ide/) 7 | 8 | - [Angular For Beginners Guide: Why Angular? The Top Benefits](https://blog.angular-university.io/why-angular-angular-vs-jquery-a-beginner-friendly-explanation-on-the-advantages-of-angular-and-mvc/) 9 | 10 | - [Angular For Beginners Guide - Components vs Directives](https://blog.angular-university.io/angular-components-and-directives-for-beginners/) 11 | 12 | - [Why a Single Page Application, What are the Benefits? What is a SPA?](https://blog.angular-university.io/why-a-single-page-application-what-are-the-benefits-what-is-a-spa/) 13 | 14 | 15 | # Angular For Beginners Playground 16 | A playground for Getting Started with the Angular framework. 17 | 18 | This course repository is updated to Angular 5, there is a Yarn lock file available. 19 | 20 | This playground provides a save-and-refresh-just-works development environment with minimal dependencies and no build running on the background, its ideally suited for beginners just starting with the framework. 21 | 22 | 23 | # Which Course are You Looking For? 24 | 25 | If you are looking for the code of the following courses, see further the installation instructions on this page: 26 | 27 | - [Angular For Beginners](https://angular-university.io/course/getting-started-with-angular2) 28 | - [Angular Services and HTTP](https://angular-university.io/course/angular2-http) 29 | - [Angular Router](https://angular-university.io/course/angular2-routing) 30 | - [Angular Forms](https://angular-university.io/course/angular2-forms) 31 | 32 | # Angular and Firebase - Build a Web Application Course 33 | 34 | If you are looking for the Angular and Firebase - Build a Web Application Course code, the repo with the full code can be found here: 35 | 36 | [Angular and Firebase - Build a Web Application](https://angular-university.io/course/build-an-application-with-angular2) 37 | 38 | [Github Repo For this course](https://github.com/angular-university/angular-firebase-app) 39 | 40 | ![Angular firebase course](https://angular-academy.s3.amazonaws.com/thumbnails/angular_app-firebase-small-v2.png) 41 | 42 | 43 | # Complete Typescript 2 Course - Build A REST API 44 | 45 | If you are looking for the Complete Typescript 2 Course - Build a REST API, the repo with the full code can be found here: 46 | 47 | [Complete Typescript 2 Course - Build A REST API](https://angular-university.io/course/typescript-2-tutorial) 48 | 49 | [Github Repo for this course](https://github.com/angular-university/complete-typescript-course) 50 | 51 | ![Complete Typescript Course](https://angular-academy.s3.amazonaws.com/thumbnails/typescript-2-small.png) 52 | 53 | 54 | # Angular Ngrx Reactive Extensions Architecture Course 55 | 56 | If you are looking for the Angular Ngrx Reactive Extensions Architecture Course code, the repo with the full code can be found here: 57 | 58 | [Angular Ngrx Reactive Extensions Architecture Course](https://angular-university.io/course/angular2-ngrx) 59 | 60 | [Github repo for this course](https://github.com/angular-university/ngrx-course) 61 | 62 | ![Angular Ngrx Course](https://angular-academy.s3.amazonaws.com/thumbnails/ngrx-angular.png) 63 | 64 | 65 | # RxJs And Reactive Patterns Angular Architecture Course 66 | 67 | If you are looking for the RxJs And Reactive Patterns Angular Architecture Course code, the repo with the full code can be found here: 68 | 69 | [RxJs and Reactive Patterns Angular Architecture Course](https://angular-university.io/course/reactive-angular-architecture-course) 70 | 71 | [Github repo for this course](https://github.com/angular-university/reactive-patterns-course) 72 | 73 | ![RxJs and Reactive Patterns Angular Architecture Course](https://s3-us-west-1.amazonaws.com/angular-academy/blog/images/rxjs-reactive-patterns-small.png) 74 | 75 | 76 | 77 | 78 | # Installation pre-requisites 79 | 80 | The playground has minimal dependencies, you only need node and npm installed on your machine. 81 | These are some tutorials to install node in different operating systems. 82 | 83 | *Make sure to install the latest version of Node* 84 | 85 | - [Install Node and NPM on Windows](https://www.youtube.com/watch?v=8ODS6RM6x7g) 86 | - [Install Node and NPM on Linux](https://www.youtube.com/watch?v=yUdHk-Dk_BY) 87 | - [Install Node and NPM on Mac](https://www.youtube.com/watch?v=Imj8PgG3bZU) 88 | 89 | # Installation Instructions 90 | 91 | First clone or download as a Zip file using the green "Clone Or Download" button on the top right of the document. 92 | 93 | Then on the command line go into the folder and do: 94 | 95 | npm install 96 | 97 | This should take a couple of minutes. If there are issues, please post the complete error message in the Questions section of the course, i'm there to help. If you have node 6 this should go smoothly. 98 | 99 | # Starting the development server 100 | 101 | To start the server, run the following command: 102 | 103 | npm start 104 | 105 | If you now go to [http://localhost:8080](http://localhost:8080), there should be a running application there. Again please do not hesitate to post a question in the comments section. 106 | 107 | # Making changes 108 | 109 | If you edit a Typescript file and refresh the browser, the changes will be applied. 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /app/app.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | import {Component} from "@angular/core"; 5 | import {NgModule} from "@angular/core"; 6 | import {platformBrowserDynamic} from "@angular/platform-browser-dynamic"; 7 | import {BrowserModule} from "@angular/platform-browser"; 8 | 9 | 10 | 11 | 12 | @Component({ 13 | selector:'my-app', 14 | template: `

Hello World !

` 15 | }) 16 | export class HelloWorld { 17 | 18 | 19 | } 20 | 21 | 22 | @NgModule({ 23 | declarations: [HelloWorld], 24 | imports: [BrowserModule], 25 | bootstrap: [HelloWorld] 26 | }) 27 | export class AppModule { 28 | 29 | } 30 | 31 | platformBrowserDynamic().bootstrapModule(AppModule); 32 | 33 | 34 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Angular 2 For Beginners Playground 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 36 | 37 | 38 | 39 | Loading... 40 | 41 | 42 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-for-beginners-starter", 3 | "description": "Angular For Beginners Course", 4 | "version": "1.0.0", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "./node_modules/.bin/http-server -c-1 ." 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/jhades/angular-for-beginners-starter.git" 12 | }, 13 | "author": "Angular University", 14 | "license": "MIT", 15 | "bugs": { 16 | "url": "https://github.com/jhades/angular-for-beginners-starter/issues" 17 | }, 18 | "homepage": "https://github.com/jhades/angular-for-beginners-starter#readme", 19 | "devDependencies": { 20 | "http-server": "^0.9.0" 21 | }, 22 | "dependencies": { 23 | "@angular/animations": "^5.0.0", 24 | "@angular/common": "^5.0.0", 25 | "@angular/compiler": "^5.0.0", 26 | "@angular/core": "^5.0.0", 27 | "@angular/forms": "^5.0.0", 28 | "@angular/http": "^5.0.0", 29 | "@angular/platform-browser": "^5.0.0", 30 | "@angular/platform-browser-dynamic": "^5.0.0", 31 | "@angular/router": "^5.0.0", 32 | "core-js": "^2.4.1", 33 | "rxjs": "^5.5.2", 34 | "zone.js": "^0.8.14", 35 | "body-parser": "1.15.1", 36 | "express": "4.13.4", 37 | "lodash": "4.13.1", 38 | "systemjs": "0.19.27", 39 | "ts-node": "3.0.2", 40 | "typescript": "2.2.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /systemjs.config.js: -------------------------------------------------------------------------------- 1 | (function (global) { 2 | 3 | //map tells the System loader where to look for things 4 | var map = { 5 | 6 | '@angular': 'node_modules/@angular', // sufficient if we didn't pin the version 7 | '@angular/router': 'node_modules/@angular/router' , 8 | '@angular/forms': 'node_modules/@angular/forms', 9 | 'angular2-in-memory-web-api': 'https://npmcdn.com/angular2-in-memory-web-api', // get latest 10 | 'rxjs': 'https://npmcdn.com/rxjs@5.0.0-beta.6', 11 | 'ts': 'https://npmcdn.com/plugin-typescript@4.0.10/lib/plugin.js', 12 | 'typescript': 'https://npmcdn.com/typescript@1.9.0-dev.20160409/lib/typescript.js', 13 | }; 14 | 15 | //packages tells the System loader how to load when no filename and/or no extension 16 | var packages = { 17 | 'rxjs': {defaultExtension: 'js'}, 18 | 'angular2-in-memory-web-api': {main: 'index.js', defaultExtension: 'js'}, 19 | }; 20 | 21 | var ngPackageNames = [ 22 | 'common', 23 | 'compiler', 24 | 'core', 25 | 'http', 26 | 'platform-browser', 27 | 'platform-browser-dynamic', 28 | 'router-deprecated', 29 | 'upgrade', 30 | ]; 31 | 32 | // Add map entries for each angular package 33 | ngPackageNames.forEach(function (pkgName) { 34 | map['@angular/' + pkgName] = 'node_modules/@angular/' + pkgName; 35 | }); 36 | 37 | // Add package entries for angular packages 38 | ngPackageNames.forEach(function (pkgName) { 39 | 40 | // Bundled (~40 requests): 41 | packages['@angular/' + pkgName] = {main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js'}; 42 | 43 | // Individual files (~300 requests): 44 | //packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 45 | }); 46 | 47 | // No umd for router yet 48 | packages['@angular/router'] = {main: 'index.js', defaultExtension: 'js'}; 49 | 50 | // Forms not on rc yet 51 | packages['@angular/forms'] = {main: 'index.js', defaultExtension: 'js'}; 52 | 53 | var config = { 54 | // DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER 55 | transpiler: 'ts', 56 | typescriptOptions: { 57 | tsconfig: true 58 | }, 59 | meta: { 60 | 'typescript': { 61 | "exports": "ts" 62 | } 63 | }, 64 | map: map, 65 | packages: packages 66 | }; 67 | 68 | document.SYSTEMJS_CONFIG = config; 69 | 70 | })(this); 71 | 72 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": true, 11 | "suppressImplicitAnyIndexErrors": true 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@angular/animations@^5.0.0": 6 | version "5.0.0" 7 | resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.0.0.tgz#b5ad199c67f93f759544477effe6679e154991fb" 8 | dependencies: 9 | tslib "^1.7.1" 10 | 11 | "@angular/common@^5.0.0": 12 | version "5.0.0" 13 | resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.0.0.tgz#f96d66a517b995d1ba9b28309f15c2e359675825" 14 | dependencies: 15 | tslib "^1.7.1" 16 | 17 | "@angular/compiler@^5.0.0": 18 | version "5.0.0" 19 | resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.0.0.tgz#b9ffbf18c8a39d8b7dacec473193a90e24cc2bc9" 20 | dependencies: 21 | tslib "^1.7.1" 22 | 23 | "@angular/core@^5.0.0": 24 | version "5.0.0" 25 | resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.0.0.tgz#4f976a225f7dddf34992f2cad824c9543a46f4c8" 26 | dependencies: 27 | tslib "^1.7.1" 28 | 29 | "@angular/forms@^5.0.0": 30 | version "5.0.0" 31 | resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.0.0.tgz#c7fddfa35396759ae9852920a30cdda8c41ed1de" 32 | dependencies: 33 | tslib "^1.7.1" 34 | 35 | "@angular/http@^5.0.0": 36 | version "5.0.0" 37 | resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.0.0.tgz#0728a2be0cfbb078727c5eb87d4c85d53fec9a51" 38 | dependencies: 39 | tslib "^1.7.1" 40 | 41 | "@angular/platform-browser-dynamic@^5.0.0": 42 | version "5.0.0" 43 | resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.0.0.tgz#887e106c8b103b0415cf6156a425da6d83f4c89d" 44 | dependencies: 45 | tslib "^1.7.1" 46 | 47 | "@angular/platform-browser@^5.0.0": 48 | version "5.0.0" 49 | resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.0.0.tgz#c7038f7cde80705b62014897231e182eec976fed" 50 | dependencies: 51 | tslib "^1.7.1" 52 | 53 | "@angular/router@^5.0.0": 54 | version "5.0.0" 55 | resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.0.0.tgz#fe4b521a6738408bce30f93a53499140c93a4f76" 56 | dependencies: 57 | tslib "^1.7.1" 58 | 59 | accepts@~1.2.12: 60 | version "1.2.13" 61 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" 62 | dependencies: 63 | mime-types "~2.1.6" 64 | negotiator "0.5.3" 65 | 66 | ansi-regex@^2.0.0: 67 | version "2.1.1" 68 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 69 | 70 | ansi-styles@^2.2.1: 71 | version "2.2.1" 72 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 73 | 74 | array-flatten@1.1.1: 75 | version "1.1.1" 76 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 77 | 78 | arrify@^1.0.0: 79 | version "1.0.1" 80 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 81 | 82 | async@0.9.0: 83 | version "0.9.0" 84 | resolved "https://registry.yarnpkg.com/async/-/async-0.9.0.tgz#ac3613b1da9bed1b47510bb4651b8931e47146c7" 85 | 86 | body-parser@1.15.1: 87 | version "1.15.1" 88 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.15.1.tgz#9bceef0669b8f8b943f0ad8ce5d95716bd740fd2" 89 | dependencies: 90 | bytes "2.3.0" 91 | content-type "~1.0.1" 92 | debug "~2.2.0" 93 | depd "~1.1.0" 94 | http-errors "~1.4.0" 95 | iconv-lite "0.4.13" 96 | on-finished "~2.3.0" 97 | qs "6.1.0" 98 | raw-body "~2.1.6" 99 | type-is "~1.6.12" 100 | 101 | bytes@2.3.0: 102 | version "2.3.0" 103 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" 104 | 105 | bytes@2.4.0: 106 | version "2.4.0" 107 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" 108 | 109 | chalk@^1.1.1: 110 | version "1.1.3" 111 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 112 | dependencies: 113 | ansi-styles "^2.2.1" 114 | escape-string-regexp "^1.0.2" 115 | has-ansi "^2.0.0" 116 | strip-ansi "^3.0.0" 117 | supports-color "^2.0.0" 118 | 119 | colors@1.0.3: 120 | version "1.0.3" 121 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 122 | 123 | content-disposition@0.5.1: 124 | version "0.5.1" 125 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" 126 | 127 | content-type@~1.0.1: 128 | version "1.0.4" 129 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 130 | 131 | cookie-signature@1.0.6: 132 | version "1.0.6" 133 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 134 | 135 | cookie@0.1.5: 136 | version "0.1.5" 137 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.5.tgz#6ab9948a4b1ae21952cd2588530a4722d4044d7c" 138 | 139 | core-js@^2.4.1: 140 | version "2.5.1" 141 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" 142 | 143 | corser@~2.0.0: 144 | version "2.0.1" 145 | resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" 146 | 147 | debug@~2.2.0: 148 | version "2.2.0" 149 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 150 | dependencies: 151 | ms "0.7.1" 152 | 153 | depd@~1.1.0: 154 | version "1.1.1" 155 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" 156 | 157 | destroy@~1.0.4: 158 | version "1.0.4" 159 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 160 | 161 | diff@^3.1.0: 162 | version "3.4.0" 163 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" 164 | 165 | ecstatic@^1.4.0: 166 | version "1.4.1" 167 | resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-1.4.1.tgz#32cb7b6fa2e290d58668674d115e8f0c3d567d6a" 168 | dependencies: 169 | he "^0.5.0" 170 | mime "^1.2.11" 171 | minimist "^1.1.0" 172 | url-join "^1.0.0" 173 | 174 | ee-first@1.1.1: 175 | version "1.1.1" 176 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 177 | 178 | escape-html@~1.0.3: 179 | version "1.0.3" 180 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 181 | 182 | escape-string-regexp@^1.0.2: 183 | version "1.0.5" 184 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 185 | 186 | etag@~1.7.0: 187 | version "1.7.0" 188 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" 189 | 190 | eventemitter3@1.x.x: 191 | version "1.2.0" 192 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" 193 | 194 | express@4.13.4: 195 | version "4.13.4" 196 | resolved "https://registry.yarnpkg.com/express/-/express-4.13.4.tgz#3c0b76f3c77590c8345739061ec0bd3ba067ec24" 197 | dependencies: 198 | accepts "~1.2.12" 199 | array-flatten "1.1.1" 200 | content-disposition "0.5.1" 201 | content-type "~1.0.1" 202 | cookie "0.1.5" 203 | cookie-signature "1.0.6" 204 | debug "~2.2.0" 205 | depd "~1.1.0" 206 | escape-html "~1.0.3" 207 | etag "~1.7.0" 208 | finalhandler "0.4.1" 209 | fresh "0.3.0" 210 | merge-descriptors "1.0.1" 211 | methods "~1.1.2" 212 | on-finished "~2.3.0" 213 | parseurl "~1.3.1" 214 | path-to-regexp "0.1.7" 215 | proxy-addr "~1.0.10" 216 | qs "4.0.0" 217 | range-parser "~1.0.3" 218 | send "0.13.1" 219 | serve-static "~1.10.2" 220 | type-is "~1.6.6" 221 | utils-merge "1.0.0" 222 | vary "~1.0.1" 223 | 224 | finalhandler@0.4.1: 225 | version "0.4.1" 226 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.1.tgz#85a17c6c59a94717d262d61230d4b0ebe3d4a14d" 227 | dependencies: 228 | debug "~2.2.0" 229 | escape-html "~1.0.3" 230 | on-finished "~2.3.0" 231 | unpipe "~1.0.0" 232 | 233 | forwarded@~0.1.0: 234 | version "0.1.2" 235 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 236 | 237 | fresh@0.3.0: 238 | version "0.3.0" 239 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" 240 | 241 | has-ansi@^2.0.0: 242 | version "2.0.0" 243 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 244 | dependencies: 245 | ansi-regex "^2.0.0" 246 | 247 | he@^0.5.0: 248 | version "0.5.0" 249 | resolved "https://registry.yarnpkg.com/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2" 250 | 251 | http-errors@~1.3.1: 252 | version "1.3.1" 253 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" 254 | dependencies: 255 | inherits "~2.0.1" 256 | statuses "1" 257 | 258 | http-errors@~1.4.0: 259 | version "1.4.0" 260 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.4.0.tgz#6c0242dea6b3df7afda153c71089b31c6e82aabf" 261 | dependencies: 262 | inherits "2.0.1" 263 | statuses ">= 1.2.1 < 2" 264 | 265 | http-proxy@^1.8.1: 266 | version "1.16.2" 267 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" 268 | dependencies: 269 | eventemitter3 "1.x.x" 270 | requires-port "1.x.x" 271 | 272 | http-server@^0.9.0: 273 | version "0.9.0" 274 | resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.9.0.tgz#8f1b06bdc733618d4dc42831c7ba1aff4e06001a" 275 | dependencies: 276 | colors "1.0.3" 277 | corser "~2.0.0" 278 | ecstatic "^1.4.0" 279 | http-proxy "^1.8.1" 280 | opener "~1.4.0" 281 | optimist "0.6.x" 282 | portfinder "0.4.x" 283 | union "~0.4.3" 284 | 285 | iconv-lite@0.4.13: 286 | version "0.4.13" 287 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" 288 | 289 | inherits@2.0.1: 290 | version "2.0.1" 291 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 292 | 293 | inherits@~2.0.1: 294 | version "2.0.3" 295 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 296 | 297 | ipaddr.js@1.0.5: 298 | version "1.0.5" 299 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.0.5.tgz#5fa78cf301b825c78abc3042d812723049ea23c7" 300 | 301 | lodash@4.13.1: 302 | version "4.13.1" 303 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.13.1.tgz#83e4b10913f48496d4d16fec4a560af2ee744b68" 304 | 305 | make-error@^1.1.1: 306 | version "1.3.0" 307 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" 308 | 309 | media-typer@0.3.0: 310 | version "0.3.0" 311 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 312 | 313 | merge-descriptors@1.0.1: 314 | version "1.0.1" 315 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 316 | 317 | methods@~1.1.2: 318 | version "1.1.2" 319 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 320 | 321 | mime-db@~1.30.0: 322 | version "1.30.0" 323 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 324 | 325 | mime-types@~2.1.15, mime-types@~2.1.6: 326 | version "2.1.17" 327 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 328 | dependencies: 329 | mime-db "~1.30.0" 330 | 331 | mime@1.3.4: 332 | version "1.3.4" 333 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 334 | 335 | mime@^1.2.11: 336 | version "1.4.1" 337 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" 338 | 339 | minimist@0.0.8: 340 | version "0.0.8" 341 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 342 | 343 | minimist@^1.1.0, minimist@^1.2.0: 344 | version "1.2.0" 345 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 346 | 347 | minimist@~0.0.1: 348 | version "0.0.10" 349 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 350 | 351 | mkdirp@0.5.x, mkdirp@^0.5.1: 352 | version "0.5.1" 353 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 354 | dependencies: 355 | minimist "0.0.8" 356 | 357 | ms@0.7.1: 358 | version "0.7.1" 359 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 360 | 361 | negotiator@0.5.3: 362 | version "0.5.3" 363 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" 364 | 365 | object-assign@^4.1.1: 366 | version "4.1.1" 367 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 368 | 369 | on-finished@~2.3.0: 370 | version "2.3.0" 371 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 372 | dependencies: 373 | ee-first "1.1.1" 374 | 375 | opener@~1.4.0: 376 | version "1.4.3" 377 | resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" 378 | 379 | optimist@0.6.x: 380 | version "0.6.1" 381 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 382 | dependencies: 383 | minimist "~0.0.1" 384 | wordwrap "~0.0.2" 385 | 386 | parseurl@~1.3.1: 387 | version "1.3.2" 388 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" 389 | 390 | path-to-regexp@0.1.7: 391 | version "0.1.7" 392 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 393 | 394 | portfinder@0.4.x: 395 | version "0.4.0" 396 | resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-0.4.0.tgz#a3ffadffafe4fb98e0601a85eda27c27ce84ca1e" 397 | dependencies: 398 | async "0.9.0" 399 | mkdirp "0.5.x" 400 | 401 | proxy-addr@~1.0.10: 402 | version "1.0.10" 403 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.0.10.tgz#0d40a82f801fc355567d2ecb65efe3f077f121c5" 404 | dependencies: 405 | forwarded "~0.1.0" 406 | ipaddr.js "1.0.5" 407 | 408 | qs@4.0.0: 409 | version "4.0.0" 410 | resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" 411 | 412 | qs@6.1.0: 413 | version "6.1.0" 414 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.1.0.tgz#ec1d1626b24278d99f0fdf4549e524e24eceeb26" 415 | 416 | qs@~2.3.3: 417 | version "2.3.3" 418 | resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404" 419 | 420 | range-parser@~1.0.3: 421 | version "1.0.3" 422 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" 423 | 424 | raw-body@~2.1.6: 425 | version "2.1.7" 426 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" 427 | dependencies: 428 | bytes "2.4.0" 429 | iconv-lite "0.4.13" 430 | unpipe "1.0.0" 431 | 432 | requires-port@1.x.x: 433 | version "1.0.0" 434 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 435 | 436 | rxjs@^5.5.2: 437 | version "5.5.2" 438 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" 439 | dependencies: 440 | symbol-observable "^1.0.1" 441 | 442 | send@0.13.1: 443 | version "0.13.1" 444 | resolved "https://registry.yarnpkg.com/send/-/send-0.13.1.tgz#a30d5f4c82c8a9bae9ad00a1d9b1bdbe6f199ed7" 445 | dependencies: 446 | debug "~2.2.0" 447 | depd "~1.1.0" 448 | destroy "~1.0.4" 449 | escape-html "~1.0.3" 450 | etag "~1.7.0" 451 | fresh "0.3.0" 452 | http-errors "~1.3.1" 453 | mime "1.3.4" 454 | ms "0.7.1" 455 | on-finished "~2.3.0" 456 | range-parser "~1.0.3" 457 | statuses "~1.2.1" 458 | 459 | send@0.13.2: 460 | version "0.13.2" 461 | resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" 462 | dependencies: 463 | debug "~2.2.0" 464 | depd "~1.1.0" 465 | destroy "~1.0.4" 466 | escape-html "~1.0.3" 467 | etag "~1.7.0" 468 | fresh "0.3.0" 469 | http-errors "~1.3.1" 470 | mime "1.3.4" 471 | ms "0.7.1" 472 | on-finished "~2.3.0" 473 | range-parser "~1.0.3" 474 | statuses "~1.2.1" 475 | 476 | serve-static@~1.10.2: 477 | version "1.10.3" 478 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" 479 | dependencies: 480 | escape-html "~1.0.3" 481 | parseurl "~1.3.1" 482 | send "0.13.2" 483 | 484 | source-map-support@^0.4.0: 485 | version "0.4.18" 486 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" 487 | dependencies: 488 | source-map "^0.5.6" 489 | 490 | source-map@^0.5.6: 491 | version "0.5.7" 492 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 493 | 494 | statuses@1, "statuses@>= 1.2.1 < 2": 495 | version "1.4.0" 496 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" 497 | 498 | statuses@~1.2.1: 499 | version "1.2.1" 500 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" 501 | 502 | strip-ansi@^3.0.0: 503 | version "3.0.1" 504 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 505 | dependencies: 506 | ansi-regex "^2.0.0" 507 | 508 | strip-bom@^3.0.0: 509 | version "3.0.0" 510 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 511 | 512 | strip-json-comments@^2.0.0: 513 | version "2.0.1" 514 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 515 | 516 | supports-color@^2.0.0: 517 | version "2.0.0" 518 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 519 | 520 | symbol-observable@^1.0.1: 521 | version "1.0.4" 522 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 523 | 524 | systemjs@0.19.27: 525 | version "0.19.27" 526 | resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.27.tgz#f1740d565ce64371ac0de7072a4d1e5471ba7ba2" 527 | dependencies: 528 | when "^3.7.5" 529 | 530 | ts-node@3.0.2: 531 | version "3.0.2" 532 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.0.2.tgz#cfc9516c831b920d7efbe16005915062b1294f8c" 533 | dependencies: 534 | arrify "^1.0.0" 535 | chalk "^1.1.1" 536 | diff "^3.1.0" 537 | make-error "^1.1.1" 538 | minimist "^1.2.0" 539 | mkdirp "^0.5.1" 540 | source-map-support "^0.4.0" 541 | tsconfig "^6.0.0" 542 | v8flags "^2.0.11" 543 | yn "^1.2.0" 544 | 545 | tsconfig@^6.0.0: 546 | version "6.0.0" 547 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" 548 | dependencies: 549 | strip-bom "^3.0.0" 550 | strip-json-comments "^2.0.0" 551 | 552 | tslib@^1.7.1: 553 | version "1.8.0" 554 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" 555 | 556 | type-is@~1.6.12, type-is@~1.6.6: 557 | version "1.6.15" 558 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 559 | dependencies: 560 | media-typer "0.3.0" 561 | mime-types "~2.1.15" 562 | 563 | typescript@2.2.0: 564 | version "2.2.0" 565 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.0.tgz#626f2fc70087d2480f21ebb12c1888288c8614e3" 566 | 567 | union@~0.4.3: 568 | version "0.4.6" 569 | resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0" 570 | dependencies: 571 | qs "~2.3.3" 572 | 573 | unpipe@1.0.0, unpipe@~1.0.0: 574 | version "1.0.0" 575 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 576 | 577 | url-join@^1.0.0: 578 | version "1.1.0" 579 | resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78" 580 | 581 | user-home@^1.1.1: 582 | version "1.1.1" 583 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" 584 | 585 | utils-merge@1.0.0: 586 | version "1.0.0" 587 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 588 | 589 | v8flags@^2.0.11: 590 | version "2.1.1" 591 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" 592 | dependencies: 593 | user-home "^1.1.1" 594 | 595 | vary@~1.0.1: 596 | version "1.0.1" 597 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" 598 | 599 | when@^3.7.5: 600 | version "3.7.8" 601 | resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" 602 | 603 | wordwrap@~0.0.2: 604 | version "0.0.3" 605 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 606 | 607 | yn@^1.2.0: 608 | version "1.3.0" 609 | resolved "https://registry.yarnpkg.com/yn/-/yn-1.3.0.tgz#1b0812abb8d805d48966f8df385dc9dacc9a19d8" 610 | dependencies: 611 | object-assign "^4.1.1" 612 | 613 | zone.js@^0.8.14: 614 | version "0.8.18" 615 | resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.18.tgz#8cecb3977fcd1b3090562ff4570e2847e752b48d" 616 | --------------------------------------------------------------------------------