├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── ClientApp ├── app │ ├── app.module.browser.ts │ ├── app.module.server.ts │ ├── app.module.shared.ts │ ├── auth.config.ts │ └── components │ │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ └── app.component.ts │ │ ├── counter │ │ ├── counter.component.html │ │ ├── counter.component.spec.ts │ │ └── counter.component.ts │ │ ├── fetchdata │ │ ├── fetchdata.component.html │ │ └── fetchdata.component.ts │ │ ├── home │ │ ├── home.component.html │ │ └── home.component.ts │ │ └── navmenu │ │ ├── navmenu.component.css │ │ ├── navmenu.component.html │ │ └── navmenu.component.ts ├── boot.browser.ts ├── boot.server.ts └── test │ ├── boot-tests.ts │ └── karma.conf.js ├── Controllers ├── HomeController.cs └── SampleDataController.cs ├── LICENSE ├── Program.cs ├── README.md ├── Startup.cs ├── Views ├── Home │ └── Index.cshtml ├── Shared │ ├── Error.cshtml │ └── _Layout.cshtml ├── _ViewImports.cshtml └── _ViewStart.cshtml ├── appsettings.Development.json ├── appsettings.json ├── npm-shrinkwrap.json ├── package.json ├── test.csproj ├── tsconfig.json ├── webpack.config.js ├── webpack.config.vendor.js └── wwwroot └── favicon.ico /.gitignore: -------------------------------------------------------------------------------- 1 | /Properties/launchSettings.json 2 | 3 | ## Ignore Visual Studio temporary files, build results, and 4 | ## files generated by popular Visual Studio add-ons. 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | build/ 23 | bld/ 24 | bin/ 25 | Bin/ 26 | obj/ 27 | Obj/ 28 | 29 | # Visual Studio 2015 cache/options directory 30 | .vs/ 31 | /wwwroot/dist/ 32 | /ClientApp/dist/ 33 | 34 | # MSTest test Results 35 | [Tt]est[Rr]esult*/ 36 | [Bb]uild[Ll]og.* 37 | 38 | # NUNIT 39 | *.VisualState.xml 40 | TestResult.xml 41 | 42 | # Build Results of an ATL Project 43 | [Dd]ebugPS/ 44 | [Rr]eleasePS/ 45 | dlldata.c 46 | 47 | *_i.c 48 | *_p.c 49 | *_i.h 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah Test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | 84 | # Visual Studio profiler 85 | *.psess 86 | *.vsp 87 | *.vspx 88 | *.sap 89 | 90 | # TFS 2012 Local Workspace 91 | $tf/ 92 | 93 | # Guidance Automation Toolkit 94 | *.gpState 95 | 96 | # ReSharper is a .NET coding add-in 97 | _ReSharper*/ 98 | *.[Rr]e[Ss]harper 99 | *.DotSettings.user 100 | 101 | # JustCode is a .NET coding add-in 102 | .JustCode 103 | 104 | # TeamCity is a build add-in 105 | _TeamCity* 106 | 107 | # DotCover is a Code Coverage Tool 108 | *.dotCover 109 | 110 | # NCrunch 111 | _NCrunch_* 112 | .*crunch*.local.xml 113 | nCrunchTemp_* 114 | 115 | # MightyMoose 116 | *.mm.* 117 | AutoTest.Net/ 118 | 119 | # Web workbench (sass) 120 | .sass-cache/ 121 | 122 | # Installshield output folder 123 | [Ee]xpress/ 124 | 125 | # DocProject is a documentation generator add-in 126 | DocProject/buildhelp/ 127 | DocProject/Help/*.HxT 128 | DocProject/Help/*.HxC 129 | DocProject/Help/*.hhc 130 | DocProject/Help/*.hhk 131 | DocProject/Help/*.hhp 132 | DocProject/Help/Html2 133 | DocProject/Help/html 134 | 135 | # Click-Once directory 136 | publish/ 137 | 138 | # Publish Web Output 139 | *.[Pp]ublish.xml 140 | *.azurePubxml 141 | # TODO: Comment the next line if you want to checkin your web deploy settings 142 | # but database connection strings (with potential passwords) will be unencrypted 143 | *.pubxml 144 | *.publishproj 145 | 146 | # NuGet Packages 147 | *.nupkg 148 | # The packages folder can be ignored because of Package Restore 149 | **/packages/* 150 | # except build/, which is used as an MSBuild target. 151 | !**/packages/build/ 152 | # Uncomment if necessary however generally it will be regenerated when needed 153 | #!**/packages/repositories.config 154 | 155 | # Microsoft Azure Build Output 156 | csx/ 157 | *.build.csdef 158 | 159 | # Microsoft Azure Emulator 160 | ecf/ 161 | rcf/ 162 | 163 | # Microsoft Azure ApplicationInsights config file 164 | ApplicationInsights.config 165 | 166 | # Windows Store app package directory 167 | AppPackages/ 168 | BundleArtifacts/ 169 | 170 | # Visual Studio cache files 171 | # files ending in .cache can be ignored 172 | *.[Cc]ache 173 | # but keep track of directories ending in .cache 174 | !*.[Cc]ache/ 175 | 176 | # Others 177 | ClientBin/ 178 | ~$* 179 | *~ 180 | *.dbmdl 181 | *.dbproj.schemaview 182 | *.pfx 183 | *.publishsettings 184 | orleans.codegen.cs 185 | 186 | /node_modules 187 | 188 | /yarn.lock 189 | 190 | # RIA/Silverlight projects 191 | Generated_Code/ 192 | 193 | # Backup & report files from converting an old project file 194 | # to a newer Visual Studio version. Backup files are not needed, 195 | # because we have git ;-) 196 | _UpgradeReport_Files/ 197 | Backup*/ 198 | UpgradeLog*.XML 199 | UpgradeLog*.htm 200 | 201 | # SQL Server files 202 | *.mdf 203 | *.ldf 204 | 205 | # Business Intelligence projects 206 | *.rdl.data 207 | *.bim.layout 208 | *.bim_*.settings 209 | 210 | # Microsoft Fakes 211 | FakesAssemblies/ 212 | 213 | # GhostDoc plugin setting file 214 | *.GhostDoc.xml 215 | 216 | # Node.js Tools for Visual Studio 217 | .ntvs_analysis.dat 218 | 219 | # Visual Studio 6 build log 220 | *.plg 221 | 222 | # Visual Studio 6 workspace options file 223 | *.opt 224 | 225 | # Visual Studio LightSwitch build output 226 | **/*.HTMLClient/GeneratedArtifacts 227 | **/*.DesktopClient/GeneratedArtifacts 228 | **/*.DesktopClient/ModelManifest.xml 229 | **/*.Server/GeneratedArtifacts 230 | **/*.Server/ModelManifest.xml 231 | _Pvt_Extensions 232 | 233 | # Paket dependency manager 234 | .paket/paket.exe 235 | 236 | # FAKE - F# Make 237 | .fake/ 238 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to find out which attributes exist for C# debugging 3 | // Use hover for the description of the existing attributes 4 | // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": ".NET Core Launch (web)", 9 | "type": "coreclr", 10 | "request": "launch", 11 | "preLaunchTask": "build", 12 | "program": "${workspaceRoot}/bin/Debug/netcoreapp2.0/test.dll", 13 | "args": [], 14 | "cwd": "${workspaceRoot}", 15 | "stopAtEntry": false, 16 | "launchBrowser": { 17 | "enabled": true, 18 | "args": "${auto-detect-url}", 19 | "windows": { 20 | "command": "cmd.exe", 21 | "args": "/C start ${auto-detect-url}" 22 | }, 23 | "osx": { 24 | "command": "open" 25 | }, 26 | "linux": { 27 | "command": "xdg-open" 28 | } 29 | }, 30 | "env": { 31 | "ASPNETCORE_ENVIRONMENT": "Development" 32 | }, 33 | "sourceFileMap": { 34 | "/Views": "${workspaceRoot}/Views" 35 | } 36 | }, 37 | { 38 | "name": ".NET Core Launch (web)", 39 | "type": "coreclr", 40 | "request": "launch", 41 | "preLaunchTask": "build", 42 | // If you have changed target frameworks, make sure to update the program path. 43 | "program": "${workspaceRoot}/bin/Debug/netcoreapp2.0/test.dll", 44 | "args": [], 45 | "cwd": "${workspaceRoot}", 46 | "stopAtEntry": false, 47 | "internalConsoleOptions": "openOnSessionStart", 48 | "launchBrowser": { 49 | "enabled": true, 50 | "args": "${auto-detect-url}", 51 | "windows": { 52 | "command": "cmd.exe", 53 | "args": "/C start ${auto-detect-url}" 54 | }, 55 | "osx": { 56 | "command": "open" 57 | }, 58 | "linux": { 59 | "command": "xdg-open" 60 | } 61 | }, 62 | "env": { 63 | "ASPNETCORE_ENVIRONMENT": "Development" 64 | }, 65 | "sourceFileMap": { 66 | "/Views": "${workspaceRoot}/Views" 67 | } 68 | }, 69 | { 70 | "name": ".NET Core Attach", 71 | "type": "coreclr", 72 | "request": "attach", 73 | "processId": "${command:pickProcess}" 74 | } 75 | ] 76 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.1.0", 3 | "command": "dotnet", 4 | "isShellCommand": true, 5 | "args": [], 6 | "tasks": [ 7 | { 8 | "taskName": "build", 9 | "args": [ 10 | "${workspaceRoot}/test.csproj" 11 | ], 12 | "isBuildCommand": true, 13 | "problemMatcher": "$msCompile" 14 | } 15 | ] 16 | } -------------------------------------------------------------------------------- /ClientApp/app/app.module.browser.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { AppModuleShared } from './app.module.shared'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | BrowserModule, 10 | AppModuleShared 11 | ], 12 | providers: [ 13 | { provide: 'BASE_URL', useFactory: getBaseUrl } 14 | ] 15 | }) 16 | export class AppModule { 17 | } 18 | 19 | export function getBaseUrl() { 20 | return document.getElementsByTagName('base')[0].href; 21 | } 22 | -------------------------------------------------------------------------------- /ClientApp/app/app.module.server.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.module.shared'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /ClientApp/app/app.module.shared.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { HttpModule } from '@angular/http'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | import { OAuthModule } from 'angular-oauth2-oidc'; 8 | 9 | import { AppComponent } from './components/app/app.component'; 10 | import { NavMenuComponent } from './components/navmenu/navmenu.component'; 11 | import { HomeComponent } from './components/home/home.component'; 12 | import { FetchDataComponent } from './components/fetchdata/fetchdata.component'; 13 | import { CounterComponent } from './components/counter/counter.component'; 14 | 15 | @NgModule({ 16 | declarations: [ 17 | AppComponent, 18 | NavMenuComponent, 19 | CounterComponent, 20 | FetchDataComponent, 21 | HomeComponent 22 | ], 23 | imports: [ 24 | CommonModule, 25 | HttpModule, 26 | FormsModule, 27 | OAuthModule.forRoot(), 28 | RouterModule.forRoot([ 29 | { path: '', redirectTo: 'home', pathMatch: 'full' }, 30 | { path: 'home', component: HomeComponent }, 31 | { path: 'counter', component: CounterComponent }, 32 | { path: 'fetch-data', component: FetchDataComponent }, 33 | { path: '**', redirectTo: 'home' } 34 | ]) 35 | ] 36 | }) 37 | export class AppModuleShared { 38 | } 39 | -------------------------------------------------------------------------------- /ClientApp/app/auth.config.ts: -------------------------------------------------------------------------------- 1 | import { AuthConfig } from 'angular-oauth2-oidc'; 2 | 3 | export const authConfig: AuthConfig = { 4 | 5 | // Url of the Identity Provider 6 | issuer: 'http://localhost:8080/auth/realms/test', 7 | 8 | // URL of the SPA to redirect the user to after login 9 | redirectUri: window.location.origin, 10 | 11 | // The SPA's id. The SPA is registerd with this id at the auth-server 12 | clientId: 'demo-app', 13 | 14 | // set the scope for the permissions the client should request 15 | // The first three are defined by OIDC. The 4th is a usecase-specific one 16 | scope: 'openid profile email', 17 | 18 | // Remove the requirement of using Https to simplify the demo 19 | // THIS SHOULD NOT BE USED IN PRODUCTION, USE A CERTIFICATE FOR YOUR IDP 20 | // IN PRODUCTION 21 | requireHttps: false 22 | } -------------------------------------------------------------------------------- /ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { OAuthService, JwksValidationHandler } from 'angular-oauth2-oidc'; 3 | import { authConfig } from '../../auth.config'; 4 | 5 | @Component({ 6 | selector: 'app', 7 | templateUrl: './app.component.html', 8 | styleUrls: ['./app.component.css'] 9 | }) 10 | export class AppComponent { 11 | constructor(private oauthService: OAuthService) { 12 | this.oauthService.configure(authConfig); 13 | this.oauthService.tokenValidationHandler = new JwksValidationHandler(); 14 | this.oauthService.loadDiscoveryDocumentAndTryLogin(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /ClientApp/app/components/counter/counter.component.spec.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { assert } from 'chai'; 3 | import { CounterComponent } from './counter.component'; 4 | import { TestBed, async, ComponentFixture } from '@angular/core/testing'; 5 | 6 | let fixture: ComponentFixture; 7 | 8 | describe('Counter component', () => { 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ declarations: [CounterComponent] }); 11 | fixture = TestBed.createComponent(CounterComponent); 12 | fixture.detectChanges(); 13 | }); 14 | 15 | it('should display a title', async(() => { 16 | const titleText = fixture.nativeElement.querySelector('h1').textContent; 17 | expect(titleText).toEqual('Counter'); 18 | })); 19 | 20 | it('should start with count 0, then increments by 1 when clicked', async(() => { 21 | const countElement = fixture.nativeElement.querySelector('strong'); 22 | expect(countElement.textContent).toEqual('0'); 23 | 24 | const incrementButton = fixture.nativeElement.querySelector('button'); 25 | incrementButton.click(); 26 | fixture.detectChanges(); 27 | expect(countElement.textContent).toEqual('1'); 28 | })); 29 | }); 30 | -------------------------------------------------------------------------------- /ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ClientApp/app/components/fetchdata/fetchdata.component.html: -------------------------------------------------------------------------------- 1 |

Weather forecast

2 | 3 |

This component demonstrates fetching data from the server.

4 | 5 |

Loading...

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
DateTemp. (C)Temp. (F)Summary
{{ forecast.dateFormatted }}{{ forecast.temperatureC }}{{ forecast.temperatureF }}{{ forecast.summary }}
25 | -------------------------------------------------------------------------------- /ClientApp/app/components/fetchdata/fetchdata.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Inject, OnInit } from '@angular/core'; 2 | import { Http, Headers } from '@angular/http'; 3 | import { OAuthService } from 'angular-oauth2-oidc'; 4 | 5 | @Component({ 6 | selector: 'fetchdata', 7 | templateUrl: './fetchdata.component.html' 8 | }) 9 | export class FetchDataComponent implements OnInit { 10 | public forecasts: WeatherForecast[]; 11 | 12 | constructor( 13 | private http: Http, 14 | @Inject('BASE_URL') private baseUrl: string, 15 | private oauthService: OAuthService) { } 16 | 17 | ngOnInit(): void { 18 | var headers = new Headers({ 19 | "Authorization": "Bearer " + this.oauthService.getAccessToken() 20 | }); 21 | 22 | this.http.get(this.baseUrl + 'api/SampleData/WeatherForecasts', 23 | { headers: headers }) 24 | .subscribe(result => { 25 | this.forecasts = result.json() as WeatherForecast[]; 26 | }, error => console.error(error)); 27 | } 28 | } 29 | 30 | interface WeatherForecast { 31 | dateFormatted: string; 32 | temperatureC: number; 33 | temperatureF: number; 34 | summary: string; 35 | } 36 | -------------------------------------------------------------------------------- /ClientApp/app/components/home/home.component.html: -------------------------------------------------------------------------------- 1 |

Hello, world!

2 |

Welcome to your new single-page application, built with:

3 | 9 |

To help you get started, we've also set up:

10 | 17 | -------------------------------------------------------------------------------- /ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /ClientApp/app/components/navmenu/navmenu.component.css: -------------------------------------------------------------------------------- 1 | li .glyphicon { 2 | margin-right: 10px; 3 | } 4 | 5 | /* Highlighting rules for nav menu items */ 6 | li.link-active a, 7 | li.link-active a:hover, 8 | li.link-active a:focus { 9 | background-color: #4189C7; 10 | color: white; 11 | } 12 | 13 | /* Keep the nav menu independent of scrolling and on top of other items */ 14 | .main-nav { 15 | position: fixed; 16 | top: 0; 17 | left: 0; 18 | right: 0; 19 | z-index: 1; 20 | } 21 | 22 | @media (min-width: 768px) { 23 | /* On small screens, convert the nav menu to a vertical sidebar */ 24 | .main-nav { 25 | height: 100%; 26 | width: calc(25% - 20px); 27 | } 28 | .navbar { 29 | border-radius: 0px; 30 | border-width: 0px; 31 | height: 100%; 32 | } 33 | .navbar-header { 34 | float: none; 35 | } 36 | .navbar-collapse { 37 | border-top: 1px solid #444; 38 | padding: 0px; 39 | } 40 | .navbar ul { 41 | float: none; 42 | } 43 | .navbar li { 44 | float: none; 45 | font-size: 15px; 46 | margin: 6px; 47 | } 48 | .navbar li a { 49 | padding: 10px 16px; 50 | border-radius: 4px; 51 | } 52 | .navbar a { 53 | /* If a menu item's text is too long, truncate it */ 54 | width: 100%; 55 | white-space: nowrap; 56 | overflow: hidden; 57 | text-overflow: ellipsis; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ClientApp/app/components/navmenu/navmenu.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { OAuthService } from 'angular-oauth2-oidc'; 3 | 4 | @Component({ 5 | selector: 'nav-menu', 6 | templateUrl: './navmenu.component.html', 7 | styleUrls: ['./navmenu.component.css'] 8 | }) 9 | export class NavMenuComponent { 10 | 11 | constructor(private oauthService: OAuthService) { } 12 | 13 | login(){ 14 | this.oauthService.initImplicitFlow(); 15 | } 16 | 17 | logout(){ 18 | this.oauthService.logOut(); 19 | } 20 | 21 | get givenName() { 22 | let claims = this.oauthService.getIdentityClaims() as any; 23 | if(!claims) return null; 24 | 25 | return claims.given_name; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ClientApp/boot.browser.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import 'zone.js'; 3 | import 'bootstrap'; 4 | import { enableProdMode } from '@angular/core'; 5 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 6 | import { AppModule } from './app/app.module.browser'; 7 | 8 | if (module.hot) { 9 | module.hot.accept(); 10 | module.hot.dispose(() => { 11 | // Before restarting the app, we create a new root element and dispose the old one 12 | const oldRootElem = document.querySelector('app'); 13 | const newRootElem = document.createElement('app'); 14 | oldRootElem!.parentNode!.insertBefore(newRootElem, oldRootElem); 15 | modulePromise.then(appModule => appModule.destroy()); 16 | }); 17 | } else { 18 | enableProdMode(); 19 | } 20 | 21 | // Note: @ng-tools/webpack looks for the following expression when performing production 22 | // builds. Don't change how this line looks, otherwise you may break tree-shaking. 23 | const modulePromise = platformBrowserDynamic().bootstrapModule(AppModule); 24 | -------------------------------------------------------------------------------- /ClientApp/boot.server.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import 'zone.js'; 3 | import 'rxjs/add/operator/first'; 4 | import { APP_BASE_HREF } from '@angular/common'; 5 | import { enableProdMode, ApplicationRef, NgZone, ValueProvider } from '@angular/core'; 6 | import { platformDynamicServer, PlatformState, INITIAL_CONFIG } from '@angular/platform-server'; 7 | import { createServerRenderer, RenderResult } from 'aspnet-prerendering'; 8 | import { AppModule } from './app/app.module.server'; 9 | 10 | enableProdMode(); 11 | 12 | export default createServerRenderer(params => { 13 | const providers = [ 14 | { provide: INITIAL_CONFIG, useValue: { document: '', url: params.url } }, 15 | { provide: APP_BASE_HREF, useValue: params.baseUrl }, 16 | { provide: 'BASE_URL', useValue: params.origin + params.baseUrl }, 17 | ]; 18 | 19 | return platformDynamicServer(providers).bootstrapModule(AppModule).then(moduleRef => { 20 | const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef); 21 | const state = moduleRef.injector.get(PlatformState); 22 | const zone = moduleRef.injector.get(NgZone); 23 | 24 | return new Promise((resolve, reject) => { 25 | zone.onError.subscribe((errorInfo: any) => reject(errorInfo)); 26 | appRef.isStable.first(isStable => isStable).subscribe(() => { 27 | // Because 'onStable' fires before 'onError', we have to delay slightly before 28 | // completing the request in case there's an error to report 29 | setImmediate(() => { 30 | resolve({ 31 | html: state.renderToString() 32 | }); 33 | moduleRef.destroy(); 34 | }); 35 | }); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /ClientApp/test/boot-tests.ts: -------------------------------------------------------------------------------- 1 | // Load required polyfills and testing libraries 2 | import 'reflect-metadata'; 3 | import 'zone.js'; 4 | import 'zone.js/dist/long-stack-trace-zone'; 5 | import 'zone.js/dist/proxy.js'; 6 | import 'zone.js/dist/sync-test'; 7 | import 'zone.js/dist/jasmine-patch'; 8 | import 'zone.js/dist/async-test'; 9 | import 'zone.js/dist/fake-async-test'; 10 | import * as testing from '@angular/core/testing'; 11 | import * as testingBrowser from '@angular/platform-browser-dynamic/testing'; 12 | 13 | // There's no typing for the `__karma__` variable. Just declare it as any 14 | declare var __karma__: any; 15 | declare var require: any; 16 | 17 | // Prevent Karma from running prematurely 18 | __karma__.loaded = function () {}; 19 | 20 | // First, initialize the Angular testing environment 21 | testing.getTestBed().initTestEnvironment( 22 | testingBrowser.BrowserDynamicTestingModule, 23 | testingBrowser.platformBrowserDynamicTesting() 24 | ); 25 | 26 | // Then we find all the tests 27 | const context = require.context('../', true, /\.spec\.ts$/); 28 | 29 | // And load the modules 30 | context.keys().map(context); 31 | 32 | // Finally, start Karma to run the tests 33 | __karma__.start(); 34 | -------------------------------------------------------------------------------- /ClientApp/test/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/0.13/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '.', 7 | frameworks: ['jasmine'], 8 | files: [ 9 | '../../wwwroot/dist/vendor.js', 10 | './boot-tests.ts' 11 | ], 12 | preprocessors: { 13 | './boot-tests.ts': ['webpack'] 14 | }, 15 | reporters: ['progress'], 16 | port: 9876, 17 | colors: true, 18 | logLevel: config.LOG_INFO, 19 | autoWatch: true, 20 | browsers: ['Chrome'], 21 | mime: { 'application/javascript': ['ts','tsx'] }, 22 | singleRun: false, 23 | webpack: require('../../webpack.config.js')().filter(config => config.target !== 'node'), // Test against client bundle, because tests run in a browser 24 | webpackMiddleware: { stats: 'errors-only' } 25 | }); 26 | }; 27 | -------------------------------------------------------------------------------- /Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore.Mvc; 7 | 8 | namespace test.Controllers 9 | { 10 | public class HomeController : Controller 11 | { 12 | public IActionResult Index() 13 | { 14 | return View(); 15 | } 16 | 17 | public IActionResult Error() 18 | { 19 | ViewData["RequestId"] = Activity.Current?.Id ?? HttpContext.TraceIdentifier; 20 | return View(); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Controllers/SampleDataController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Authorization; 6 | using Microsoft.AspNetCore.Mvc; 7 | 8 | namespace test.Controllers 9 | { 10 | [Authorize] 11 | [Route("api/[controller]")] 12 | public class SampleDataController : Controller 13 | { 14 | private static string[] Summaries = new[] 15 | { 16 | "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" 17 | }; 18 | 19 | [HttpGet("[action]")] 20 | public IEnumerable WeatherForecasts() 21 | { 22 | var rng = new Random(); 23 | return Enumerable.Range(1, 5).Select(index => new WeatherForecast 24 | { 25 | DateFormatted = DateTime.Now.AddDays(index).ToString("d"), 26 | TemperatureC = rng.Next(-20, 55), 27 | Summary = Summaries[rng.Next(Summaries.Length)] 28 | }); 29 | } 30 | 31 | [HttpGet("authorization")] 32 | [Authorize(Roles = "Administrators")] 33 | public string TestAuthorization() 34 | { 35 | return "Authorization is working!"; 36 | } 37 | 38 | public class WeatherForecast 39 | { 40 | public string DateFormatted { get; set; } 41 | public int TemperatureC { get; set; } 42 | public string Summary { get; set; } 43 | 44 | public int TemperatureF 45 | { 46 | get 47 | { 48 | return 32 + (int)(TemperatureC / 0.5556); 49 | } 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Xavier Hahn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.Extensions.Configuration; 9 | using Microsoft.Extensions.Logging; 10 | 11 | namespace test 12 | { 13 | public class Program 14 | { 15 | public static void Main(string[] args) 16 | { 17 | BuildWebHost(args).Run(); 18 | } 19 | 20 | public static IWebHost BuildWebHost(string[] args) => 21 | WebHost.CreateDefaultBuilder(args) 22 | .UseStartup() 23 | .Build(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sample .Net Core Angular Keycloak 2 | A sample single page app using Angular that allows users authentication through the use of Keycloak as an identity provider. 3 | It is linked to an article I wrote on the subject. 4 | 5 | The base of the project is the default .Net Core 2.0 Angular template. 6 | 7 | -------------------------------------------------------------------------------- /Startup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Authentication.JwtBearer; 6 | using Microsoft.AspNetCore.Builder; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.AspNetCore.Http; 9 | using Microsoft.AspNetCore.SpaServices.Webpack; 10 | using Microsoft.Extensions.Configuration; 11 | using Microsoft.Extensions.DependencyInjection; 12 | 13 | namespace test 14 | { 15 | public class Startup 16 | { 17 | public Startup(IHostingEnvironment env, IConfiguration configuration) 18 | { 19 | Configuration = configuration; 20 | Environment = env; 21 | } 22 | 23 | public IConfiguration Configuration { get; } 24 | public IHostingEnvironment Environment { get; } 25 | 26 | // This method gets called by the runtime. Use this method to add services to the container. 27 | public void ConfigureServices(IServiceCollection services) 28 | { 29 | services.AddMvc(); 30 | 31 | services.AddAuthentication(options => 32 | { 33 | options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; 34 | options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; 35 | 36 | }).AddJwtBearer(o => 37 | { 38 | o.Authority = Configuration["Jwt:Authority"]; 39 | o.Audience = Configuration["Jwt:Audience"]; 40 | o.RequireHttpsMetadata = false; 41 | 42 | o.Events = new JwtBearerEvents() 43 | { 44 | OnAuthenticationFailed = c => 45 | { 46 | c.NoResult(); 47 | 48 | c.Response.StatusCode = 500; 49 | c.Response.ContentType = "text/plain"; 50 | 51 | if (Environment.IsDevelopment()) 52 | { 53 | return c.Response.WriteAsync(c.Exception.ToString()); 54 | } 55 | 56 | return c.Response.WriteAsync("An error occured processing your authentication."); 57 | } 58 | }; 59 | }); 60 | 61 | services.AddAuthorization(options => 62 | { 63 | options.AddPolicy("Administrator", policy => policy.RequireClaim("user_roles", "[Administrator]")); 64 | }); 65 | } 66 | 67 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 68 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 69 | { 70 | if (env.IsDevelopment()) 71 | { 72 | app.UseDeveloperExceptionPage(); 73 | app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions 74 | { 75 | HotModuleReplacement = true 76 | }); 77 | } 78 | else 79 | { 80 | app.UseExceptionHandler("/Home/Error"); 81 | } 82 | 83 | app.UseStaticFiles(); 84 | 85 | app.UseAuthentication(); 86 | 87 | app.UseMvc(routes => 88 | { 89 | routes.MapRoute( 90 | name: "default", 91 | template: "{controller=Home}/{action=Index}/{id?}"); 92 | 93 | routes.MapSpaFallbackRoute( 94 | name: "spa-fallback", 95 | defaults: new { controller = "Home", action = "Index" }); 96 | }); 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | 8 | @if (!string.IsNullOrEmpty((string)ViewData["RequestId"])) 9 | { 10 |

11 | Request ID: @ViewData["RequestId"] 12 |

13 | } 14 | 15 |

Development Mode

16 |

17 | Swapping to Development environment will display more detailed information about the error that occurred. 18 |

19 |

20 | Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. 21 |

22 | -------------------------------------------------------------------------------- /Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - test 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using test 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "Debug": { 5 | "LogLevel": { 6 | "Default": "Debug", 7 | "System": "Information", 8 | "Microsoft": "Information" 9 | } 10 | }, 11 | "Console": { 12 | "LogLevel": { 13 | "Default": "Debug", 14 | "System": "Information", 15 | "Microsoft": "Information" 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Jwt":{ 3 | "Authority": "http://localhost:8080/auth/realms/test", 4 | "Audience": "demo-app" 5 | }, 6 | "Logging": { 7 | "IncludeScopes": false, 8 | "Debug": { 9 | "LogLevel": { 10 | "Default": "Warning" 11 | } 12 | }, 13 | "Console": { 14 | "LogLevel": { 15 | "Default": "Warning" 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "@angular/animations": { 6 | "version": "4.2.5", 7 | "from": "@angular/animations@4.2.5", 8 | "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.2.5.tgz" 9 | }, 10 | "@angular/common": { 11 | "version": "4.2.5", 12 | "from": "@angular/common@4.2.5", 13 | "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.2.5.tgz" 14 | }, 15 | "@angular/compiler": { 16 | "version": "4.2.5", 17 | "from": "@angular/compiler@4.2.5", 18 | "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.2.5.tgz" 19 | }, 20 | "@angular/compiler-cli": { 21 | "version": "4.2.5", 22 | "from": "@angular/compiler-cli@latest", 23 | "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.2.5.tgz", 24 | "dependencies": { 25 | "minimist": { 26 | "version": "1.2.0", 27 | "from": "minimist@>=1.2.0 <2.0.0", 28 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" 29 | } 30 | } 31 | }, 32 | "@angular/core": { 33 | "version": "4.2.5", 34 | "from": "@angular/core@4.2.5", 35 | "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.2.5.tgz" 36 | }, 37 | "@angular/forms": { 38 | "version": "4.2.5", 39 | "from": "@angular/forms@4.2.5", 40 | "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.2.5.tgz" 41 | }, 42 | "@angular/http": { 43 | "version": "4.2.5", 44 | "from": "@angular/http@4.2.5", 45 | "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.2.5.tgz" 46 | }, 47 | "@angular/platform-browser": { 48 | "version": "4.2.5", 49 | "from": "@angular/platform-browser@4.2.5", 50 | "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.2.5.tgz" 51 | }, 52 | "@angular/platform-browser-dynamic": { 53 | "version": "4.2.5", 54 | "from": "@angular/platform-browser-dynamic@4.2.5", 55 | "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.5.tgz" 56 | }, 57 | "@angular/platform-server": { 58 | "version": "4.2.5", 59 | "from": "@angular/platform-server@4.2.5", 60 | "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.2.5.tgz" 61 | }, 62 | "@angular/router": { 63 | "version": "4.2.5", 64 | "from": "@angular/router@4.2.5", 65 | "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.2.5.tgz" 66 | }, 67 | "@angular/tsc-wrapped": { 68 | "version": "4.2.5", 69 | "from": "@angular/tsc-wrapped@4.2.5", 70 | "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.2.5.tgz" 71 | }, 72 | "@ngtools/webpack": { 73 | "version": "1.5.0", 74 | "from": "@ngtools/webpack@latest", 75 | "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.5.0.tgz", 76 | "dependencies": { 77 | "loader-utils": { 78 | "version": "1.1.0", 79 | "from": "loader-utils@>=1.0.2 <2.0.0", 80 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 81 | } 82 | } 83 | }, 84 | "@types/chai": { 85 | "version": "4.0.1", 86 | "from": "@types/chai@4.0.1", 87 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.0.1.tgz", 88 | "dev": true 89 | }, 90 | "@types/jasmine": { 91 | "version": "2.5.53", 92 | "from": "@types/jasmine@2.5.53", 93 | "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz", 94 | "dev": true 95 | }, 96 | "@types/webpack-env": { 97 | "version": "1.13.0", 98 | "from": "@types/webpack-env@1.13.0", 99 | "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.0.tgz" 100 | }, 101 | "accepts": { 102 | "version": "1.3.3", 103 | "from": "accepts@1.3.3", 104 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", 105 | "dev": true 106 | }, 107 | "acorn": { 108 | "version": "5.1.1", 109 | "from": "acorn@>=5.0.0 <6.0.0", 110 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz" 111 | }, 112 | "acorn-dynamic-import": { 113 | "version": "2.0.2", 114 | "from": "acorn-dynamic-import@>=2.0.0 <3.0.0", 115 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", 116 | "dependencies": { 117 | "acorn": { 118 | "version": "4.0.13", 119 | "from": "acorn@>=4.0.3 <5.0.0", 120 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" 121 | } 122 | } 123 | }, 124 | "after": { 125 | "version": "0.8.2", 126 | "from": "after@0.8.2", 127 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 128 | "dev": true 129 | }, 130 | "ajv": { 131 | "version": "5.2.0", 132 | "from": "ajv@>=5.0.0 <6.0.0", 133 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz" 134 | }, 135 | "ajv-keywords": { 136 | "version": "1.5.1", 137 | "from": "ajv-keywords@>=1.1.1 <2.0.0", 138 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz" 139 | }, 140 | "align-text": { 141 | "version": "0.1.4", 142 | "from": "align-text@>=0.1.3 <0.2.0", 143 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 144 | "dependencies": { 145 | "kind-of": { 146 | "version": "3.2.2", 147 | "from": "kind-of@>=3.0.2 <4.0.0", 148 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 149 | } 150 | } 151 | }, 152 | "alphanum-sort": { 153 | "version": "1.0.2", 154 | "from": "alphanum-sort@>=1.0.1 <2.0.0", 155 | "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" 156 | }, 157 | "amdefine": { 158 | "version": "1.0.1", 159 | "from": "amdefine@>=0.0.4", 160 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" 161 | }, 162 | "angular-oauth2-oidc": { 163 | "version": "2.1.3", 164 | "from": "angular-oauth2-oidc@latest", 165 | "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-2.1.3.tgz" 166 | }, 167 | "angular2-template-loader": { 168 | "version": "0.6.2", 169 | "from": "angular2-template-loader@0.6.2", 170 | "resolved": "https://registry.npmjs.org/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz" 171 | }, 172 | "ansi-html": { 173 | "version": "0.0.7", 174 | "from": "ansi-html@0.0.7", 175 | "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" 176 | }, 177 | "ansi-regex": { 178 | "version": "2.1.1", 179 | "from": "ansi-regex@>=2.0.0 <3.0.0", 180 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 181 | }, 182 | "ansi-styles": { 183 | "version": "2.2.1", 184 | "from": "ansi-styles@>=2.2.1 <3.0.0", 185 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" 186 | }, 187 | "anymatch": { 188 | "version": "1.3.0", 189 | "from": "anymatch@>=1.3.0 <2.0.0", 190 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", 191 | "dependencies": { 192 | "arr-diff": { 193 | "version": "2.0.0", 194 | "from": "arr-diff@>=2.0.0 <3.0.0", 195 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" 196 | }, 197 | "array-unique": { 198 | "version": "0.2.1", 199 | "from": "array-unique@>=0.2.1 <0.3.0", 200 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" 201 | }, 202 | "braces": { 203 | "version": "1.8.5", 204 | "from": "braces@>=1.8.2 <2.0.0", 205 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" 206 | }, 207 | "expand-brackets": { 208 | "version": "0.1.5", 209 | "from": "expand-brackets@>=0.1.4 <0.2.0", 210 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" 211 | }, 212 | "extglob": { 213 | "version": "0.3.2", 214 | "from": "extglob@>=0.3.1 <0.4.0", 215 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" 216 | }, 217 | "is-extglob": { 218 | "version": "1.0.0", 219 | "from": "is-extglob@>=1.0.0 <2.0.0", 220 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 221 | }, 222 | "kind-of": { 223 | "version": "3.2.2", 224 | "from": "kind-of@>=3.0.2 <4.0.0", 225 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 226 | }, 227 | "micromatch": { 228 | "version": "2.3.11", 229 | "from": "micromatch@>=2.1.5 <3.0.0", 230 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" 231 | } 232 | } 233 | }, 234 | "argparse": { 235 | "version": "1.0.9", 236 | "from": "argparse@>=1.0.7 <2.0.0", 237 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz" 238 | }, 239 | "arr-diff": { 240 | "version": "4.0.0", 241 | "from": "arr-diff@>=4.0.0 <5.0.0", 242 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" 243 | }, 244 | "arr-flatten": { 245 | "version": "1.1.0", 246 | "from": "arr-flatten@>=1.0.3 <2.0.0", 247 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" 248 | }, 249 | "arr-union": { 250 | "version": "3.1.0", 251 | "from": "arr-union@>=3.1.0 <4.0.0", 252 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" 253 | }, 254 | "array-slice": { 255 | "version": "0.2.3", 256 | "from": "array-slice@>=0.2.3 <0.3.0", 257 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", 258 | "dev": true 259 | }, 260 | "array-unique": { 261 | "version": "0.3.2", 262 | "from": "array-unique@>=0.3.2 <0.4.0", 263 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" 264 | }, 265 | "arraybuffer.slice": { 266 | "version": "0.0.6", 267 | "from": "arraybuffer.slice@0.0.6", 268 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", 269 | "dev": true 270 | }, 271 | "arrify": { 272 | "version": "1.0.1", 273 | "from": "arrify@>=1.0.0 <2.0.0", 274 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" 275 | }, 276 | "asn1.js": { 277 | "version": "4.9.1", 278 | "from": "asn1.js@>=4.0.0 <5.0.0", 279 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz" 280 | }, 281 | "aspnet-prerendering": { 282 | "version": "3.0.1", 283 | "from": "aspnet-prerendering@3.0.1", 284 | "resolved": "https://registry.npmjs.org/aspnet-prerendering/-/aspnet-prerendering-3.0.1.tgz" 285 | }, 286 | "aspnet-webpack": { 287 | "version": "2.0.1", 288 | "from": "aspnet-webpack@2.0.1", 289 | "resolved": "https://registry.npmjs.org/aspnet-webpack/-/aspnet-webpack-2.0.1.tgz" 290 | }, 291 | "assert": { 292 | "version": "1.4.1", 293 | "from": "assert@>=1.1.1 <2.0.0", 294 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz" 295 | }, 296 | "assertion-error": { 297 | "version": "1.0.2", 298 | "from": "assertion-error@>=1.0.1 <2.0.0", 299 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", 300 | "dev": true 301 | }, 302 | "ast-types": { 303 | "version": "0.9.6", 304 | "from": "ast-types@0.9.6", 305 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz" 306 | }, 307 | "async": { 308 | "version": "2.5.0", 309 | "from": "async@>=2.1.2 <3.0.0", 310 | "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz" 311 | }, 312 | "async-each": { 313 | "version": "1.0.1", 314 | "from": "async-each@>=1.0.0 <2.0.0", 315 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz" 316 | }, 317 | "atob": { 318 | "version": "2.0.3", 319 | "from": "atob@>=2.0.0 <3.0.0", 320 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz" 321 | }, 322 | "autoprefixer": { 323 | "version": "6.7.7", 324 | "from": "autoprefixer@>=6.3.1 <7.0.0", 325 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz" 326 | }, 327 | "awesome-typescript-loader": { 328 | "version": "3.2.1", 329 | "from": "awesome-typescript-loader@3.2.1", 330 | "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.2.1.tgz", 331 | "dependencies": { 332 | "loader-utils": { 333 | "version": "1.1.0", 334 | "from": "loader-utils@>=1.1.0 <2.0.0", 335 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 336 | } 337 | } 338 | }, 339 | "babel-code-frame": { 340 | "version": "6.22.0", 341 | "from": "babel-code-frame@>=6.11.0 <7.0.0", 342 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz" 343 | }, 344 | "backo2": { 345 | "version": "1.0.2", 346 | "from": "backo2@1.0.2", 347 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 348 | "dev": true 349 | }, 350 | "balanced-match": { 351 | "version": "0.4.2", 352 | "from": "balanced-match@>=0.4.2 <0.5.0", 353 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" 354 | }, 355 | "base": { 356 | "version": "0.11.1", 357 | "from": "base@>=0.11.1 <0.12.0", 358 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.1.tgz", 359 | "dependencies": { 360 | "define-property": { 361 | "version": "0.2.5", 362 | "from": "define-property@>=0.2.5 <0.3.0", 363 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 364 | }, 365 | "is-descriptor": { 366 | "version": "0.1.5", 367 | "from": "is-descriptor@>=0.1.0 <0.2.0", 368 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 369 | }, 370 | "isobject": { 371 | "version": "2.1.0", 372 | "from": "isobject@>=2.1.0 <3.0.0", 373 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 374 | }, 375 | "kind-of": { 376 | "version": "3.2.2", 377 | "from": "kind-of@>=3.0.2 <4.0.0", 378 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 379 | } 380 | } 381 | }, 382 | "base64-arraybuffer": { 383 | "version": "0.1.5", 384 | "from": "base64-arraybuffer@0.1.5", 385 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 386 | "dev": true 387 | }, 388 | "base64-js": { 389 | "version": "1.2.1", 390 | "from": "base64-js@>=1.0.2 <2.0.0", 391 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz" 392 | }, 393 | "base64id": { 394 | "version": "1.0.0", 395 | "from": "base64id@1.0.0", 396 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", 397 | "dev": true 398 | }, 399 | "better-assert": { 400 | "version": "1.0.2", 401 | "from": "better-assert@>=1.0.0 <1.1.0", 402 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 403 | "dev": true 404 | }, 405 | "big.js": { 406 | "version": "3.1.3", 407 | "from": "big.js@>=3.1.3 <4.0.0", 408 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" 409 | }, 410 | "binary-extensions": { 411 | "version": "1.8.0", 412 | "from": "binary-extensions@>=1.0.0 <2.0.0", 413 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz" 414 | }, 415 | "blob": { 416 | "version": "0.0.4", 417 | "from": "blob@0.0.4", 418 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", 419 | "dev": true 420 | }, 421 | "bluebird": { 422 | "version": "3.5.0", 423 | "from": "bluebird@>=3.3.0 <4.0.0", 424 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 425 | "dev": true 426 | }, 427 | "bn.js": { 428 | "version": "4.11.7", 429 | "from": "bn.js@>=4.1.1 <5.0.0", 430 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz" 431 | }, 432 | "body-parser": { 433 | "version": "1.17.2", 434 | "from": "body-parser@>=1.16.1 <2.0.0", 435 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", 436 | "dev": true, 437 | "dependencies": { 438 | "iconv-lite": { 439 | "version": "0.4.15", 440 | "from": "iconv-lite@0.4.15", 441 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", 442 | "dev": true 443 | } 444 | } 445 | }, 446 | "bootstrap": { 447 | "version": "3.3.7", 448 | "from": "bootstrap@3.3.7", 449 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz" 450 | }, 451 | "brace-expansion": { 452 | "version": "1.1.8", 453 | "from": "brace-expansion@>=1.1.7 <2.0.0", 454 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 455 | "dependencies": { 456 | "balanced-match": { 457 | "version": "1.0.0", 458 | "from": "balanced-match@>=1.0.0 <2.0.0", 459 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" 460 | } 461 | } 462 | }, 463 | "braces": { 464 | "version": "2.2.2", 465 | "from": "braces@>=2.2.2 <3.0.0", 466 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.2.2.tgz" 467 | }, 468 | "brorand": { 469 | "version": "1.1.0", 470 | "from": "brorand@>=1.0.1 <2.0.0", 471 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" 472 | }, 473 | "browserify-aes": { 474 | "version": "1.0.6", 475 | "from": "browserify-aes@>=1.0.4 <2.0.0", 476 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz" 477 | }, 478 | "browserify-cipher": { 479 | "version": "1.0.0", 480 | "from": "browserify-cipher@>=1.0.0 <2.0.0", 481 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz" 482 | }, 483 | "browserify-des": { 484 | "version": "1.0.0", 485 | "from": "browserify-des@>=1.0.0 <2.0.0", 486 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz" 487 | }, 488 | "browserify-rsa": { 489 | "version": "4.0.1", 490 | "from": "browserify-rsa@>=4.0.0 <5.0.0", 491 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" 492 | }, 493 | "browserify-sign": { 494 | "version": "4.0.4", 495 | "from": "browserify-sign@>=4.0.0 <5.0.0", 496 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz" 497 | }, 498 | "browserify-zlib": { 499 | "version": "0.1.4", 500 | "from": "browserify-zlib@>=0.1.4 <0.2.0", 501 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz" 502 | }, 503 | "browserslist": { 504 | "version": "1.7.7", 505 | "from": "browserslist@>=1.7.6 <2.0.0", 506 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz" 507 | }, 508 | "buffer": { 509 | "version": "4.9.1", 510 | "from": "buffer@>=4.3.0 <5.0.0", 511 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz" 512 | }, 513 | "buffer-xor": { 514 | "version": "1.0.3", 515 | "from": "buffer-xor@>=1.0.2 <2.0.0", 516 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" 517 | }, 518 | "builtin-modules": { 519 | "version": "1.1.1", 520 | "from": "builtin-modules@>=1.0.0 <2.0.0", 521 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" 522 | }, 523 | "builtin-status-codes": { 524 | "version": "3.0.0", 525 | "from": "builtin-status-codes@>=3.0.0 <4.0.0", 526 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" 527 | }, 528 | "bytes": { 529 | "version": "2.4.0", 530 | "from": "bytes@2.4.0", 531 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", 532 | "dev": true 533 | }, 534 | "cache-base": { 535 | "version": "0.8.5", 536 | "from": "cache-base@>=0.8.4 <0.9.0", 537 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz" 538 | }, 539 | "callsite": { 540 | "version": "1.0.0", 541 | "from": "callsite@1.0.0", 542 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 543 | "dev": true 544 | }, 545 | "camel-case": { 546 | "version": "3.0.0", 547 | "from": "camel-case@>=3.0.0 <3.1.0", 548 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" 549 | }, 550 | "camelcase": { 551 | "version": "1.2.1", 552 | "from": "camelcase@>=1.0.2 <2.0.0", 553 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" 554 | }, 555 | "caniuse-api": { 556 | "version": "1.6.1", 557 | "from": "caniuse-api@>=1.5.2 <2.0.0", 558 | "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz" 559 | }, 560 | "caniuse-db": { 561 | "version": "1.0.30000697", 562 | "from": "caniuse-db@>=1.0.30000634 <2.0.0", 563 | "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000697.tgz" 564 | }, 565 | "center-align": { 566 | "version": "0.1.3", 567 | "from": "center-align@>=0.1.1 <0.2.0", 568 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 569 | "dependencies": { 570 | "lazy-cache": { 571 | "version": "1.0.4", 572 | "from": "lazy-cache@>=1.0.3 <2.0.0", 573 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" 574 | } 575 | } 576 | }, 577 | "chai": { 578 | "version": "4.0.2", 579 | "from": "chai@4.0.2", 580 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.0.2.tgz", 581 | "dev": true 582 | }, 583 | "chalk": { 584 | "version": "1.1.3", 585 | "from": "chalk@>=1.1.0 <2.0.0", 586 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" 587 | }, 588 | "check-error": { 589 | "version": "1.0.2", 590 | "from": "check-error@>=1.0.1 <2.0.0", 591 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 592 | "dev": true 593 | }, 594 | "chokidar": { 595 | "version": "1.7.0", 596 | "from": "chokidar@>=1.4.3 <2.0.0", 597 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" 598 | }, 599 | "cipher-base": { 600 | "version": "1.0.3", 601 | "from": "cipher-base@>=1.0.0 <2.0.0", 602 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz" 603 | }, 604 | "clap": { 605 | "version": "1.2.0", 606 | "from": "clap@>=1.0.9 <2.0.0", 607 | "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz" 608 | }, 609 | "class-utils": { 610 | "version": "0.3.5", 611 | "from": "class-utils@>=0.3.4 <0.4.0", 612 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.5.tgz", 613 | "dependencies": { 614 | "define-property": { 615 | "version": "0.2.5", 616 | "from": "define-property@>=0.2.5 <0.3.0", 617 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 618 | }, 619 | "is-descriptor": { 620 | "version": "0.1.5", 621 | "from": "is-descriptor@>=0.1.0 <0.2.0", 622 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 623 | }, 624 | "kind-of": { 625 | "version": "3.2.2", 626 | "from": "kind-of@>=3.0.2 <4.0.0", 627 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 628 | } 629 | } 630 | }, 631 | "clean-css": { 632 | "version": "4.1.5", 633 | "from": "clean-css@>=4.1.0 <4.2.0", 634 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.5.tgz" 635 | }, 636 | "cliui": { 637 | "version": "2.1.0", 638 | "from": "cliui@>=2.1.0 <3.0.0", 639 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz" 640 | }, 641 | "clone": { 642 | "version": "1.0.2", 643 | "from": "clone@>=1.0.2 <2.0.0", 644 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" 645 | }, 646 | "co": { 647 | "version": "4.6.0", 648 | "from": "co@>=4.6.0 <5.0.0", 649 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz" 650 | }, 651 | "coa": { 652 | "version": "1.0.3", 653 | "from": "coa@>=1.0.1 <1.1.0", 654 | "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz" 655 | }, 656 | "code-point-at": { 657 | "version": "1.1.0", 658 | "from": "code-point-at@>=1.0.0 <2.0.0", 659 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" 660 | }, 661 | "collection-visit": { 662 | "version": "0.2.3", 663 | "from": "collection-visit@>=0.2.1 <0.3.0", 664 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-0.2.3.tgz" 665 | }, 666 | "color": { 667 | "version": "0.11.4", 668 | "from": "color@>=0.11.0 <0.12.0", 669 | "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz" 670 | }, 671 | "color-convert": { 672 | "version": "1.9.0", 673 | "from": "color-convert@>=1.3.0 <2.0.0", 674 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" 675 | }, 676 | "color-name": { 677 | "version": "1.1.2", 678 | "from": "color-name@>=1.1.1 <2.0.0", 679 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz" 680 | }, 681 | "color-string": { 682 | "version": "0.3.0", 683 | "from": "color-string@>=0.3.0 <0.4.0", 684 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz" 685 | }, 686 | "colormin": { 687 | "version": "1.1.2", 688 | "from": "colormin@>=1.0.5 <2.0.0", 689 | "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz" 690 | }, 691 | "colors": { 692 | "version": "1.1.2", 693 | "from": "colors@>=1.1.2 <2.0.0", 694 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" 695 | }, 696 | "combine-lists": { 697 | "version": "1.0.1", 698 | "from": "combine-lists@>=1.0.0 <2.0.0", 699 | "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", 700 | "dev": true 701 | }, 702 | "commander": { 703 | "version": "2.9.0", 704 | "from": "commander@>=2.9.0 <2.10.0", 705 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" 706 | }, 707 | "component-bind": { 708 | "version": "1.0.0", 709 | "from": "component-bind@1.0.0", 710 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 711 | "dev": true 712 | }, 713 | "component-emitter": { 714 | "version": "1.2.1", 715 | "from": "component-emitter@>=1.2.1 <2.0.0", 716 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz" 717 | }, 718 | "component-inherit": { 719 | "version": "0.0.3", 720 | "from": "component-inherit@0.0.3", 721 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", 722 | "dev": true 723 | }, 724 | "concat-map": { 725 | "version": "0.0.1", 726 | "from": "concat-map@0.0.1", 727 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 728 | }, 729 | "connect": { 730 | "version": "3.6.2", 731 | "from": "connect@>=3.4.1 <4.0.0", 732 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz" 733 | }, 734 | "console-browserify": { 735 | "version": "1.1.0", 736 | "from": "console-browserify@>=1.1.0 <2.0.0", 737 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz" 738 | }, 739 | "constants-browserify": { 740 | "version": "1.0.0", 741 | "from": "constants-browserify@>=1.0.0 <2.0.0", 742 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" 743 | }, 744 | "content-type": { 745 | "version": "1.0.2", 746 | "from": "content-type@>=1.0.2 <1.1.0", 747 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", 748 | "dev": true 749 | }, 750 | "cookie": { 751 | "version": "0.3.1", 752 | "from": "cookie@0.3.1", 753 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 754 | "dev": true 755 | }, 756 | "copy-descriptor": { 757 | "version": "0.1.1", 758 | "from": "copy-descriptor@>=0.1.0 <0.2.0", 759 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" 760 | }, 761 | "core-js": { 762 | "version": "2.4.1", 763 | "from": "core-js@>=2.2.0 <3.0.0", 764 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", 765 | "dev": true 766 | }, 767 | "core-util-is": { 768 | "version": "1.0.2", 769 | "from": "core-util-is@>=1.0.0 <1.1.0", 770 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 771 | }, 772 | "create-ecdh": { 773 | "version": "4.0.0", 774 | "from": "create-ecdh@>=4.0.0 <5.0.0", 775 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz" 776 | }, 777 | "create-hash": { 778 | "version": "1.1.3", 779 | "from": "create-hash@>=1.1.0 <2.0.0", 780 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz" 781 | }, 782 | "create-hmac": { 783 | "version": "1.1.6", 784 | "from": "create-hmac@>=1.1.0 <2.0.0", 785 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz" 786 | }, 787 | "crypto-browserify": { 788 | "version": "3.11.0", 789 | "from": "crypto-browserify@>=3.11.0 <4.0.0", 790 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz" 791 | }, 792 | "css": { 793 | "version": "2.2.1", 794 | "from": "css@2.2.1", 795 | "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", 796 | "dependencies": { 797 | "atob": { 798 | "version": "1.1.3", 799 | "from": "atob@>=1.1.0 <1.2.0", 800 | "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz" 801 | }, 802 | "source-map": { 803 | "version": "0.1.43", 804 | "from": "source-map@>=0.1.38 <0.2.0", 805 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" 806 | }, 807 | "source-map-resolve": { 808 | "version": "0.3.1", 809 | "from": "source-map-resolve@>=0.3.0 <0.4.0", 810 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz" 811 | }, 812 | "source-map-url": { 813 | "version": "0.3.0", 814 | "from": "source-map-url@>=0.3.0 <0.4.0", 815 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz" 816 | } 817 | } 818 | }, 819 | "css-color-names": { 820 | "version": "0.0.4", 821 | "from": "css-color-names@0.0.4", 822 | "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" 823 | }, 824 | "css-loader": { 825 | "version": "0.28.4", 826 | "from": "css-loader@0.28.4", 827 | "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", 828 | "dependencies": { 829 | "loader-utils": { 830 | "version": "1.1.0", 831 | "from": "loader-utils@>=1.0.2 <2.0.0", 832 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 833 | } 834 | } 835 | }, 836 | "css-selector-tokenizer": { 837 | "version": "0.7.0", 838 | "from": "css-selector-tokenizer@>=0.7.0 <0.8.0", 839 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz" 840 | }, 841 | "cssesc": { 842 | "version": "0.1.0", 843 | "from": "cssesc@>=0.1.0 <0.2.0", 844 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz" 845 | }, 846 | "cssnano": { 847 | "version": "3.10.0", 848 | "from": "cssnano@>=2.6.1 <4.0.0", 849 | "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz" 850 | }, 851 | "csso": { 852 | "version": "2.3.2", 853 | "from": "csso@>=2.3.1 <2.4.0", 854 | "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz" 855 | }, 856 | "custom-event": { 857 | "version": "1.0.1", 858 | "from": "custom-event@>=1.0.0 <1.1.0", 859 | "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", 860 | "dev": true 861 | }, 862 | "date-now": { 863 | "version": "0.1.4", 864 | "from": "date-now@>=0.1.4 <0.2.0", 865 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" 866 | }, 867 | "debug": { 868 | "version": "2.6.7", 869 | "from": "debug@2.6.7", 870 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz" 871 | }, 872 | "decamelize": { 873 | "version": "1.2.0", 874 | "from": "decamelize@>=1.1.2 <2.0.0", 875 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" 876 | }, 877 | "deep-eql": { 878 | "version": "2.0.2", 879 | "from": "deep-eql@>=2.0.1 <3.0.0", 880 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", 881 | "dev": true, 882 | "dependencies": { 883 | "type-detect": { 884 | "version": "3.0.0", 885 | "from": "type-detect@>=3.0.0 <4.0.0", 886 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", 887 | "dev": true 888 | } 889 | } 890 | }, 891 | "define-property": { 892 | "version": "1.0.0", 893 | "from": "define-property@>=1.0.0 <2.0.0", 894 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" 895 | }, 896 | "defined": { 897 | "version": "1.0.0", 898 | "from": "defined@>=1.0.0 <2.0.0", 899 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" 900 | }, 901 | "depd": { 902 | "version": "1.1.0", 903 | "from": "depd@>=1.1.0 <1.2.0", 904 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", 905 | "dev": true 906 | }, 907 | "des.js": { 908 | "version": "1.0.0", 909 | "from": "des.js@>=1.0.0 <2.0.0", 910 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz" 911 | }, 912 | "di": { 913 | "version": "0.0.1", 914 | "from": "di@>=0.0.1 <0.0.2", 915 | "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", 916 | "dev": true 917 | }, 918 | "diffie-hellman": { 919 | "version": "5.0.2", 920 | "from": "diffie-hellman@>=5.0.0 <6.0.0", 921 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz" 922 | }, 923 | "dom-serialize": { 924 | "version": "2.2.1", 925 | "from": "dom-serialize@>=2.2.0 <3.0.0", 926 | "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", 927 | "dev": true 928 | }, 929 | "domain-browser": { 930 | "version": "1.1.7", 931 | "from": "domain-browser@>=1.1.1 <2.0.0", 932 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz" 933 | }, 934 | "domain-context": { 935 | "version": "0.5.1", 936 | "from": "domain-context@>=0.5.1 <0.6.0", 937 | "resolved": "https://registry.npmjs.org/domain-context/-/domain-context-0.5.1.tgz" 938 | }, 939 | "domain-task": { 940 | "version": "3.0.3", 941 | "from": "domain-task@>=3.0.0 <4.0.0", 942 | "resolved": "https://registry.npmjs.org/domain-task/-/domain-task-3.0.3.tgz" 943 | }, 944 | "ee-first": { 945 | "version": "1.1.1", 946 | "from": "ee-first@1.1.1", 947 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 948 | }, 949 | "electron-to-chromium": { 950 | "version": "1.3.15", 951 | "from": "electron-to-chromium@>=1.2.7 <2.0.0", 952 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz" 953 | }, 954 | "elliptic": { 955 | "version": "6.4.0", 956 | "from": "elliptic@>=6.0.0 <7.0.0", 957 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz" 958 | }, 959 | "emojis-list": { 960 | "version": "2.1.0", 961 | "from": "emojis-list@>=2.0.0 <3.0.0", 962 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" 963 | }, 964 | "encodeurl": { 965 | "version": "1.0.1", 966 | "from": "encodeurl@>=1.0.1 <1.1.0", 967 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz" 968 | }, 969 | "encoding": { 970 | "version": "0.1.12", 971 | "from": "encoding@>=0.1.11 <0.2.0", 972 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz" 973 | }, 974 | "engine.io": { 975 | "version": "1.8.3", 976 | "from": "engine.io@1.8.3", 977 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", 978 | "dev": true, 979 | "dependencies": { 980 | "debug": { 981 | "version": "2.3.3", 982 | "from": "debug@2.3.3", 983 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 984 | "dev": true 985 | }, 986 | "ms": { 987 | "version": "0.7.2", 988 | "from": "ms@0.7.2", 989 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 990 | "dev": true 991 | } 992 | } 993 | }, 994 | "engine.io-client": { 995 | "version": "1.8.3", 996 | "from": "engine.io-client@1.8.3", 997 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", 998 | "dev": true, 999 | "dependencies": { 1000 | "debug": { 1001 | "version": "2.3.3", 1002 | "from": "debug@2.3.3", 1003 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 1004 | "dev": true 1005 | }, 1006 | "ms": { 1007 | "version": "0.7.2", 1008 | "from": "ms@0.7.2", 1009 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 1010 | "dev": true 1011 | } 1012 | } 1013 | }, 1014 | "engine.io-parser": { 1015 | "version": "1.3.2", 1016 | "from": "engine.io-parser@1.3.2", 1017 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", 1018 | "dev": true 1019 | }, 1020 | "enhanced-resolve": { 1021 | "version": "3.3.0", 1022 | "from": "enhanced-resolve@>=3.1.0 <4.0.0", 1023 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", 1024 | "dependencies": { 1025 | "memory-fs": { 1026 | "version": "0.4.1", 1027 | "from": "memory-fs@>=0.4.0 <0.5.0", 1028 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" 1029 | } 1030 | } 1031 | }, 1032 | "ent": { 1033 | "version": "2.2.0", 1034 | "from": "ent@>=2.2.0 <2.3.0", 1035 | "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", 1036 | "dev": true 1037 | }, 1038 | "errno": { 1039 | "version": "0.1.4", 1040 | "from": "errno@>=0.1.3 <0.2.0", 1041 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz" 1042 | }, 1043 | "error-ex": { 1044 | "version": "1.3.1", 1045 | "from": "error-ex@>=1.2.0 <2.0.0", 1046 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" 1047 | }, 1048 | "es6-promise": { 1049 | "version": "3.3.1", 1050 | "from": "es6-promise@>=3.1.2 <4.0.0", 1051 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" 1052 | }, 1053 | "es6-shim": { 1054 | "version": "0.35.3", 1055 | "from": "es6-shim@0.35.3", 1056 | "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.3.tgz" 1057 | }, 1058 | "es6-templates": { 1059 | "version": "0.2.3", 1060 | "from": "es6-templates@>=0.2.2 <0.3.0", 1061 | "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz" 1062 | }, 1063 | "escape-html": { 1064 | "version": "1.0.3", 1065 | "from": "escape-html@>=1.0.3 <1.1.0", 1066 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 1067 | }, 1068 | "escape-string-regexp": { 1069 | "version": "1.0.5", 1070 | "from": "escape-string-regexp@>=1.0.2 <2.0.0", 1071 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 1072 | }, 1073 | "esprima": { 1074 | "version": "2.7.3", 1075 | "from": "esprima@>=2.6.0 <3.0.0", 1076 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" 1077 | }, 1078 | "esutils": { 1079 | "version": "2.0.2", 1080 | "from": "esutils@>=2.0.2 <3.0.0", 1081 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" 1082 | }, 1083 | "event-source-polyfill": { 1084 | "version": "0.0.9", 1085 | "from": "event-source-polyfill@0.0.9", 1086 | "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-0.0.9.tgz" 1087 | }, 1088 | "eventemitter3": { 1089 | "version": "1.2.0", 1090 | "from": "eventemitter3@>=1.0.0 <2.0.0", 1091 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", 1092 | "dev": true 1093 | }, 1094 | "events": { 1095 | "version": "1.1.1", 1096 | "from": "events@>=1.0.0 <2.0.0", 1097 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz" 1098 | }, 1099 | "evp_bytestokey": { 1100 | "version": "1.0.0", 1101 | "from": "evp_bytestokey@>=1.0.0 <2.0.0", 1102 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" 1103 | }, 1104 | "expand-braces": { 1105 | "version": "0.1.2", 1106 | "from": "expand-braces@>=0.1.1 <0.2.0", 1107 | "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", 1108 | "dev": true, 1109 | "dependencies": { 1110 | "array-unique": { 1111 | "version": "0.2.1", 1112 | "from": "array-unique@>=0.2.1 <0.3.0", 1113 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 1114 | "dev": true 1115 | }, 1116 | "braces": { 1117 | "version": "0.1.5", 1118 | "from": "braces@>=0.1.2 <0.2.0", 1119 | "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", 1120 | "dev": true 1121 | }, 1122 | "expand-range": { 1123 | "version": "0.1.1", 1124 | "from": "expand-range@>=0.1.0 <0.2.0", 1125 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", 1126 | "dev": true 1127 | }, 1128 | "is-number": { 1129 | "version": "0.1.1", 1130 | "from": "is-number@>=0.1.1 <0.2.0", 1131 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", 1132 | "dev": true 1133 | }, 1134 | "repeat-string": { 1135 | "version": "0.2.2", 1136 | "from": "repeat-string@>=0.2.2 <0.3.0", 1137 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", 1138 | "dev": true 1139 | } 1140 | } 1141 | }, 1142 | "expand-brackets": { 1143 | "version": "2.1.4", 1144 | "from": "expand-brackets@>=2.0.1 <3.0.0", 1145 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1146 | "dependencies": { 1147 | "define-property": { 1148 | "version": "0.2.5", 1149 | "from": "define-property@>=0.2.5 <0.3.0", 1150 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 1151 | }, 1152 | "is-descriptor": { 1153 | "version": "0.1.5", 1154 | "from": "is-descriptor@>=0.1.0 <0.2.0", 1155 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 1156 | }, 1157 | "kind-of": { 1158 | "version": "3.2.2", 1159 | "from": "kind-of@>=3.0.2 <4.0.0", 1160 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1161 | } 1162 | } 1163 | }, 1164 | "expand-range": { 1165 | "version": "1.8.2", 1166 | "from": "expand-range@>=1.8.1 <2.0.0", 1167 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 1168 | "dependencies": { 1169 | "fill-range": { 1170 | "version": "2.2.3", 1171 | "from": "fill-range@>=2.1.0 <3.0.0", 1172 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" 1173 | }, 1174 | "is-number": { 1175 | "version": "2.1.0", 1176 | "from": "is-number@>=2.1.0 <3.0.0", 1177 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" 1178 | }, 1179 | "isobject": { 1180 | "version": "2.1.0", 1181 | "from": "isobject@>=2.0.0 <3.0.0", 1182 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 1183 | }, 1184 | "kind-of": { 1185 | "version": "3.2.2", 1186 | "from": "kind-of@>=3.0.2 <4.0.0", 1187 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1188 | } 1189 | } 1190 | }, 1191 | "expose-loader": { 1192 | "version": "0.7.3", 1193 | "from": "expose-loader@0.7.3", 1194 | "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.3.tgz" 1195 | }, 1196 | "extend": { 1197 | "version": "3.0.1", 1198 | "from": "extend@>=3.0.0 <4.0.0", 1199 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 1200 | "dev": true 1201 | }, 1202 | "extend-shallow": { 1203 | "version": "2.0.1", 1204 | "from": "extend-shallow@>=2.0.1 <3.0.0", 1205 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 1206 | }, 1207 | "extglob": { 1208 | "version": "1.1.0", 1209 | "from": "extglob@>=1.1.0 <2.0.0", 1210 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-1.1.0.tgz", 1211 | "dependencies": { 1212 | "define-property": { 1213 | "version": "0.2.5", 1214 | "from": "define-property@>=0.2.5 <0.3.0", 1215 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 1216 | }, 1217 | "is-descriptor": { 1218 | "version": "0.1.5", 1219 | "from": "is-descriptor@>=0.1.0 <0.2.0", 1220 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 1221 | }, 1222 | "kind-of": { 1223 | "version": "3.2.2", 1224 | "from": "kind-of@>=3.0.2 <4.0.0", 1225 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1226 | }, 1227 | "to-regex": { 1228 | "version": "2.1.0", 1229 | "from": "to-regex@>=2.1.0 <3.0.0", 1230 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-2.1.0.tgz", 1231 | "dependencies": { 1232 | "regex-not": { 1233 | "version": "0.1.2", 1234 | "from": "regex-not@>=0.1.1 <0.2.0", 1235 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-0.1.2.tgz" 1236 | } 1237 | } 1238 | } 1239 | } 1240 | }, 1241 | "extract-text-webpack-plugin": { 1242 | "version": "2.1.2", 1243 | "from": "extract-text-webpack-plugin@2.1.2", 1244 | "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", 1245 | "dependencies": { 1246 | "loader-utils": { 1247 | "version": "1.1.0", 1248 | "from": "loader-utils@>=1.0.2 <2.0.0", 1249 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 1250 | } 1251 | } 1252 | }, 1253 | "fast-deep-equal": { 1254 | "version": "0.1.0", 1255 | "from": "fast-deep-equal@>=0.1.0 <0.2.0", 1256 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz" 1257 | }, 1258 | "fastparse": { 1259 | "version": "1.1.1", 1260 | "from": "fastparse@>=1.1.1 <2.0.0", 1261 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz" 1262 | }, 1263 | "file-loader": { 1264 | "version": "0.11.2", 1265 | "from": "file-loader@0.11.2", 1266 | "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", 1267 | "dependencies": { 1268 | "loader-utils": { 1269 | "version": "1.1.0", 1270 | "from": "loader-utils@>=1.0.2 <2.0.0", 1271 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 1272 | } 1273 | } 1274 | }, 1275 | "filename-regex": { 1276 | "version": "2.0.1", 1277 | "from": "filename-regex@>=2.0.0 <3.0.0", 1278 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" 1279 | }, 1280 | "fill-range": { 1281 | "version": "4.0.0", 1282 | "from": "fill-range@>=4.0.0 <5.0.0", 1283 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" 1284 | }, 1285 | "finalhandler": { 1286 | "version": "1.0.3", 1287 | "from": "finalhandler@1.0.3", 1288 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz" 1289 | }, 1290 | "find-up": { 1291 | "version": "1.1.2", 1292 | "from": "find-up@>=1.0.0 <2.0.0", 1293 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" 1294 | }, 1295 | "flatten": { 1296 | "version": "1.0.2", 1297 | "from": "flatten@>=1.0.2 <2.0.0", 1298 | "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz" 1299 | }, 1300 | "for-in": { 1301 | "version": "1.0.2", 1302 | "from": "for-in@>=1.0.2 <2.0.0", 1303 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 1304 | }, 1305 | "for-own": { 1306 | "version": "0.1.5", 1307 | "from": "for-own@>=0.1.4 <0.2.0", 1308 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" 1309 | }, 1310 | "fragment-cache": { 1311 | "version": "0.2.1", 1312 | "from": "fragment-cache@>=0.2.1 <0.3.0", 1313 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" 1314 | }, 1315 | "fs-access": { 1316 | "version": "1.0.1", 1317 | "from": "fs-access@>=1.0.0 <2.0.0", 1318 | "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", 1319 | "dev": true 1320 | }, 1321 | "fs.realpath": { 1322 | "version": "1.0.0", 1323 | "from": "fs.realpath@>=1.0.0 <2.0.0", 1324 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1325 | "dev": true 1326 | }, 1327 | "function-bind": { 1328 | "version": "1.1.0", 1329 | "from": "function-bind@>=1.0.2 <2.0.0", 1330 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz" 1331 | }, 1332 | "get-caller-file": { 1333 | "version": "1.0.2", 1334 | "from": "get-caller-file@>=1.0.1 <2.0.0", 1335 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz" 1336 | }, 1337 | "get-func-name": { 1338 | "version": "2.0.0", 1339 | "from": "get-func-name@>=2.0.0 <3.0.0", 1340 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1341 | "dev": true 1342 | }, 1343 | "get-value": { 1344 | "version": "2.0.6", 1345 | "from": "get-value@>=2.0.5 <3.0.0", 1346 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" 1347 | }, 1348 | "glob": { 1349 | "version": "7.1.2", 1350 | "from": "glob@>=7.1.1 <8.0.0", 1351 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1352 | "dev": true 1353 | }, 1354 | "glob-base": { 1355 | "version": "0.3.0", 1356 | "from": "glob-base@>=0.3.0 <0.4.0", 1357 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" 1358 | }, 1359 | "glob-parent": { 1360 | "version": "2.0.0", 1361 | "from": "glob-parent@>=2.0.0 <3.0.0", 1362 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" 1363 | }, 1364 | "graceful-fs": { 1365 | "version": "4.1.11", 1366 | "from": "graceful-fs@>=4.1.2 <5.0.0", 1367 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" 1368 | }, 1369 | "graceful-readlink": { 1370 | "version": "1.0.1", 1371 | "from": "graceful-readlink@>=1.0.0", 1372 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" 1373 | }, 1374 | "has": { 1375 | "version": "1.0.1", 1376 | "from": "has@>=1.0.1 <2.0.0", 1377 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz" 1378 | }, 1379 | "has-ansi": { 1380 | "version": "2.0.0", 1381 | "from": "has-ansi@>=2.0.0 <3.0.0", 1382 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" 1383 | }, 1384 | "has-binary": { 1385 | "version": "0.1.7", 1386 | "from": "has-binary@0.1.7", 1387 | "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", 1388 | "dev": true, 1389 | "dependencies": { 1390 | "isarray": { 1391 | "version": "0.0.1", 1392 | "from": "isarray@0.0.1", 1393 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1394 | "dev": true 1395 | } 1396 | } 1397 | }, 1398 | "has-cors": { 1399 | "version": "1.1.0", 1400 | "from": "has-cors@1.1.0", 1401 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", 1402 | "dev": true 1403 | }, 1404 | "has-flag": { 1405 | "version": "1.0.0", 1406 | "from": "has-flag@>=1.0.0 <2.0.0", 1407 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" 1408 | }, 1409 | "has-value": { 1410 | "version": "0.3.1", 1411 | "from": "has-value@>=0.3.1 <0.4.0", 1412 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 1413 | "dependencies": { 1414 | "isobject": { 1415 | "version": "2.1.0", 1416 | "from": "isobject@>=2.0.0 <3.0.0", 1417 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 1418 | } 1419 | } 1420 | }, 1421 | "has-values": { 1422 | "version": "0.1.4", 1423 | "from": "has-values@>=0.1.4 <0.2.0", 1424 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" 1425 | }, 1426 | "hash-base": { 1427 | "version": "2.0.2", 1428 | "from": "hash-base@>=2.0.0 <3.0.0", 1429 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz" 1430 | }, 1431 | "hash.js": { 1432 | "version": "1.1.3", 1433 | "from": "hash.js@>=1.0.0 <2.0.0", 1434 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz" 1435 | }, 1436 | "he": { 1437 | "version": "1.1.1", 1438 | "from": "he@>=1.1.0 <1.2.0", 1439 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz" 1440 | }, 1441 | "hmac-drbg": { 1442 | "version": "1.0.1", 1443 | "from": "hmac-drbg@>=1.0.0 <2.0.0", 1444 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" 1445 | }, 1446 | "hosted-git-info": { 1447 | "version": "2.5.0", 1448 | "from": "hosted-git-info@>=2.1.4 <3.0.0", 1449 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz" 1450 | }, 1451 | "html-comment-regex": { 1452 | "version": "1.1.1", 1453 | "from": "html-comment-regex@>=1.1.0 <2.0.0", 1454 | "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz" 1455 | }, 1456 | "html-entities": { 1457 | "version": "1.2.1", 1458 | "from": "html-entities@>=1.2.0 <2.0.0", 1459 | "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz" 1460 | }, 1461 | "html-loader": { 1462 | "version": "0.4.5", 1463 | "from": "html-loader@0.4.5", 1464 | "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", 1465 | "dependencies": { 1466 | "loader-utils": { 1467 | "version": "1.1.0", 1468 | "from": "loader-utils@>=1.0.2 <2.0.0", 1469 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 1470 | } 1471 | } 1472 | }, 1473 | "html-minifier": { 1474 | "version": "3.5.2", 1475 | "from": "html-minifier@>=3.0.1 <4.0.0", 1476 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz" 1477 | }, 1478 | "http-errors": { 1479 | "version": "1.6.1", 1480 | "from": "http-errors@>=1.6.1 <1.7.0", 1481 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", 1482 | "dev": true 1483 | }, 1484 | "http-proxy": { 1485 | "version": "1.16.2", 1486 | "from": "http-proxy@>=1.13.0 <2.0.0", 1487 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", 1488 | "dev": true 1489 | }, 1490 | "https-browserify": { 1491 | "version": "0.0.1", 1492 | "from": "https-browserify@0.0.1", 1493 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz" 1494 | }, 1495 | "iconv-lite": { 1496 | "version": "0.4.18", 1497 | "from": "iconv-lite@>=0.4.13 <0.5.0", 1498 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz" 1499 | }, 1500 | "icss-replace-symbols": { 1501 | "version": "1.1.0", 1502 | "from": "icss-replace-symbols@>=1.1.0 <2.0.0", 1503 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" 1504 | }, 1505 | "icss-utils": { 1506 | "version": "2.1.0", 1507 | "from": "icss-utils@>=2.1.0 <3.0.0", 1508 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", 1509 | "dependencies": { 1510 | "ansi-styles": { 1511 | "version": "3.1.0", 1512 | "from": "ansi-styles@>=3.1.0 <4.0.0", 1513 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz" 1514 | }, 1515 | "chalk": { 1516 | "version": "2.0.1", 1517 | "from": "chalk@>=2.0.1 <3.0.0", 1518 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz" 1519 | }, 1520 | "has-flag": { 1521 | "version": "2.0.0", 1522 | "from": "has-flag@>=2.0.0 <3.0.0", 1523 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 1524 | }, 1525 | "postcss": { 1526 | "version": "6.0.6", 1527 | "from": "postcss@>=6.0.1 <7.0.0", 1528 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz" 1529 | }, 1530 | "supports-color": { 1531 | "version": "4.1.0", 1532 | "from": "supports-color@>=4.1.0 <5.0.0", 1533 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz" 1534 | } 1535 | } 1536 | }, 1537 | "ieee754": { 1538 | "version": "1.1.8", 1539 | "from": "ieee754@>=1.1.4 <2.0.0", 1540 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" 1541 | }, 1542 | "indexes-of": { 1543 | "version": "1.0.1", 1544 | "from": "indexes-of@>=1.0.1 <2.0.0", 1545 | "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" 1546 | }, 1547 | "indexof": { 1548 | "version": "0.0.1", 1549 | "from": "indexof@0.0.1", 1550 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" 1551 | }, 1552 | "inflight": { 1553 | "version": "1.0.6", 1554 | "from": "inflight@>=1.0.4 <2.0.0", 1555 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1556 | "dev": true 1557 | }, 1558 | "inherits": { 1559 | "version": "2.0.3", 1560 | "from": "inherits@>=2.0.3 <2.1.0", 1561 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" 1562 | }, 1563 | "interpret": { 1564 | "version": "1.0.3", 1565 | "from": "interpret@>=1.0.0 <2.0.0", 1566 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz" 1567 | }, 1568 | "invert-kv": { 1569 | "version": "1.0.0", 1570 | "from": "invert-kv@>=1.0.0 <2.0.0", 1571 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" 1572 | }, 1573 | "is-absolute-url": { 1574 | "version": "2.1.0", 1575 | "from": "is-absolute-url@>=2.0.0 <3.0.0", 1576 | "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" 1577 | }, 1578 | "is-accessor-descriptor": { 1579 | "version": "0.1.6", 1580 | "from": "is-accessor-descriptor@>=0.1.6 <0.2.0", 1581 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1582 | "dependencies": { 1583 | "kind-of": { 1584 | "version": "3.2.2", 1585 | "from": "kind-of@>=3.0.2 <4.0.0", 1586 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1587 | } 1588 | } 1589 | }, 1590 | "is-arrayish": { 1591 | "version": "0.2.1", 1592 | "from": "is-arrayish@>=0.2.1 <0.3.0", 1593 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 1594 | }, 1595 | "is-binary-path": { 1596 | "version": "1.0.1", 1597 | "from": "is-binary-path@>=1.0.0 <2.0.0", 1598 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" 1599 | }, 1600 | "is-buffer": { 1601 | "version": "1.1.5", 1602 | "from": "is-buffer@>=1.1.5 <2.0.0", 1603 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" 1604 | }, 1605 | "is-builtin-module": { 1606 | "version": "1.0.0", 1607 | "from": "is-builtin-module@>=1.0.0 <2.0.0", 1608 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" 1609 | }, 1610 | "is-data-descriptor": { 1611 | "version": "0.1.4", 1612 | "from": "is-data-descriptor@>=0.1.4 <0.2.0", 1613 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1614 | "dependencies": { 1615 | "kind-of": { 1616 | "version": "3.2.2", 1617 | "from": "kind-of@>=3.0.2 <4.0.0", 1618 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1619 | } 1620 | } 1621 | }, 1622 | "is-descriptor": { 1623 | "version": "1.0.0", 1624 | "from": "is-descriptor@>=1.0.0 <2.0.0", 1625 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.0.tgz", 1626 | "dependencies": { 1627 | "kind-of": { 1628 | "version": "3.2.2", 1629 | "from": "kind-of@>=3.0.2 <4.0.0", 1630 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1631 | } 1632 | } 1633 | }, 1634 | "is-dotfile": { 1635 | "version": "1.0.3", 1636 | "from": "is-dotfile@>=1.0.0 <2.0.0", 1637 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" 1638 | }, 1639 | "is-equal-shallow": { 1640 | "version": "0.1.3", 1641 | "from": "is-equal-shallow@>=0.1.3 <0.2.0", 1642 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" 1643 | }, 1644 | "is-extendable": { 1645 | "version": "0.1.1", 1646 | "from": "is-extendable@>=0.1.0 <0.2.0", 1647 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1648 | }, 1649 | "is-extglob": { 1650 | "version": "2.1.1", 1651 | "from": "is-extglob@>=2.1.1 <3.0.0", 1652 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 1653 | }, 1654 | "is-fullwidth-code-point": { 1655 | "version": "1.0.0", 1656 | "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", 1657 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" 1658 | }, 1659 | "is-glob": { 1660 | "version": "2.0.1", 1661 | "from": "is-glob@>=2.0.0 <3.0.0", 1662 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1663 | "dependencies": { 1664 | "is-extglob": { 1665 | "version": "1.0.0", 1666 | "from": "is-extglob@>=1.0.0 <2.0.0", 1667 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 1668 | } 1669 | } 1670 | }, 1671 | "is-number": { 1672 | "version": "3.0.0", 1673 | "from": "is-number@>=3.0.0 <4.0.0", 1674 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1675 | "dependencies": { 1676 | "kind-of": { 1677 | "version": "3.2.2", 1678 | "from": "kind-of@>=3.0.2 <4.0.0", 1679 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1680 | } 1681 | } 1682 | }, 1683 | "is-odd": { 1684 | "version": "1.0.0", 1685 | "from": "is-odd@>=1.0.0 <2.0.0", 1686 | "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz" 1687 | }, 1688 | "is-plain-obj": { 1689 | "version": "1.1.0", 1690 | "from": "is-plain-obj@>=1.0.0 <2.0.0", 1691 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" 1692 | }, 1693 | "is-plain-object": { 1694 | "version": "2.0.3", 1695 | "from": "is-plain-object@>=2.0.1 <3.0.0", 1696 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.3.tgz" 1697 | }, 1698 | "is-posix-bracket": { 1699 | "version": "0.1.1", 1700 | "from": "is-posix-bracket@>=0.1.0 <0.2.0", 1701 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" 1702 | }, 1703 | "is-primitive": { 1704 | "version": "2.0.0", 1705 | "from": "is-primitive@>=2.0.0 <3.0.0", 1706 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" 1707 | }, 1708 | "is-stream": { 1709 | "version": "1.1.0", 1710 | "from": "is-stream@>=1.0.1 <2.0.0", 1711 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" 1712 | }, 1713 | "is-svg": { 1714 | "version": "2.1.0", 1715 | "from": "is-svg@>=2.0.0 <3.0.0", 1716 | "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz" 1717 | }, 1718 | "is-utf8": { 1719 | "version": "0.2.1", 1720 | "from": "is-utf8@>=0.2.0 <0.3.0", 1721 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" 1722 | }, 1723 | "isarray": { 1724 | "version": "1.0.0", 1725 | "from": "isarray@>=1.0.0 <1.1.0", 1726 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1727 | }, 1728 | "isbinaryfile": { 1729 | "version": "3.0.2", 1730 | "from": "isbinaryfile@>=3.0.0 <4.0.0", 1731 | "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", 1732 | "dev": true 1733 | }, 1734 | "isexe": { 1735 | "version": "2.0.0", 1736 | "from": "isexe@>=2.0.0 <3.0.0", 1737 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1738 | "dev": true 1739 | }, 1740 | "isobject": { 1741 | "version": "3.0.1", 1742 | "from": "isobject@>=3.0.0 <4.0.0", 1743 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1744 | }, 1745 | "isomorphic-fetch": { 1746 | "version": "2.2.1", 1747 | "from": "isomorphic-fetch@2.2.1", 1748 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" 1749 | }, 1750 | "jasmine-core": { 1751 | "version": "2.6.4", 1752 | "from": "jasmine-core@2.6.4", 1753 | "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", 1754 | "dev": true 1755 | }, 1756 | "jquery": { 1757 | "version": "3.2.1", 1758 | "from": "jquery@3.2.1", 1759 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" 1760 | }, 1761 | "js-base64": { 1762 | "version": "2.1.9", 1763 | "from": "js-base64@>=2.1.9 <3.0.0", 1764 | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz" 1765 | }, 1766 | "js-tokens": { 1767 | "version": "3.0.2", 1768 | "from": "js-tokens@>=3.0.0 <4.0.0", 1769 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" 1770 | }, 1771 | "js-yaml": { 1772 | "version": "3.7.0", 1773 | "from": "js-yaml@>=3.7.0 <3.8.0", 1774 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz" 1775 | }, 1776 | "jsesc": { 1777 | "version": "0.5.0", 1778 | "from": "jsesc@>=0.5.0 <0.6.0", 1779 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" 1780 | }, 1781 | "json-loader": { 1782 | "version": "0.5.4", 1783 | "from": "json-loader@0.5.4", 1784 | "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz" 1785 | }, 1786 | "json-schema-traverse": { 1787 | "version": "0.3.1", 1788 | "from": "json-schema-traverse@>=0.3.0 <0.4.0", 1789 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz" 1790 | }, 1791 | "json-stable-stringify": { 1792 | "version": "1.0.1", 1793 | "from": "json-stable-stringify@>=1.0.1 <2.0.0", 1794 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" 1795 | }, 1796 | "json3": { 1797 | "version": "3.3.2", 1798 | "from": "json3@3.3.2", 1799 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 1800 | "dev": true 1801 | }, 1802 | "json5": { 1803 | "version": "0.5.1", 1804 | "from": "json5@>=0.5.0 <0.6.0", 1805 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" 1806 | }, 1807 | "jsonify": { 1808 | "version": "0.0.0", 1809 | "from": "jsonify@>=0.0.0 <0.1.0", 1810 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" 1811 | }, 1812 | "jsrsasign": { 1813 | "version": "8.0.4", 1814 | "from": "jsrsasign@>=8.0.3 <9.0.0", 1815 | "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-8.0.4.tgz" 1816 | }, 1817 | "karma": { 1818 | "version": "1.7.0", 1819 | "from": "karma@1.7.0", 1820 | "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", 1821 | "dev": true, 1822 | "dependencies": { 1823 | "lodash": { 1824 | "version": "3.10.1", 1825 | "from": "lodash@>=3.8.0 <4.0.0", 1826 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 1827 | "dev": true 1828 | } 1829 | } 1830 | }, 1831 | "karma-chai": { 1832 | "version": "0.1.0", 1833 | "from": "karma-chai@0.1.0", 1834 | "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", 1835 | "dev": true 1836 | }, 1837 | "karma-chrome-launcher": { 1838 | "version": "2.2.0", 1839 | "from": "karma-chrome-launcher@2.2.0", 1840 | "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", 1841 | "dev": true 1842 | }, 1843 | "karma-cli": { 1844 | "version": "1.0.1", 1845 | "from": "karma-cli@1.0.1", 1846 | "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", 1847 | "dev": true 1848 | }, 1849 | "karma-jasmine": { 1850 | "version": "1.1.0", 1851 | "from": "karma-jasmine@1.1.0", 1852 | "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", 1853 | "dev": true 1854 | }, 1855 | "karma-webpack": { 1856 | "version": "2.0.3", 1857 | "from": "karma-webpack@2.0.3", 1858 | "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-2.0.3.tgz", 1859 | "dev": true, 1860 | "dependencies": { 1861 | "async": { 1862 | "version": "0.9.2", 1863 | "from": "async@>=0.9.0 <0.10.0", 1864 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 1865 | "dev": true 1866 | }, 1867 | "lodash": { 1868 | "version": "3.10.1", 1869 | "from": "lodash@>=3.8.0 <4.0.0", 1870 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 1871 | "dev": true 1872 | }, 1873 | "source-map": { 1874 | "version": "0.1.43", 1875 | "from": "source-map@>=0.1.41 <0.2.0", 1876 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", 1877 | "dev": true 1878 | } 1879 | } 1880 | }, 1881 | "kind-of": { 1882 | "version": "4.0.0", 1883 | "from": "kind-of@>=4.0.0 <5.0.0", 1884 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" 1885 | }, 1886 | "lazy-cache": { 1887 | "version": "2.0.2", 1888 | "from": "lazy-cache@>=2.0.2 <3.0.0", 1889 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz" 1890 | }, 1891 | "lcid": { 1892 | "version": "1.0.0", 1893 | "from": "lcid@>=1.0.0 <2.0.0", 1894 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" 1895 | }, 1896 | "load-json-file": { 1897 | "version": "1.1.0", 1898 | "from": "load-json-file@>=1.0.0 <2.0.0", 1899 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" 1900 | }, 1901 | "loader-runner": { 1902 | "version": "2.3.0", 1903 | "from": "loader-runner@>=2.3.0 <3.0.0", 1904 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz" 1905 | }, 1906 | "loader-utils": { 1907 | "version": "0.2.17", 1908 | "from": "loader-utils@>=0.2.15 <0.3.0", 1909 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz" 1910 | }, 1911 | "lodash": { 1912 | "version": "4.17.4", 1913 | "from": "lodash@>=4.17.4 <5.0.0", 1914 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" 1915 | }, 1916 | "lodash.camelcase": { 1917 | "version": "4.3.0", 1918 | "from": "lodash.camelcase@>=4.3.0 <5.0.0", 1919 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" 1920 | }, 1921 | "lodash.memoize": { 1922 | "version": "4.1.2", 1923 | "from": "lodash.memoize@>=4.1.2 <5.0.0", 1924 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" 1925 | }, 1926 | "lodash.uniq": { 1927 | "version": "4.5.0", 1928 | "from": "lodash.uniq@>=4.5.0 <5.0.0", 1929 | "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" 1930 | }, 1931 | "log4js": { 1932 | "version": "0.6.38", 1933 | "from": "log4js@>=0.6.31 <0.7.0", 1934 | "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", 1935 | "dev": true, 1936 | "dependencies": { 1937 | "isarray": { 1938 | "version": "0.0.1", 1939 | "from": "isarray@0.0.1", 1940 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1941 | "dev": true 1942 | }, 1943 | "readable-stream": { 1944 | "version": "1.0.34", 1945 | "from": "readable-stream@>=1.0.2 <1.1.0", 1946 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 1947 | "dev": true 1948 | }, 1949 | "semver": { 1950 | "version": "4.3.6", 1951 | "from": "semver@>=4.3.3 <4.4.0", 1952 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 1953 | "dev": true 1954 | }, 1955 | "string_decoder": { 1956 | "version": "0.10.31", 1957 | "from": "string_decoder@>=0.10.0 <0.11.0", 1958 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1959 | "dev": true 1960 | } 1961 | } 1962 | }, 1963 | "longest": { 1964 | "version": "1.0.1", 1965 | "from": "longest@>=1.0.1 <2.0.0", 1966 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" 1967 | }, 1968 | "lower-case": { 1969 | "version": "1.1.4", 1970 | "from": "lower-case@>=1.1.1 <2.0.0", 1971 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" 1972 | }, 1973 | "lru-cache": { 1974 | "version": "2.2.4", 1975 | "from": "lru-cache@>=2.2.0 <2.3.0", 1976 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", 1977 | "dev": true 1978 | }, 1979 | "macaddress": { 1980 | "version": "0.2.8", 1981 | "from": "macaddress@>=0.2.8 <0.3.0", 1982 | "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz" 1983 | }, 1984 | "magic-string": { 1985 | "version": "0.19.1", 1986 | "from": "magic-string@>=0.19.0 <0.20.0", 1987 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz" 1988 | }, 1989 | "map-cache": { 1990 | "version": "0.2.2", 1991 | "from": "map-cache@>=0.2.2 <0.3.0", 1992 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" 1993 | }, 1994 | "map-visit": { 1995 | "version": "0.1.5", 1996 | "from": "map-visit@>=0.1.5 <0.2.0", 1997 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-0.1.5.tgz" 1998 | }, 1999 | "math-expression-evaluator": { 2000 | "version": "1.2.17", 2001 | "from": "math-expression-evaluator@>=1.2.14 <2.0.0", 2002 | "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz" 2003 | }, 2004 | "media-typer": { 2005 | "version": "0.3.0", 2006 | "from": "media-typer@0.3.0", 2007 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 2008 | "dev": true 2009 | }, 2010 | "memory-fs": { 2011 | "version": "0.3.0", 2012 | "from": "memory-fs@>=0.3.0 <0.4.0", 2013 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz" 2014 | }, 2015 | "micromatch": { 2016 | "version": "3.0.3", 2017 | "from": "micromatch@>=3.0.3 <4.0.0", 2018 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.0.3.tgz" 2019 | }, 2020 | "miller-rabin": { 2021 | "version": "4.0.0", 2022 | "from": "miller-rabin@>=4.0.0 <5.0.0", 2023 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz" 2024 | }, 2025 | "mime": { 2026 | "version": "1.3.6", 2027 | "from": "mime@>=1.3.4 <2.0.0", 2028 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz" 2029 | }, 2030 | "mime-db": { 2031 | "version": "1.27.0", 2032 | "from": "mime-db@>=1.27.0 <1.28.0", 2033 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", 2034 | "dev": true 2035 | }, 2036 | "mime-types": { 2037 | "version": "2.1.15", 2038 | "from": "mime-types@>=2.1.15 <2.2.0", 2039 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", 2040 | "dev": true 2041 | }, 2042 | "minimalistic-assert": { 2043 | "version": "1.0.0", 2044 | "from": "minimalistic-assert@>=1.0.0 <2.0.0", 2045 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" 2046 | }, 2047 | "minimalistic-crypto-utils": { 2048 | "version": "1.0.1", 2049 | "from": "minimalistic-crypto-utils@>=1.0.0 <2.0.0", 2050 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" 2051 | }, 2052 | "minimatch": { 2053 | "version": "3.0.4", 2054 | "from": "minimatch@>=3.0.2 <4.0.0", 2055 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 2056 | }, 2057 | "minimist": { 2058 | "version": "0.0.8", 2059 | "from": "minimist@0.0.8", 2060 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 2061 | }, 2062 | "mixin-deep": { 2063 | "version": "1.2.0", 2064 | "from": "mixin-deep@>=1.1.3 <2.0.0", 2065 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz" 2066 | }, 2067 | "mkdirp": { 2068 | "version": "0.5.1", 2069 | "from": "mkdirp@>=0.5.1 <0.6.0", 2070 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" 2071 | }, 2072 | "ms": { 2073 | "version": "2.0.0", 2074 | "from": "ms@2.0.0", 2075 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 2076 | }, 2077 | "nanomatch": { 2078 | "version": "1.2.0", 2079 | "from": "nanomatch@>=1.2.0 <2.0.0", 2080 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.0.tgz" 2081 | }, 2082 | "ncname": { 2083 | "version": "1.0.0", 2084 | "from": "ncname@>=1.0.0 <1.1.0", 2085 | "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz" 2086 | }, 2087 | "negotiator": { 2088 | "version": "0.6.1", 2089 | "from": "negotiator@0.6.1", 2090 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 2091 | "dev": true 2092 | }, 2093 | "no-case": { 2094 | "version": "2.3.1", 2095 | "from": "no-case@>=2.2.0 <3.0.0", 2096 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz" 2097 | }, 2098 | "node-fetch": { 2099 | "version": "1.7.1", 2100 | "from": "node-fetch@>=1.0.1 <2.0.0", 2101 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz" 2102 | }, 2103 | "node-libs-browser": { 2104 | "version": "2.0.0", 2105 | "from": "node-libs-browser@>=2.0.0 <3.0.0", 2106 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", 2107 | "dependencies": { 2108 | "string_decoder": { 2109 | "version": "0.10.31", 2110 | "from": "string_decoder@>=0.10.25 <0.11.0", 2111 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 2112 | } 2113 | } 2114 | }, 2115 | "normalize-package-data": { 2116 | "version": "2.4.0", 2117 | "from": "normalize-package-data@>=2.3.2 <3.0.0", 2118 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz" 2119 | }, 2120 | "normalize-path": { 2121 | "version": "2.1.1", 2122 | "from": "normalize-path@>=2.0.1 <3.0.0", 2123 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" 2124 | }, 2125 | "normalize-range": { 2126 | "version": "0.1.2", 2127 | "from": "normalize-range@>=0.1.2 <0.2.0", 2128 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" 2129 | }, 2130 | "normalize-url": { 2131 | "version": "1.9.1", 2132 | "from": "normalize-url@>=1.4.0 <2.0.0", 2133 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" 2134 | }, 2135 | "null-check": { 2136 | "version": "1.0.0", 2137 | "from": "null-check@>=1.0.0 <2.0.0", 2138 | "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", 2139 | "dev": true 2140 | }, 2141 | "num2fraction": { 2142 | "version": "1.2.2", 2143 | "from": "num2fraction@>=1.2.2 <2.0.0", 2144 | "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" 2145 | }, 2146 | "number-is-nan": { 2147 | "version": "1.0.1", 2148 | "from": "number-is-nan@>=1.0.0 <2.0.0", 2149 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" 2150 | }, 2151 | "object-assign": { 2152 | "version": "4.1.1", 2153 | "from": "object-assign@>=4.0.1 <5.0.0", 2154 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 2155 | }, 2156 | "object-component": { 2157 | "version": "0.0.3", 2158 | "from": "object-component@0.0.3", 2159 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 2160 | "dev": true 2161 | }, 2162 | "object-copy": { 2163 | "version": "0.1.0", 2164 | "from": "object-copy@>=0.1.0 <0.2.0", 2165 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2166 | "dependencies": { 2167 | "define-property": { 2168 | "version": "0.2.5", 2169 | "from": "define-property@>=0.2.5 <0.3.0", 2170 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 2171 | }, 2172 | "is-descriptor": { 2173 | "version": "0.1.5", 2174 | "from": "is-descriptor@>=0.1.0 <0.2.0", 2175 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 2176 | }, 2177 | "kind-of": { 2178 | "version": "3.2.2", 2179 | "from": "kind-of@>=3.0.3 <4.0.0", 2180 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 2181 | } 2182 | } 2183 | }, 2184 | "object-visit": { 2185 | "version": "0.3.4", 2186 | "from": "object-visit@>=0.3.4 <0.4.0", 2187 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-0.3.4.tgz", 2188 | "dependencies": { 2189 | "isobject": { 2190 | "version": "2.1.0", 2191 | "from": "isobject@>=2.0.0 <3.0.0", 2192 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 2193 | } 2194 | } 2195 | }, 2196 | "object.omit": { 2197 | "version": "2.0.1", 2198 | "from": "object.omit@>=2.0.0 <3.0.0", 2199 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" 2200 | }, 2201 | "object.pick": { 2202 | "version": "1.2.0", 2203 | "from": "object.pick@>=1.2.0 <2.0.0", 2204 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", 2205 | "dependencies": { 2206 | "isobject": { 2207 | "version": "2.1.0", 2208 | "from": "isobject@>=2.1.0 <3.0.0", 2209 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" 2210 | } 2211 | } 2212 | }, 2213 | "on-finished": { 2214 | "version": "2.3.0", 2215 | "from": "on-finished@>=2.3.0 <2.4.0", 2216 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" 2217 | }, 2218 | "once": { 2219 | "version": "1.4.0", 2220 | "from": "once@>=1.3.0 <2.0.0", 2221 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2222 | "dev": true 2223 | }, 2224 | "optimist": { 2225 | "version": "0.6.1", 2226 | "from": "optimist@>=0.6.1 <0.7.0", 2227 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 2228 | "dev": true 2229 | }, 2230 | "options": { 2231 | "version": "0.0.6", 2232 | "from": "options@>=0.0.5", 2233 | "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", 2234 | "dev": true 2235 | }, 2236 | "os-browserify": { 2237 | "version": "0.2.1", 2238 | "from": "os-browserify@>=0.2.0 <0.3.0", 2239 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz" 2240 | }, 2241 | "os-locale": { 2242 | "version": "1.4.0", 2243 | "from": "os-locale@>=1.4.0 <2.0.0", 2244 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" 2245 | }, 2246 | "os-tmpdir": { 2247 | "version": "1.0.2", 2248 | "from": "os-tmpdir@>=1.0.1 <1.1.0", 2249 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2250 | "dev": true 2251 | }, 2252 | "pako": { 2253 | "version": "0.2.9", 2254 | "from": "pako@>=0.2.0 <0.3.0", 2255 | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" 2256 | }, 2257 | "param-case": { 2258 | "version": "2.1.1", 2259 | "from": "param-case@>=2.1.0 <2.2.0", 2260 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" 2261 | }, 2262 | "parse-asn1": { 2263 | "version": "5.1.0", 2264 | "from": "parse-asn1@>=5.0.0 <6.0.0", 2265 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz" 2266 | }, 2267 | "parse-glob": { 2268 | "version": "3.0.4", 2269 | "from": "parse-glob@>=3.0.4 <4.0.0", 2270 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2271 | "dependencies": { 2272 | "is-extglob": { 2273 | "version": "1.0.0", 2274 | "from": "is-extglob@>=1.0.0 <2.0.0", 2275 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 2276 | } 2277 | } 2278 | }, 2279 | "parse-json": { 2280 | "version": "2.2.0", 2281 | "from": "parse-json@>=2.2.0 <3.0.0", 2282 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" 2283 | }, 2284 | "parse5": { 2285 | "version": "3.0.2", 2286 | "from": "parse5@>=3.0.1 <4.0.0", 2287 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", 2288 | "dependencies": { 2289 | "@types/node": { 2290 | "version": "6.0.79", 2291 | "from": "@types/node@>=6.0.46 <7.0.0", 2292 | "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.79.tgz" 2293 | } 2294 | } 2295 | }, 2296 | "parsejson": { 2297 | "version": "0.0.3", 2298 | "from": "parsejson@0.0.3", 2299 | "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", 2300 | "dev": true 2301 | }, 2302 | "parseqs": { 2303 | "version": "0.0.5", 2304 | "from": "parseqs@0.0.5", 2305 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 2306 | "dev": true 2307 | }, 2308 | "parseuri": { 2309 | "version": "0.0.5", 2310 | "from": "parseuri@0.0.5", 2311 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 2312 | "dev": true 2313 | }, 2314 | "parseurl": { 2315 | "version": "1.3.1", 2316 | "from": "parseurl@>=1.3.1 <1.4.0", 2317 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" 2318 | }, 2319 | "pascalcase": { 2320 | "version": "0.1.1", 2321 | "from": "pascalcase@>=0.1.1 <0.2.0", 2322 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" 2323 | }, 2324 | "path-browserify": { 2325 | "version": "0.0.0", 2326 | "from": "path-browserify@0.0.0", 2327 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" 2328 | }, 2329 | "path-exists": { 2330 | "version": "2.1.0", 2331 | "from": "path-exists@>=2.0.0 <3.0.0", 2332 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" 2333 | }, 2334 | "path-is-absolute": { 2335 | "version": "1.0.1", 2336 | "from": "path-is-absolute@>=1.0.0 <2.0.0", 2337 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 2338 | }, 2339 | "path-parse": { 2340 | "version": "1.0.5", 2341 | "from": "path-parse@>=1.0.5 <2.0.0", 2342 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 2343 | "dev": true 2344 | }, 2345 | "path-type": { 2346 | "version": "1.1.0", 2347 | "from": "path-type@>=1.0.0 <2.0.0", 2348 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" 2349 | }, 2350 | "pathval": { 2351 | "version": "1.1.0", 2352 | "from": "pathval@>=1.0.0 <2.0.0", 2353 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 2354 | "dev": true 2355 | }, 2356 | "pbkdf2": { 2357 | "version": "3.0.12", 2358 | "from": "pbkdf2@>=3.0.3 <4.0.0", 2359 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz" 2360 | }, 2361 | "pify": { 2362 | "version": "2.3.0", 2363 | "from": "pify@>=2.0.0 <3.0.0", 2364 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" 2365 | }, 2366 | "pinkie": { 2367 | "version": "2.0.4", 2368 | "from": "pinkie@>=2.0.0 <3.0.0", 2369 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" 2370 | }, 2371 | "pinkie-promise": { 2372 | "version": "2.0.1", 2373 | "from": "pinkie-promise@>=2.0.0 <3.0.0", 2374 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" 2375 | }, 2376 | "posix-character-classes": { 2377 | "version": "0.1.1", 2378 | "from": "posix-character-classes@>=0.1.0 <0.2.0", 2379 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" 2380 | }, 2381 | "postcss": { 2382 | "version": "5.2.17", 2383 | "from": "postcss@>=5.0.6 <6.0.0", 2384 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", 2385 | "dependencies": { 2386 | "supports-color": { 2387 | "version": "3.2.3", 2388 | "from": "supports-color@>=3.2.3 <4.0.0", 2389 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" 2390 | } 2391 | } 2392 | }, 2393 | "postcss-calc": { 2394 | "version": "5.3.1", 2395 | "from": "postcss-calc@>=5.2.0 <6.0.0", 2396 | "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz" 2397 | }, 2398 | "postcss-colormin": { 2399 | "version": "2.2.2", 2400 | "from": "postcss-colormin@>=2.1.8 <3.0.0", 2401 | "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz" 2402 | }, 2403 | "postcss-convert-values": { 2404 | "version": "2.6.1", 2405 | "from": "postcss-convert-values@>=2.3.4 <3.0.0", 2406 | "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz" 2407 | }, 2408 | "postcss-discard-comments": { 2409 | "version": "2.0.4", 2410 | "from": "postcss-discard-comments@>=2.0.4 <3.0.0", 2411 | "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz" 2412 | }, 2413 | "postcss-discard-duplicates": { 2414 | "version": "2.1.0", 2415 | "from": "postcss-discard-duplicates@>=2.0.1 <3.0.0", 2416 | "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz" 2417 | }, 2418 | "postcss-discard-empty": { 2419 | "version": "2.1.0", 2420 | "from": "postcss-discard-empty@>=2.0.1 <3.0.0", 2421 | "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz" 2422 | }, 2423 | "postcss-discard-overridden": { 2424 | "version": "0.1.1", 2425 | "from": "postcss-discard-overridden@>=0.1.1 <0.2.0", 2426 | "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz" 2427 | }, 2428 | "postcss-discard-unused": { 2429 | "version": "2.2.3", 2430 | "from": "postcss-discard-unused@>=2.2.1 <3.0.0", 2431 | "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz" 2432 | }, 2433 | "postcss-filter-plugins": { 2434 | "version": "2.0.2", 2435 | "from": "postcss-filter-plugins@>=2.0.0 <3.0.0", 2436 | "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz" 2437 | }, 2438 | "postcss-merge-idents": { 2439 | "version": "2.1.7", 2440 | "from": "postcss-merge-idents@>=2.1.5 <3.0.0", 2441 | "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz" 2442 | }, 2443 | "postcss-merge-longhand": { 2444 | "version": "2.0.2", 2445 | "from": "postcss-merge-longhand@>=2.0.1 <3.0.0", 2446 | "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz" 2447 | }, 2448 | "postcss-merge-rules": { 2449 | "version": "2.1.2", 2450 | "from": "postcss-merge-rules@>=2.0.3 <3.0.0", 2451 | "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz" 2452 | }, 2453 | "postcss-message-helpers": { 2454 | "version": "2.0.0", 2455 | "from": "postcss-message-helpers@>=2.0.0 <3.0.0", 2456 | "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" 2457 | }, 2458 | "postcss-minify-font-values": { 2459 | "version": "1.0.5", 2460 | "from": "postcss-minify-font-values@>=1.0.2 <2.0.0", 2461 | "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz" 2462 | }, 2463 | "postcss-minify-gradients": { 2464 | "version": "1.0.5", 2465 | "from": "postcss-minify-gradients@>=1.0.1 <2.0.0", 2466 | "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz" 2467 | }, 2468 | "postcss-minify-params": { 2469 | "version": "1.2.2", 2470 | "from": "postcss-minify-params@>=1.0.4 <2.0.0", 2471 | "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz" 2472 | }, 2473 | "postcss-minify-selectors": { 2474 | "version": "2.1.1", 2475 | "from": "postcss-minify-selectors@>=2.0.4 <3.0.0", 2476 | "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz" 2477 | }, 2478 | "postcss-modules-extract-imports": { 2479 | "version": "1.1.0", 2480 | "from": "postcss-modules-extract-imports@>=1.0.0 <2.0.0", 2481 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", 2482 | "dependencies": { 2483 | "ansi-styles": { 2484 | "version": "3.1.0", 2485 | "from": "ansi-styles@>=3.1.0 <4.0.0", 2486 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz" 2487 | }, 2488 | "chalk": { 2489 | "version": "2.0.1", 2490 | "from": "chalk@>=2.0.1 <3.0.0", 2491 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz" 2492 | }, 2493 | "has-flag": { 2494 | "version": "2.0.0", 2495 | "from": "has-flag@>=2.0.0 <3.0.0", 2496 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 2497 | }, 2498 | "postcss": { 2499 | "version": "6.0.6", 2500 | "from": "postcss@>=6.0.1 <7.0.0", 2501 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz" 2502 | }, 2503 | "supports-color": { 2504 | "version": "4.1.0", 2505 | "from": "supports-color@>=4.1.0 <5.0.0", 2506 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz" 2507 | } 2508 | } 2509 | }, 2510 | "postcss-modules-local-by-default": { 2511 | "version": "1.2.0", 2512 | "from": "postcss-modules-local-by-default@>=1.0.1 <2.0.0", 2513 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", 2514 | "dependencies": { 2515 | "ansi-styles": { 2516 | "version": "3.1.0", 2517 | "from": "ansi-styles@>=3.1.0 <4.0.0", 2518 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz" 2519 | }, 2520 | "chalk": { 2521 | "version": "2.0.1", 2522 | "from": "chalk@>=2.0.1 <3.0.0", 2523 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz" 2524 | }, 2525 | "has-flag": { 2526 | "version": "2.0.0", 2527 | "from": "has-flag@>=2.0.0 <3.0.0", 2528 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 2529 | }, 2530 | "postcss": { 2531 | "version": "6.0.6", 2532 | "from": "postcss@>=6.0.1 <7.0.0", 2533 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz" 2534 | }, 2535 | "supports-color": { 2536 | "version": "4.1.0", 2537 | "from": "supports-color@>=4.1.0 <5.0.0", 2538 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz" 2539 | } 2540 | } 2541 | }, 2542 | "postcss-modules-scope": { 2543 | "version": "1.1.0", 2544 | "from": "postcss-modules-scope@>=1.0.0 <2.0.0", 2545 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", 2546 | "dependencies": { 2547 | "ansi-styles": { 2548 | "version": "3.1.0", 2549 | "from": "ansi-styles@>=3.1.0 <4.0.0", 2550 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz" 2551 | }, 2552 | "chalk": { 2553 | "version": "2.0.1", 2554 | "from": "chalk@>=2.0.1 <3.0.0", 2555 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz" 2556 | }, 2557 | "has-flag": { 2558 | "version": "2.0.0", 2559 | "from": "has-flag@>=2.0.0 <3.0.0", 2560 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 2561 | }, 2562 | "postcss": { 2563 | "version": "6.0.6", 2564 | "from": "postcss@>=6.0.1 <7.0.0", 2565 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz" 2566 | }, 2567 | "supports-color": { 2568 | "version": "4.1.0", 2569 | "from": "supports-color@>=4.1.0 <5.0.0", 2570 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz" 2571 | } 2572 | } 2573 | }, 2574 | "postcss-modules-values": { 2575 | "version": "1.3.0", 2576 | "from": "postcss-modules-values@>=1.1.0 <2.0.0", 2577 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", 2578 | "dependencies": { 2579 | "ansi-styles": { 2580 | "version": "3.1.0", 2581 | "from": "ansi-styles@>=3.1.0 <4.0.0", 2582 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz" 2583 | }, 2584 | "chalk": { 2585 | "version": "2.0.1", 2586 | "from": "chalk@>=2.0.1 <3.0.0", 2587 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz" 2588 | }, 2589 | "has-flag": { 2590 | "version": "2.0.0", 2591 | "from": "has-flag@>=2.0.0 <3.0.0", 2592 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 2593 | }, 2594 | "postcss": { 2595 | "version": "6.0.6", 2596 | "from": "postcss@>=6.0.1 <7.0.0", 2597 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz" 2598 | }, 2599 | "supports-color": { 2600 | "version": "4.1.0", 2601 | "from": "supports-color@>=4.1.0 <5.0.0", 2602 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz" 2603 | } 2604 | } 2605 | }, 2606 | "postcss-normalize-charset": { 2607 | "version": "1.1.1", 2608 | "from": "postcss-normalize-charset@>=1.1.0 <2.0.0", 2609 | "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz" 2610 | }, 2611 | "postcss-normalize-url": { 2612 | "version": "3.0.8", 2613 | "from": "postcss-normalize-url@>=3.0.7 <4.0.0", 2614 | "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz" 2615 | }, 2616 | "postcss-ordered-values": { 2617 | "version": "2.2.3", 2618 | "from": "postcss-ordered-values@>=2.1.0 <3.0.0", 2619 | "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz" 2620 | }, 2621 | "postcss-reduce-idents": { 2622 | "version": "2.4.0", 2623 | "from": "postcss-reduce-idents@>=2.2.2 <3.0.0", 2624 | "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz" 2625 | }, 2626 | "postcss-reduce-initial": { 2627 | "version": "1.0.1", 2628 | "from": "postcss-reduce-initial@>=1.0.0 <2.0.0", 2629 | "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz" 2630 | }, 2631 | "postcss-reduce-transforms": { 2632 | "version": "1.0.4", 2633 | "from": "postcss-reduce-transforms@>=1.0.3 <2.0.0", 2634 | "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz" 2635 | }, 2636 | "postcss-selector-parser": { 2637 | "version": "2.2.3", 2638 | "from": "postcss-selector-parser@>=2.2.2 <3.0.0", 2639 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz" 2640 | }, 2641 | "postcss-svgo": { 2642 | "version": "2.1.6", 2643 | "from": "postcss-svgo@>=2.1.1 <3.0.0", 2644 | "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz" 2645 | }, 2646 | "postcss-unique-selectors": { 2647 | "version": "2.0.2", 2648 | "from": "postcss-unique-selectors@>=2.0.2 <3.0.0", 2649 | "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz" 2650 | }, 2651 | "postcss-value-parser": { 2652 | "version": "3.3.0", 2653 | "from": "postcss-value-parser@>=3.3.0 <4.0.0", 2654 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" 2655 | }, 2656 | "postcss-zindex": { 2657 | "version": "2.2.0", 2658 | "from": "postcss-zindex@>=2.0.1 <3.0.0", 2659 | "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz" 2660 | }, 2661 | "preboot": { 2662 | "version": "4.5.2", 2663 | "from": "preboot@4.5.2", 2664 | "resolved": "https://registry.npmjs.org/preboot/-/preboot-4.5.2.tgz" 2665 | }, 2666 | "prepend-http": { 2667 | "version": "1.0.4", 2668 | "from": "prepend-http@>=1.0.0 <2.0.0", 2669 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" 2670 | }, 2671 | "preserve": { 2672 | "version": "0.2.0", 2673 | "from": "preserve@>=0.2.0 <0.3.0", 2674 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" 2675 | }, 2676 | "private": { 2677 | "version": "0.1.7", 2678 | "from": "private@>=0.1.5 <0.2.0", 2679 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz" 2680 | }, 2681 | "process": { 2682 | "version": "0.11.10", 2683 | "from": "process@>=0.11.0 <0.12.0", 2684 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz" 2685 | }, 2686 | "process-nextick-args": { 2687 | "version": "1.0.7", 2688 | "from": "process-nextick-args@>=1.0.6 <1.1.0", 2689 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" 2690 | }, 2691 | "prr": { 2692 | "version": "0.0.0", 2693 | "from": "prr@>=0.0.0 <0.1.0", 2694 | "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz" 2695 | }, 2696 | "public-encrypt": { 2697 | "version": "4.0.0", 2698 | "from": "public-encrypt@>=4.0.0 <5.0.0", 2699 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz" 2700 | }, 2701 | "punycode": { 2702 | "version": "1.4.1", 2703 | "from": "punycode@>=1.2.4 <2.0.0", 2704 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" 2705 | }, 2706 | "q": { 2707 | "version": "1.5.0", 2708 | "from": "q@>=1.1.2 <2.0.0", 2709 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz" 2710 | }, 2711 | "qjobs": { 2712 | "version": "1.1.5", 2713 | "from": "qjobs@>=1.1.4 <2.0.0", 2714 | "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", 2715 | "dev": true 2716 | }, 2717 | "qs": { 2718 | "version": "6.4.0", 2719 | "from": "qs@6.4.0", 2720 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", 2721 | "dev": true 2722 | }, 2723 | "query-string": { 2724 | "version": "4.3.4", 2725 | "from": "query-string@>=4.1.0 <5.0.0", 2726 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" 2727 | }, 2728 | "querystring": { 2729 | "version": "0.2.0", 2730 | "from": "querystring@0.2.0", 2731 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" 2732 | }, 2733 | "querystring-es3": { 2734 | "version": "0.2.1", 2735 | "from": "querystring-es3@>=0.2.0 <0.3.0", 2736 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" 2737 | }, 2738 | "randomatic": { 2739 | "version": "1.1.7", 2740 | "from": "randomatic@>=1.1.3 <2.0.0", 2741 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz" 2742 | }, 2743 | "randombytes": { 2744 | "version": "2.0.5", 2745 | "from": "randombytes@>=2.0.0 <3.0.0", 2746 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" 2747 | }, 2748 | "range-parser": { 2749 | "version": "1.2.0", 2750 | "from": "range-parser@>=1.0.3 <2.0.0", 2751 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" 2752 | }, 2753 | "raw-body": { 2754 | "version": "2.2.0", 2755 | "from": "raw-body@>=2.2.0 <2.3.0", 2756 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", 2757 | "dev": true, 2758 | "dependencies": { 2759 | "iconv-lite": { 2760 | "version": "0.4.15", 2761 | "from": "iconv-lite@0.4.15", 2762 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", 2763 | "dev": true 2764 | } 2765 | } 2766 | }, 2767 | "raw-loader": { 2768 | "version": "0.5.1", 2769 | "from": "raw-loader@0.5.1", 2770 | "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz" 2771 | }, 2772 | "read-pkg": { 2773 | "version": "1.1.0", 2774 | "from": "read-pkg@>=1.0.0 <2.0.0", 2775 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" 2776 | }, 2777 | "read-pkg-up": { 2778 | "version": "1.0.1", 2779 | "from": "read-pkg-up@>=1.0.1 <2.0.0", 2780 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" 2781 | }, 2782 | "readable-stream": { 2783 | "version": "2.3.3", 2784 | "from": "readable-stream@>=2.0.1 <3.0.0", 2785 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" 2786 | }, 2787 | "readdirp": { 2788 | "version": "2.1.0", 2789 | "from": "readdirp@>=2.0.0 <3.0.0", 2790 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz" 2791 | }, 2792 | "recast": { 2793 | "version": "0.11.23", 2794 | "from": "recast@>=0.11.12 <0.12.0", 2795 | "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", 2796 | "dependencies": { 2797 | "esprima": { 2798 | "version": "3.1.3", 2799 | "from": "esprima@>=3.1.0 <3.2.0", 2800 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" 2801 | } 2802 | } 2803 | }, 2804 | "reduce-css-calc": { 2805 | "version": "1.3.0", 2806 | "from": "reduce-css-calc@>=1.2.6 <2.0.0", 2807 | "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz" 2808 | }, 2809 | "reduce-function-call": { 2810 | "version": "1.0.2", 2811 | "from": "reduce-function-call@>=1.0.1 <2.0.0", 2812 | "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz" 2813 | }, 2814 | "reflect-metadata": { 2815 | "version": "0.1.10", 2816 | "from": "reflect-metadata@0.1.10", 2817 | "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz" 2818 | }, 2819 | "regenerate": { 2820 | "version": "1.3.2", 2821 | "from": "regenerate@>=1.2.1 <2.0.0", 2822 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz" 2823 | }, 2824 | "regex-cache": { 2825 | "version": "0.4.3", 2826 | "from": "regex-cache@>=0.4.2 <0.5.0", 2827 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz" 2828 | }, 2829 | "regex-not": { 2830 | "version": "1.0.0", 2831 | "from": "regex-not@>=1.0.0 <2.0.0", 2832 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz" 2833 | }, 2834 | "regexpu-core": { 2835 | "version": "1.0.0", 2836 | "from": "regexpu-core@>=1.0.0 <2.0.0", 2837 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz" 2838 | }, 2839 | "regjsgen": { 2840 | "version": "0.2.0", 2841 | "from": "regjsgen@>=0.2.0 <0.3.0", 2842 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" 2843 | }, 2844 | "regjsparser": { 2845 | "version": "0.1.5", 2846 | "from": "regjsparser@>=0.1.4 <0.2.0", 2847 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" 2848 | }, 2849 | "relateurl": { 2850 | "version": "0.2.7", 2851 | "from": "relateurl@>=0.2.0 <0.3.0", 2852 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" 2853 | }, 2854 | "remove-trailing-separator": { 2855 | "version": "1.0.2", 2856 | "from": "remove-trailing-separator@>=1.0.1 <2.0.0", 2857 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" 2858 | }, 2859 | "repeat-element": { 2860 | "version": "1.1.2", 2861 | "from": "repeat-element@>=1.1.2 <2.0.0", 2862 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" 2863 | }, 2864 | "repeat-string": { 2865 | "version": "1.6.1", 2866 | "from": "repeat-string@>=1.6.1 <2.0.0", 2867 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 2868 | }, 2869 | "require-directory": { 2870 | "version": "2.1.1", 2871 | "from": "require-directory@>=2.1.1 <3.0.0", 2872 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 2873 | }, 2874 | "require-from-string": { 2875 | "version": "1.2.1", 2876 | "from": "require-from-string@>=1.1.0 <2.0.0", 2877 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" 2878 | }, 2879 | "require-main-filename": { 2880 | "version": "1.0.1", 2881 | "from": "require-main-filename@>=1.0.1 <2.0.0", 2882 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz" 2883 | }, 2884 | "requires-port": { 2885 | "version": "1.0.0", 2886 | "from": "requires-port@>=1.0.0 <2.0.0", 2887 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2888 | "dev": true 2889 | }, 2890 | "resolve": { 2891 | "version": "1.3.3", 2892 | "from": "resolve@>=1.1.6 <2.0.0", 2893 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", 2894 | "dev": true 2895 | }, 2896 | "resolve-url": { 2897 | "version": "0.2.1", 2898 | "from": "resolve-url@>=0.2.1 <0.3.0", 2899 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" 2900 | }, 2901 | "right-align": { 2902 | "version": "0.1.3", 2903 | "from": "right-align@>=0.1.1 <0.2.0", 2904 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" 2905 | }, 2906 | "rimraf": { 2907 | "version": "2.6.1", 2908 | "from": "rimraf@>=2.6.0 <3.0.0", 2909 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 2910 | "dev": true 2911 | }, 2912 | "ripemd160": { 2913 | "version": "2.0.1", 2914 | "from": "ripemd160@>=2.0.0 <3.0.0", 2915 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz" 2916 | }, 2917 | "rxjs": { 2918 | "version": "5.4.2", 2919 | "from": "rxjs@5.4.2", 2920 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz" 2921 | }, 2922 | "safe-buffer": { 2923 | "version": "5.1.1", 2924 | "from": "safe-buffer@>=5.1.1 <5.2.0", 2925 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 2926 | }, 2927 | "sax": { 2928 | "version": "1.2.4", 2929 | "from": "sax@>=1.2.1 <1.3.0", 2930 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" 2931 | }, 2932 | "schema-utils": { 2933 | "version": "0.3.0", 2934 | "from": "schema-utils@>=0.3.0 <0.4.0", 2935 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz" 2936 | }, 2937 | "semver": { 2938 | "version": "5.3.0", 2939 | "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0||>=5.0.0 <6.0.0", 2940 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" 2941 | }, 2942 | "set-blocking": { 2943 | "version": "2.0.0", 2944 | "from": "set-blocking@>=2.0.0 <3.0.0", 2945 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" 2946 | }, 2947 | "set-getter": { 2948 | "version": "0.1.0", 2949 | "from": "set-getter@>=0.1.0 <0.2.0", 2950 | "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz" 2951 | }, 2952 | "set-immediate-shim": { 2953 | "version": "1.0.1", 2954 | "from": "set-immediate-shim@>=1.0.1 <2.0.0", 2955 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" 2956 | }, 2957 | "set-value": { 2958 | "version": "0.4.3", 2959 | "from": "set-value@>=0.4.2 <0.5.0", 2960 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz" 2961 | }, 2962 | "setimmediate": { 2963 | "version": "1.0.5", 2964 | "from": "setimmediate@>=1.0.4 <2.0.0", 2965 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" 2966 | }, 2967 | "setprototypeof": { 2968 | "version": "1.0.3", 2969 | "from": "setprototypeof@1.0.3", 2970 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 2971 | "dev": true 2972 | }, 2973 | "sha.js": { 2974 | "version": "2.4.8", 2975 | "from": "sha.js@>=2.4.0 <3.0.0", 2976 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz" 2977 | }, 2978 | "snapdragon": { 2979 | "version": "0.8.1", 2980 | "from": "snapdragon@>=0.8.1 <0.9.0", 2981 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", 2982 | "dependencies": { 2983 | "define-property": { 2984 | "version": "0.2.5", 2985 | "from": "define-property@>=0.2.5 <0.3.0", 2986 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 2987 | }, 2988 | "is-descriptor": { 2989 | "version": "0.1.5", 2990 | "from": "is-descriptor@>=0.1.0 <0.2.0", 2991 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 2992 | }, 2993 | "kind-of": { 2994 | "version": "3.2.2", 2995 | "from": "kind-of@>=3.0.2 <4.0.0", 2996 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 2997 | } 2998 | } 2999 | }, 3000 | "snapdragon-node": { 3001 | "version": "2.1.1", 3002 | "from": "snapdragon-node@>=2.0.1 <3.0.0", 3003 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" 3004 | }, 3005 | "snapdragon-util": { 3006 | "version": "3.0.1", 3007 | "from": "snapdragon-util@>=3.0.1 <4.0.0", 3008 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3009 | "dependencies": { 3010 | "kind-of": { 3011 | "version": "3.2.2", 3012 | "from": "kind-of@>=3.2.0 <4.0.0", 3013 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 3014 | } 3015 | } 3016 | }, 3017 | "socket.io": { 3018 | "version": "1.7.3", 3019 | "from": "socket.io@1.7.3", 3020 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", 3021 | "dev": true, 3022 | "dependencies": { 3023 | "debug": { 3024 | "version": "2.3.3", 3025 | "from": "debug@2.3.3", 3026 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 3027 | "dev": true 3028 | }, 3029 | "ms": { 3030 | "version": "0.7.2", 3031 | "from": "ms@0.7.2", 3032 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 3033 | "dev": true 3034 | }, 3035 | "object-assign": { 3036 | "version": "4.1.0", 3037 | "from": "object-assign@4.1.0", 3038 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", 3039 | "dev": true 3040 | } 3041 | } 3042 | }, 3043 | "socket.io-adapter": { 3044 | "version": "0.5.0", 3045 | "from": "socket.io-adapter@0.5.0", 3046 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", 3047 | "dev": true, 3048 | "dependencies": { 3049 | "debug": { 3050 | "version": "2.3.3", 3051 | "from": "debug@2.3.3", 3052 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 3053 | "dev": true 3054 | }, 3055 | "ms": { 3056 | "version": "0.7.2", 3057 | "from": "ms@0.7.2", 3058 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 3059 | "dev": true 3060 | } 3061 | } 3062 | }, 3063 | "socket.io-client": { 3064 | "version": "1.7.3", 3065 | "from": "socket.io-client@1.7.3", 3066 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", 3067 | "dev": true, 3068 | "dependencies": { 3069 | "debug": { 3070 | "version": "2.3.3", 3071 | "from": "debug@2.3.3", 3072 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", 3073 | "dev": true 3074 | }, 3075 | "ms": { 3076 | "version": "0.7.2", 3077 | "from": "ms@0.7.2", 3078 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 3079 | "dev": true 3080 | } 3081 | } 3082 | }, 3083 | "socket.io-parser": { 3084 | "version": "2.3.1", 3085 | "from": "socket.io-parser@2.3.1", 3086 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", 3087 | "dev": true, 3088 | "dependencies": { 3089 | "component-emitter": { 3090 | "version": "1.1.2", 3091 | "from": "component-emitter@1.1.2", 3092 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", 3093 | "dev": true 3094 | }, 3095 | "debug": { 3096 | "version": "2.2.0", 3097 | "from": "debug@2.2.0", 3098 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 3099 | "dev": true 3100 | }, 3101 | "isarray": { 3102 | "version": "0.0.1", 3103 | "from": "isarray@0.0.1", 3104 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 3105 | "dev": true 3106 | }, 3107 | "ms": { 3108 | "version": "0.7.1", 3109 | "from": "ms@0.7.1", 3110 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 3111 | "dev": true 3112 | } 3113 | } 3114 | }, 3115 | "sort-keys": { 3116 | "version": "1.1.2", 3117 | "from": "sort-keys@>=1.0.0 <2.0.0", 3118 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" 3119 | }, 3120 | "source-list-map": { 3121 | "version": "0.1.8", 3122 | "from": "source-list-map@>=0.1.7 <0.2.0", 3123 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz" 3124 | }, 3125 | "source-map": { 3126 | "version": "0.5.6", 3127 | "from": "source-map@>=0.5.6 <0.6.0", 3128 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" 3129 | }, 3130 | "source-map-resolve": { 3131 | "version": "0.5.0", 3132 | "from": "source-map-resolve@>=0.5.0 <0.6.0", 3133 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.0.tgz" 3134 | }, 3135 | "source-map-support": { 3136 | "version": "0.4.15", 3137 | "from": "source-map-support@>=0.4.15 <0.5.0", 3138 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" 3139 | }, 3140 | "source-map-url": { 3141 | "version": "0.4.0", 3142 | "from": "source-map-url@>=0.4.0 <0.5.0", 3143 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" 3144 | }, 3145 | "spdx-correct": { 3146 | "version": "1.0.2", 3147 | "from": "spdx-correct@>=1.0.0 <1.1.0", 3148 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz" 3149 | }, 3150 | "spdx-expression-parse": { 3151 | "version": "1.0.4", 3152 | "from": "spdx-expression-parse@>=1.0.0 <1.1.0", 3153 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" 3154 | }, 3155 | "spdx-license-ids": { 3156 | "version": "1.2.2", 3157 | "from": "spdx-license-ids@>=1.0.2 <2.0.0", 3158 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" 3159 | }, 3160 | "split-string": { 3161 | "version": "2.1.1", 3162 | "from": "split-string@>=2.1.0 <3.0.0", 3163 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-2.1.1.tgz" 3164 | }, 3165 | "sprintf-js": { 3166 | "version": "1.0.3", 3167 | "from": "sprintf-js@>=1.0.2 <1.1.0", 3168 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 3169 | }, 3170 | "static-extend": { 3171 | "version": "0.1.2", 3172 | "from": "static-extend@>=0.1.1 <0.2.0", 3173 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3174 | "dependencies": { 3175 | "define-property": { 3176 | "version": "0.2.5", 3177 | "from": "define-property@>=0.2.5 <0.3.0", 3178 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 3179 | }, 3180 | "is-descriptor": { 3181 | "version": "0.1.5", 3182 | "from": "is-descriptor@>=0.1.0 <0.2.0", 3183 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 3184 | }, 3185 | "kind-of": { 3186 | "version": "3.2.2", 3187 | "from": "kind-of@>=3.0.2 <4.0.0", 3188 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 3189 | } 3190 | } 3191 | }, 3192 | "statuses": { 3193 | "version": "1.3.1", 3194 | "from": "statuses@>=1.3.1 <1.4.0", 3195 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" 3196 | }, 3197 | "stream-browserify": { 3198 | "version": "2.0.1", 3199 | "from": "stream-browserify@>=2.0.1 <3.0.0", 3200 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz" 3201 | }, 3202 | "stream-http": { 3203 | "version": "2.7.2", 3204 | "from": "stream-http@>=2.3.1 <3.0.0", 3205 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz" 3206 | }, 3207 | "strict-uri-encode": { 3208 | "version": "1.1.0", 3209 | "from": "strict-uri-encode@>=1.0.0 <2.0.0", 3210 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" 3211 | }, 3212 | "string_decoder": { 3213 | "version": "1.0.3", 3214 | "from": "string_decoder@>=1.0.3 <1.1.0", 3215 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz" 3216 | }, 3217 | "string-width": { 3218 | "version": "1.0.2", 3219 | "from": "string-width@>=1.0.2 <2.0.0", 3220 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" 3221 | }, 3222 | "strip-ansi": { 3223 | "version": "3.0.1", 3224 | "from": "strip-ansi@>=3.0.0 <4.0.0", 3225 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" 3226 | }, 3227 | "strip-bom": { 3228 | "version": "2.0.0", 3229 | "from": "strip-bom@>=2.0.0 <3.0.0", 3230 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" 3231 | }, 3232 | "style-loader": { 3233 | "version": "0.18.2", 3234 | "from": "style-loader@0.18.2", 3235 | "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", 3236 | "dependencies": { 3237 | "loader-utils": { 3238 | "version": "1.1.0", 3239 | "from": "loader-utils@>=1.0.2 <2.0.0", 3240 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 3241 | } 3242 | } 3243 | }, 3244 | "supports-color": { 3245 | "version": "2.0.0", 3246 | "from": "supports-color@>=2.0.0 <3.0.0", 3247 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 3248 | }, 3249 | "svgo": { 3250 | "version": "0.7.2", 3251 | "from": "svgo@>=0.7.0 <0.8.0", 3252 | "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz" 3253 | }, 3254 | "symbol-observable": { 3255 | "version": "1.0.4", 3256 | "from": "symbol-observable@>=1.0.1 <2.0.0", 3257 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz" 3258 | }, 3259 | "tapable": { 3260 | "version": "0.2.6", 3261 | "from": "tapable@>=0.2.5 <0.3.0", 3262 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz" 3263 | }, 3264 | "through": { 3265 | "version": "2.3.8", 3266 | "from": "through@>=2.3.6 <2.4.0", 3267 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 3268 | }, 3269 | "timers-browserify": { 3270 | "version": "2.0.2", 3271 | "from": "timers-browserify@>=2.0.2 <3.0.0", 3272 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz" 3273 | }, 3274 | "tmp": { 3275 | "version": "0.0.31", 3276 | "from": "tmp@0.0.31", 3277 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", 3278 | "dev": true 3279 | }, 3280 | "to-array": { 3281 | "version": "0.1.4", 3282 | "from": "to-array@0.1.4", 3283 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 3284 | "dev": true 3285 | }, 3286 | "to-arraybuffer": { 3287 | "version": "1.0.1", 3288 | "from": "to-arraybuffer@>=1.0.0 <2.0.0", 3289 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" 3290 | }, 3291 | "to-object-path": { 3292 | "version": "0.3.0", 3293 | "from": "to-object-path@>=0.3.0 <0.4.0", 3294 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3295 | "dependencies": { 3296 | "kind-of": { 3297 | "version": "3.2.2", 3298 | "from": "kind-of@>=3.0.2 <4.0.0", 3299 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 3300 | } 3301 | } 3302 | }, 3303 | "to-regex": { 3304 | "version": "3.0.1", 3305 | "from": "to-regex@>=3.0.1 <4.0.0", 3306 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", 3307 | "dependencies": { 3308 | "define-property": { 3309 | "version": "0.2.5", 3310 | "from": "define-property@>=0.2.5 <0.3.0", 3311 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 3312 | }, 3313 | "is-descriptor": { 3314 | "version": "0.1.5", 3315 | "from": "is-descriptor@>=0.1.0 <0.2.0", 3316 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 3317 | }, 3318 | "kind-of": { 3319 | "version": "3.2.2", 3320 | "from": "kind-of@>=3.0.2 <4.0.0", 3321 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 3322 | } 3323 | } 3324 | }, 3325 | "to-regex-range": { 3326 | "version": "2.1.1", 3327 | "from": "to-regex-range@>=2.1.0 <3.0.0", 3328 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" 3329 | }, 3330 | "to-string-loader": { 3331 | "version": "1.1.5", 3332 | "from": "to-string-loader@1.1.5", 3333 | "resolved": "https://registry.npmjs.org/to-string-loader/-/to-string-loader-1.1.5.tgz" 3334 | }, 3335 | "tsickle": { 3336 | "version": "0.21.6", 3337 | "from": "tsickle@>=0.21.0 <0.22.0", 3338 | "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", 3339 | "dependencies": { 3340 | "minimist": { 3341 | "version": "1.2.0", 3342 | "from": "minimist@^1.2.0", 3343 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" 3344 | } 3345 | } 3346 | }, 3347 | "tslib": { 3348 | "version": "1.7.1", 3349 | "from": "tslib@>=1.7.1 <2.0.0", 3350 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" 3351 | }, 3352 | "tty-browserify": { 3353 | "version": "0.0.0", 3354 | "from": "tty-browserify@0.0.0", 3355 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" 3356 | }, 3357 | "type-detect": { 3358 | "version": "4.0.3", 3359 | "from": "type-detect@>=4.0.0 <5.0.0", 3360 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", 3361 | "dev": true 3362 | }, 3363 | "type-is": { 3364 | "version": "1.6.15", 3365 | "from": "type-is@>=1.6.15 <1.7.0", 3366 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", 3367 | "dev": true 3368 | }, 3369 | "typescript": { 3370 | "version": "2.4.1", 3371 | "from": "typescript@2.4.1", 3372 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz" 3373 | }, 3374 | "uglify-js": { 3375 | "version": "3.0.23", 3376 | "from": "uglify-js@>=3.0.0 <3.1.0", 3377 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.23.tgz" 3378 | }, 3379 | "uglify-to-browserify": { 3380 | "version": "1.0.2", 3381 | "from": "uglify-to-browserify@>=1.0.0 <1.1.0", 3382 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 3383 | "optional": true 3384 | }, 3385 | "ultron": { 3386 | "version": "1.0.2", 3387 | "from": "ultron@>=1.0.0 <1.1.0", 3388 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 3389 | "dev": true 3390 | }, 3391 | "union-value": { 3392 | "version": "0.2.4", 3393 | "from": "union-value@>=0.2.3 <0.3.0", 3394 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz" 3395 | }, 3396 | "uniq": { 3397 | "version": "1.0.1", 3398 | "from": "uniq@>=1.0.1 <2.0.0", 3399 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" 3400 | }, 3401 | "uniqid": { 3402 | "version": "4.1.1", 3403 | "from": "uniqid@>=4.0.0 <5.0.0", 3404 | "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz" 3405 | }, 3406 | "uniqs": { 3407 | "version": "2.0.0", 3408 | "from": "uniqs@>=2.0.0 <3.0.0", 3409 | "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" 3410 | }, 3411 | "unpipe": { 3412 | "version": "1.0.0", 3413 | "from": "unpipe@>=1.0.0 <1.1.0", 3414 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 3415 | }, 3416 | "unset-value": { 3417 | "version": "0.1.2", 3418 | "from": "unset-value@>=0.1.1 <0.2.0", 3419 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz" 3420 | }, 3421 | "upper-case": { 3422 | "version": "1.1.3", 3423 | "from": "upper-case@>=1.1.1 <2.0.0", 3424 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" 3425 | }, 3426 | "urix": { 3427 | "version": "0.1.0", 3428 | "from": "urix@>=0.1.0 <0.2.0", 3429 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" 3430 | }, 3431 | "url": { 3432 | "version": "0.11.0", 3433 | "from": "url@>=0.11.0 <0.12.0", 3434 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 3435 | "dependencies": { 3436 | "punycode": { 3437 | "version": "1.3.2", 3438 | "from": "punycode@1.3.2", 3439 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" 3440 | } 3441 | } 3442 | }, 3443 | "url-loader": { 3444 | "version": "0.5.9", 3445 | "from": "url-loader@0.5.9", 3446 | "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", 3447 | "dependencies": { 3448 | "loader-utils": { 3449 | "version": "1.1.0", 3450 | "from": "loader-utils@>=1.0.2 <2.0.0", 3451 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" 3452 | } 3453 | } 3454 | }, 3455 | "use": { 3456 | "version": "2.0.2", 3457 | "from": "use@>=2.0.0 <3.0.0", 3458 | "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", 3459 | "dependencies": { 3460 | "define-property": { 3461 | "version": "0.2.5", 3462 | "from": "define-property@>=0.2.5 <0.3.0", 3463 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" 3464 | }, 3465 | "is-descriptor": { 3466 | "version": "0.1.5", 3467 | "from": "is-descriptor@>=0.1.0 <0.2.0", 3468 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.5.tgz" 3469 | }, 3470 | "kind-of": { 3471 | "version": "3.2.2", 3472 | "from": "kind-of@>=3.0.2 <4.0.0", 3473 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 3474 | } 3475 | } 3476 | }, 3477 | "useragent": { 3478 | "version": "2.2.0", 3479 | "from": "useragent@>=2.1.12 <3.0.0", 3480 | "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.0.tgz", 3481 | "dev": true 3482 | }, 3483 | "util": { 3484 | "version": "0.10.3", 3485 | "from": "util@>=0.10.3 <0.11.0", 3486 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 3487 | "dependencies": { 3488 | "inherits": { 3489 | "version": "2.0.1", 3490 | "from": "inherits@2.0.1", 3491 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 3492 | } 3493 | } 3494 | }, 3495 | "util-deprecate": { 3496 | "version": "1.0.2", 3497 | "from": "util-deprecate@>=1.0.1 <1.1.0", 3498 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 3499 | }, 3500 | "utils-merge": { 3501 | "version": "1.0.0", 3502 | "from": "utils-merge@1.0.0", 3503 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" 3504 | }, 3505 | "validate-npm-package-license": { 3506 | "version": "3.0.1", 3507 | "from": "validate-npm-package-license@>=3.0.1 <4.0.0", 3508 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" 3509 | }, 3510 | "vendors": { 3511 | "version": "1.0.1", 3512 | "from": "vendors@>=1.0.0 <2.0.0", 3513 | "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz" 3514 | }, 3515 | "vlq": { 3516 | "version": "0.2.2", 3517 | "from": "vlq@>=0.2.1 <0.3.0", 3518 | "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz" 3519 | }, 3520 | "vm-browserify": { 3521 | "version": "0.0.4", 3522 | "from": "vm-browserify@0.0.4", 3523 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz" 3524 | }, 3525 | "void-elements": { 3526 | "version": "2.0.1", 3527 | "from": "void-elements@>=2.0.0 <3.0.0", 3528 | "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", 3529 | "dev": true 3530 | }, 3531 | "watchpack": { 3532 | "version": "1.3.1", 3533 | "from": "watchpack@>=1.3.1 <2.0.0", 3534 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz" 3535 | }, 3536 | "webpack": { 3537 | "version": "2.5.1", 3538 | "from": "webpack@2.5.1", 3539 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.5.1.tgz", 3540 | "dependencies": { 3541 | "ajv": { 3542 | "version": "4.11.8", 3543 | "from": "ajv@>=4.7.0 <5.0.0", 3544 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz" 3545 | }, 3546 | "memory-fs": { 3547 | "version": "0.4.1", 3548 | "from": "memory-fs@>=0.4.1 <0.5.0", 3549 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" 3550 | }, 3551 | "source-list-map": { 3552 | "version": "1.1.2", 3553 | "from": "source-list-map@>=1.1.1 <2.0.0", 3554 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz" 3555 | }, 3556 | "supports-color": { 3557 | "version": "3.2.3", 3558 | "from": "supports-color@>=3.1.0 <4.0.0", 3559 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" 3560 | }, 3561 | "uglify-js": { 3562 | "version": "2.8.29", 3563 | "from": "uglify-js@>=2.8.5 <3.0.0", 3564 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 3565 | "dependencies": { 3566 | "yargs": { 3567 | "version": "3.10.0", 3568 | "from": "yargs@>=3.10.0 <3.11.0", 3569 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" 3570 | } 3571 | } 3572 | }, 3573 | "webpack-sources": { 3574 | "version": "0.2.3", 3575 | "from": "webpack-sources@>=0.2.3 <0.3.0", 3576 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz" 3577 | } 3578 | } 3579 | }, 3580 | "webpack-dev-middleware": { 3581 | "version": "1.11.0", 3582 | "from": "webpack-dev-middleware@>=1.8.4 <2.0.0", 3583 | "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", 3584 | "dependencies": { 3585 | "memory-fs": { 3586 | "version": "0.4.1", 3587 | "from": "memory-fs@>=0.4.1 <0.5.0", 3588 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" 3589 | } 3590 | } 3591 | }, 3592 | "webpack-hot-middleware": { 3593 | "version": "2.18.2", 3594 | "from": "webpack-hot-middleware@2.18.2", 3595 | "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.18.2.tgz" 3596 | }, 3597 | "webpack-merge": { 3598 | "version": "4.1.0", 3599 | "from": "webpack-merge@4.1.0", 3600 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz" 3601 | }, 3602 | "webpack-node-externals": { 3603 | "version": "1.6.0", 3604 | "from": "webpack-node-externals@>=1.4.3 <2.0.0", 3605 | "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz" 3606 | }, 3607 | "webpack-sources": { 3608 | "version": "1.0.1", 3609 | "from": "webpack-sources@>=1.0.1 <2.0.0", 3610 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", 3611 | "dependencies": { 3612 | "source-list-map": { 3613 | "version": "2.0.0", 3614 | "from": "source-list-map@>=2.0.0 <3.0.0", 3615 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz" 3616 | } 3617 | } 3618 | }, 3619 | "whatwg-fetch": { 3620 | "version": "2.0.3", 3621 | "from": "whatwg-fetch@>=0.10.0", 3622 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz" 3623 | }, 3624 | "whet.extend": { 3625 | "version": "0.9.9", 3626 | "from": "whet.extend@>=0.9.9 <0.10.0", 3627 | "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz" 3628 | }, 3629 | "which": { 3630 | "version": "1.2.14", 3631 | "from": "which@>=1.2.1 <2.0.0", 3632 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", 3633 | "dev": true 3634 | }, 3635 | "which-module": { 3636 | "version": "1.0.0", 3637 | "from": "which-module@>=1.0.0 <2.0.0", 3638 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz" 3639 | }, 3640 | "window-size": { 3641 | "version": "0.1.0", 3642 | "from": "window-size@0.1.0", 3643 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" 3644 | }, 3645 | "wordwrap": { 3646 | "version": "0.0.2", 3647 | "from": "wordwrap@0.0.2", 3648 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" 3649 | }, 3650 | "wrap-ansi": { 3651 | "version": "2.1.0", 3652 | "from": "wrap-ansi@>=2.0.0 <3.0.0", 3653 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" 3654 | }, 3655 | "wrappy": { 3656 | "version": "1.0.2", 3657 | "from": "wrappy@>=1.0.0 <2.0.0", 3658 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3659 | "dev": true 3660 | }, 3661 | "ws": { 3662 | "version": "1.1.2", 3663 | "from": "ws@1.1.2", 3664 | "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", 3665 | "dev": true 3666 | }, 3667 | "wtf-8": { 3668 | "version": "1.0.0", 3669 | "from": "wtf-8@1.0.0", 3670 | "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", 3671 | "dev": true 3672 | }, 3673 | "xhr2": { 3674 | "version": "0.1.4", 3675 | "from": "xhr2@>=0.1.4 <0.2.0", 3676 | "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz" 3677 | }, 3678 | "xml-char-classes": { 3679 | "version": "1.0.0", 3680 | "from": "xml-char-classes@>=1.0.0 <2.0.0", 3681 | "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz" 3682 | }, 3683 | "xmlhttprequest-ssl": { 3684 | "version": "1.5.3", 3685 | "from": "xmlhttprequest-ssl@1.5.3", 3686 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", 3687 | "dev": true 3688 | }, 3689 | "xtend": { 3690 | "version": "4.0.1", 3691 | "from": "xtend@>=4.0.0 <5.0.0", 3692 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 3693 | }, 3694 | "y18n": { 3695 | "version": "3.2.1", 3696 | "from": "y18n@>=3.2.1 <4.0.0", 3697 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz" 3698 | }, 3699 | "yargs": { 3700 | "version": "6.6.0", 3701 | "from": "yargs@>=6.0.0 <7.0.0", 3702 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", 3703 | "dependencies": { 3704 | "camelcase": { 3705 | "version": "3.0.0", 3706 | "from": "camelcase@>=3.0.0 <4.0.0", 3707 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" 3708 | }, 3709 | "cliui": { 3710 | "version": "3.2.0", 3711 | "from": "cliui@>=3.2.0 <4.0.0", 3712 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz" 3713 | } 3714 | } 3715 | }, 3716 | "yargs-parser": { 3717 | "version": "4.2.1", 3718 | "from": "yargs-parser@>=4.2.0 <5.0.0", 3719 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", 3720 | "dependencies": { 3721 | "camelcase": { 3722 | "version": "3.0.0", 3723 | "from": "camelcase@>=3.0.0 <4.0.0", 3724 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" 3725 | } 3726 | } 3727 | }, 3728 | "yeast": { 3729 | "version": "0.1.2", 3730 | "from": "yeast@0.1.2", 3731 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 3732 | "dev": true 3733 | }, 3734 | "zone.js": { 3735 | "version": "0.8.12", 3736 | "from": "zone.js@0.8.12", 3737 | "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz" 3738 | } 3739 | } 3740 | } 3741 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "test", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "test": "karma start ClientApp/test/karma.conf.js" 7 | }, 8 | "dependencies": { 9 | "@angular/animations": "4.2.5", 10 | "@angular/common": "4.2.5", 11 | "@angular/compiler": "4.2.5", 12 | "@angular/compiler-cli": "4.2.5", 13 | "@angular/core": "4.2.5", 14 | "@angular/forms": "4.2.5", 15 | "@angular/http": "4.2.5", 16 | "@angular/platform-browser": "4.2.5", 17 | "@angular/platform-browser-dynamic": "4.2.5", 18 | "@angular/platform-server": "4.2.5", 19 | "@angular/router": "4.2.5", 20 | "@ngtools/webpack": "1.5.0", 21 | "@types/webpack-env": "1.13.0", 22 | "angular-oauth2-oidc": "^2.1.3", 23 | "angular2-template-loader": "0.6.2", 24 | "aspnet-prerendering": "^3.0.1", 25 | "aspnet-webpack": "^2.0.1", 26 | "awesome-typescript-loader": "3.2.1", 27 | "bootstrap": "3.3.7", 28 | "css": "2.2.1", 29 | "css-loader": "0.28.4", 30 | "es6-shim": "0.35.3", 31 | "event-source-polyfill": "0.0.9", 32 | "expose-loader": "0.7.3", 33 | "extract-text-webpack-plugin": "2.1.2", 34 | "file-loader": "0.11.2", 35 | "html-loader": "0.4.5", 36 | "isomorphic-fetch": "2.2.1", 37 | "jquery": "3.2.1", 38 | "json-loader": "0.5.4", 39 | "preboot": "4.5.2", 40 | "raw-loader": "0.5.1", 41 | "reflect-metadata": "0.1.10", 42 | "rxjs": "5.4.2", 43 | "style-loader": "0.18.2", 44 | "to-string-loader": "1.1.5", 45 | "typescript": "2.4.1", 46 | "url-loader": "0.5.9", 47 | "webpack": "2.5.1", 48 | "webpack-hot-middleware": "2.18.2", 49 | "webpack-merge": "4.1.0", 50 | "zone.js": "0.8.12" 51 | }, 52 | "devDependencies": { 53 | "@types/chai": "4.0.1", 54 | "@types/jasmine": "2.5.53", 55 | "chai": "4.0.2", 56 | "jasmine-core": "2.6.4", 57 | "karma": "1.7.0", 58 | "karma-chai": "0.1.0", 59 | "karma-chrome-launcher": "2.2.0", 60 | "karma-cli": "1.0.1", 61 | "karma-jasmine": "1.1.0", 62 | "karma-webpack": "2.0.3" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /test.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | netcoreapp2.0 4 | true 5 | Latest 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | %(DistFiles.Identity) 41 | PreserveNewest 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "moduleResolution": "node", 5 | "target": "es5", 6 | "sourceMap": true, 7 | "experimentalDecorators": true, 8 | "emitDecoratorMetadata": true, 9 | "skipDefaultLibCheck": true, 10 | "skipLibCheck": true, // Workaround for https://github.com/angular/angular/issues/17863. Remove this if you upgrade to a fixed version of Angular. 11 | "strict": true, 12 | "lib": [ "es6", "dom" ], 13 | "types": [ "webpack-env" ] 14 | }, 15 | "exclude": [ "bin", "node_modules" ], 16 | "atom": { "rewriteTsconfig": false } 17 | } 18 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const webpack = require('webpack'); 3 | const merge = require('webpack-merge'); 4 | const AotPlugin = require('@ngtools/webpack').AotPlugin; 5 | const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin; 6 | 7 | module.exports = (env) => { 8 | // Configuration in common to both client-side and server-side bundles 9 | const isDevBuild = !(env && env.prod); 10 | const sharedConfig = { 11 | stats: { modules: false }, 12 | context: __dirname, 13 | resolve: { extensions: [ '.js', '.ts' ] }, 14 | output: { 15 | filename: '[name].js', 16 | publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix 17 | }, 18 | module: { 19 | rules: [ 20 | { test: /\.ts$/, include: /ClientApp/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' }, 21 | { test: /\.html$/, use: 'html-loader?minimize=false' }, 22 | { test: /\.css$/, use: [ 'to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] }, 23 | { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' } 24 | ] 25 | }, 26 | plugins: [new CheckerPlugin()] 27 | }; 28 | 29 | // Configuration for client-side bundle suitable for running in browsers 30 | const clientBundleOutputDir = './wwwroot/dist'; 31 | const clientBundleConfig = merge(sharedConfig, { 32 | entry: { 'main-client': './ClientApp/boot.browser.ts' }, 33 | output: { path: path.join(__dirname, clientBundleOutputDir) }, 34 | plugins: [ 35 | new webpack.DllReferencePlugin({ 36 | context: __dirname, 37 | manifest: require('./wwwroot/dist/vendor-manifest.json') 38 | }) 39 | ].concat(isDevBuild ? [ 40 | // Plugins that apply in development builds only 41 | new webpack.SourceMapDevToolPlugin({ 42 | filename: '[file].map', // Remove this line if you prefer inline source maps 43 | moduleFilenameTemplate: path.relative(clientBundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk 44 | }) 45 | ] : [ 46 | // Plugins that apply in production builds only 47 | new webpack.optimize.UglifyJsPlugin(), 48 | new AotPlugin({ 49 | tsConfigPath: './tsconfig.json', 50 | entryModule: path.join(__dirname, 'ClientApp/app/app.module.browser#AppModule'), 51 | exclude: ['./**/*.server.ts'] 52 | }) 53 | ]) 54 | }); 55 | 56 | // Configuration for server-side (prerendering) bundle suitable for running in Node 57 | const serverBundleConfig = merge(sharedConfig, { 58 | resolve: { mainFields: ['main'] }, 59 | entry: { 'main-server': './ClientApp/boot.server.ts' }, 60 | plugins: [ 61 | new webpack.DllReferencePlugin({ 62 | context: __dirname, 63 | manifest: require('./ClientApp/dist/vendor-manifest.json'), 64 | sourceType: 'commonjs2', 65 | name: './vendor' 66 | }) 67 | ].concat(isDevBuild ? [] : [ 68 | // Plugins that apply in production builds only 69 | new AotPlugin({ 70 | tsConfigPath: './tsconfig.json', 71 | entryModule: path.join(__dirname, 'ClientApp/app/app.module.server#AppModule'), 72 | exclude: ['./**/*.browser.ts'] 73 | }) 74 | ]), 75 | output: { 76 | libraryTarget: 'commonjs', 77 | path: path.join(__dirname, './ClientApp/dist') 78 | }, 79 | target: 'node', 80 | devtool: 'inline-source-map' 81 | }); 82 | 83 | return [clientBundleConfig, serverBundleConfig]; 84 | }; 85 | -------------------------------------------------------------------------------- /webpack.config.vendor.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const webpack = require('webpack'); 3 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 4 | const merge = require('webpack-merge'); 5 | const treeShakableModules = [ 6 | '@angular/animations', 7 | '@angular/common', 8 | '@angular/compiler', 9 | '@angular/core', 10 | '@angular/forms', 11 | '@angular/http', 12 | '@angular/platform-browser', 13 | '@angular/platform-browser-dynamic', 14 | '@angular/router', 15 | 'zone.js', 16 | ]; 17 | const nonTreeShakableModules = [ 18 | 'bootstrap', 19 | 'bootstrap/dist/css/bootstrap.css', 20 | 'es6-promise', 21 | 'es6-shim', 22 | 'event-source-polyfill', 23 | 'jquery', 24 | ]; 25 | const allModules = treeShakableModules.concat(nonTreeShakableModules); 26 | 27 | module.exports = (env) => { 28 | const extractCSS = new ExtractTextPlugin('vendor.css'); 29 | const isDevBuild = !(env && env.prod); 30 | const sharedConfig = { 31 | stats: { modules: false }, 32 | resolve: { extensions: [ '.js' ] }, 33 | module: { 34 | rules: [ 35 | { test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, use: 'url-loader?limit=100000' } 36 | ] 37 | }, 38 | output: { 39 | publicPath: 'dist/', 40 | filename: '[name].js', 41 | library: '[name]_[hash]' 42 | }, 43 | plugins: [ 44 | new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable) 45 | new webpack.ContextReplacementPlugin(/\@angular\b.*\b(bundles|linker)/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/11580 46 | new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/14898 47 | new webpack.IgnorePlugin(/^vertx$/) // Workaround for https://github.com/stefanpenner/es6-promise/issues/100 48 | ] 49 | }; 50 | 51 | const clientBundleConfig = merge(sharedConfig, { 52 | entry: { 53 | // To keep development builds fast, include all vendor dependencies in the vendor bundle. 54 | // But for production builds, leave the tree-shakable ones out so the AOT compiler can produce a smaller bundle. 55 | vendor: isDevBuild ? allModules : nonTreeShakableModules 56 | }, 57 | output: { path: path.join(__dirname, 'wwwroot', 'dist') }, 58 | module: { 59 | rules: [ 60 | { test: /\.css(\?|$)/, use: extractCSS.extract({ use: isDevBuild ? 'css-loader' : 'css-loader?minimize' }) } 61 | ] 62 | }, 63 | plugins: [ 64 | extractCSS, 65 | new webpack.DllPlugin({ 66 | path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'), 67 | name: '[name]_[hash]' 68 | }) 69 | ].concat(isDevBuild ? [] : [ 70 | new webpack.optimize.UglifyJsPlugin() 71 | ]) 72 | }); 73 | 74 | const serverBundleConfig = merge(sharedConfig, { 75 | target: 'node', 76 | resolve: { mainFields: ['main'] }, 77 | entry: { vendor: allModules.concat(['aspnet-prerendering']) }, 78 | output: { 79 | path: path.join(__dirname, 'ClientApp', 'dist'), 80 | libraryTarget: 'commonjs2', 81 | }, 82 | module: { 83 | rules: [ { test: /\.css(\?|$)/, use: ['to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize' ] } ] 84 | }, 85 | plugins: [ 86 | new webpack.DllPlugin({ 87 | path: path.join(__dirname, 'ClientApp', 'dist', '[name]-manifest.json'), 88 | name: '[name]_[hash]' 89 | }) 90 | ] 91 | }); 92 | 93 | return [clientBundleConfig, serverBundleConfig]; 94 | } 95 | -------------------------------------------------------------------------------- /wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Gimly/SampleNetCoreAngularKeycloak/c0866ebc65e30582baf994bd560ea3db4ce69c72/wwwroot/favicon.ico --------------------------------------------------------------------------------