diff --git a/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec new file mode 100644 index 0000000000..1d2178fed7 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/Microsoft.AspNetCore.SpaTemplates.nuspec @@ -0,0 +1,23 @@ + + + + Microsoft.AspNetCore.SpaTemplates + 0.0.0 + Single Page Application templates for ASP.NET Core + Microsoft + en-US + https://github.com/aspnet/javascriptservices + https://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm + Copyright © Microsoft Corporation + true + + + + + + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.gitignore b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.gitignore new file mode 100644 index 0000000000..c8274b5fe2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.gitignore @@ -0,0 +1,237 @@ +/Properties/launchSettings.json + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +bin/ +Bin/ +obj/ +Obj/ + +# Visual Studio 2015 cache/options directory +.vs/ +/wwwroot/dist/ +/ClientApp/dist/ + +/yarn.lock + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +orleans.codegen.cs + +/node_modules + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/dotnetcli.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..c15c6681aa --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/dotnetcli.host.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "TargetFrameworkOverride": { + "isHidden": "true", + "longName": "target-framework-override", + "shortName": "" + }, + "Framework": { + "longName": "framework" + }, + "skipRestore": { + "longName": "no-restore", + "shortName": "" + } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/icon.png b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/icon.png new file mode 100644 index 0000000000..5a82b498eb Binary files /dev/null and b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/icon.png differ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json new file mode 100644 index 0000000000..3b176af9f9 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/template.json @@ -0,0 +1,87 @@ +{ + "author": "Microsoft", + "classifications": [ + "Web", + "MVC", + "SPA" + ], + "groupIdentity": "Microsoft.AspNetCore.SpaTemplates.Aurelia", + "identity": "Microsoft.AspNetCore.SpaTemplates.Aurelia.CSharp", + "name": "ASP.NET Core with Aurelia", + "preferNameDirectory": true, + "primaryOutputs": [ + { + "path": "AureliaSpa.csproj" + } + ], + "shortName": "aurelia", + "sourceName": "AureliaSpa", + "sources": [ + { + "source": "./", + "target": "./", + "exclude": [ + ".template.config/**" + ] + } + ], + "symbols": { + "TargetFrameworkOverride": { + "type": "parameter", + "description": "Overrides the target framework", + "replaces": "TargetFrameworkOverride", + "datatype": "string", + "defaultValue": "" + }, + "Framework": { + "type": "parameter", + "description": "The target framework for the project.", + "datatype": "choice", + "choices": [ + { + "choice": "netcoreapp2.0", + "description": "Target netcoreapp2.0" + } + ], + "replaces": "netcoreapp2.0", + "defaultValue": "netcoreapp2.0" + }, + "HostIdentifier": { + "type": "bind", + "binding": "HostIdentifier" + }, + "skipRestore": { + "type": "parameter", + "datatype": "bool", + "description": "If specified, skips the automatic restore of the project on create.", + "defaultValue": "false" + } + }, + "tags": { + "language": "C#", + "type": "project" + }, + "postActions": [ + { + "condition": "(!skipRestore)", + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [ + { + "text": "Run 'dotnet restore'" + } + ], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier == \"dotnetcli\" || HostIdentifier == \"dotnetcli-preview\")", + "actionId": "AC1156F7-BB77-4DB8-B28F-24EEBCCA1E5C", + "description": "\n\n-------------------------------------------------------------------\nIMPORTANT: Before running this project on the command line,\n you must restore NPM packages by running \"npm install\"\n-------------------------------------------------------------------\n", + "manualInstructions": [ + { + "text": "Run \"npm install\"" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/vs-2017.3.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/vs-2017.3.host.json new file mode 100644 index 0000000000..18e8697a7b --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/.template.config/vs-2017.3.host.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json.schemastore.org/vs-2017.3.host", + "name": { + "text": "Aurelia", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1200" + }, + "description": { + "text": "A project template for creating an ASP.NET Core application with Aurelia", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1201" + }, + "order": 301, + "icon": "icon.png", + "learnMoreLink": "https://github.com/aspnet/JavaScriptServices", + "uiFilters": [ + "oneaspnet" + ], + "minFullFrameworkVersion": "4.6.1" +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj new file mode 100644 index 0000000000..eff4c62c83 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/AureliaSpa.csproj @@ -0,0 +1,57 @@ + + + + netcoreapp2.0 + TargetFrameworkOverride + true + Latest + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(DistFiles.Identity) + PreserveNewest + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.css b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.css new file mode 100644 index 0000000000..63926006af --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.css @@ -0,0 +1,6 @@ +@media (max-width: 767px) { + /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ + .body-content { + padding-top: 50px; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.html new file mode 100644 index 0000000000..27cae10eb2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.html @@ -0,0 +1,14 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.ts new file mode 100644 index 0000000000..1ff0e627f4 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/app/app.ts @@ -0,0 +1,34 @@ +import { Aurelia, PLATFORM } from 'aurelia-framework'; +import { Router, RouterConfiguration } from 'aurelia-router'; + +export class App { + router: Router; + + configureRouter(config: RouterConfiguration, router: Router) { + config.title = 'Aurelia'; + config.map([{ + route: [ '', 'home' ], + name: 'home', + settings: { icon: 'home' }, + moduleId: PLATFORM.moduleName('../home/home'), + nav: true, + title: 'Home' + }, { + route: 'counter', + name: 'counter', + settings: { icon: 'education' }, + moduleId: PLATFORM.moduleName('../counter/counter'), + nav: true, + title: 'Counter' + }, { + route: 'fetch-data', + name: 'fetchdata', + settings: { icon: 'th-list' }, + moduleId: PLATFORM.moduleName('../fetchdata/fetchdata'), + nav: true, + title: 'Fetch data' + }]); + + this.router = router; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.html new file mode 100644 index 0000000000..7636a4f1aa --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.html @@ -0,0 +1,9 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.ts new file mode 100644 index 0000000000..3217c449ca --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/counter/counter.ts @@ -0,0 +1,7 @@ +export class Counter { + public currentCount = 0; + + public incrementCounter() { + this.currentCount++; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.html new file mode 100644 index 0000000000..bd06c35d46 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.html @@ -0,0 +1,26 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.ts new file mode 100644 index 0000000000..6cd72ac1ce --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/fetchdata/fetchdata.ts @@ -0,0 +1,22 @@ +import { HttpClient } from 'aurelia-fetch-client'; +import { inject } from 'aurelia-framework'; + +@inject(HttpClient) +export class Fetchdata { + public forecasts: WeatherForecast[]; + + constructor(http: HttpClient) { + http.fetch('api/SampleData/WeatherForecasts') + .then(result => result.json() as Promise) + .then(data => { + this.forecasts = data; + }); + } +} + +interface WeatherForecast { + dateFormatted: string; + temperatureC: number; + temperatureF: number; + summary: string; +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.html new file mode 100644 index 0000000000..50437ca2b0 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.html @@ -0,0 +1,16 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.ts new file mode 100644 index 0000000000..737d6cc26c --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/home/home.ts @@ -0,0 +1,2 @@ +export class Home { +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.css b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.css new file mode 100644 index 0000000000..8518eda33d --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.css @@ -0,0 +1,59 @@ +li .glyphicon { + margin-right: 10px; +} + +/* Highlighting rules for nav menu items */ +li.au-target.link-active a, +li.au-target.link-active a:hover, +li.au-target.link-active a:focus { + background-color: #4189C7; + color: white; +} + +/* Keep the nav menu independent of scrolling and on top of other items */ +.main-nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1; +} + +@media (min-width: 768px) { + /* On small screens, convert the nav menu to a vertical sidebar */ + .main-nav { + height: 100%; + width: calc(25% - 20px); + } + .navbar { + border-radius: 0px; + border-width: 0px; + height: 100%; + } + .navbar-header { + float: none; + } + .navbar-collapse { + border-top: 1px solid #444; + padding: 0px; + } + .navbar ul { + float: none; + } + .navbar li { + float: none; + font-size: 15px; + margin: 6px; + } + .navbar li a { + padding: 10px 16px; + border-radius: 4px; + } + .navbar a { + /* If a menu item's text is too long, truncate it */ + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.html new file mode 100644 index 0000000000..1661aa6247 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/app/components/navmenu/navmenu.html @@ -0,0 +1,26 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/boot.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/boot.ts new file mode 100644 index 0000000000..053b9c3135 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/ClientApp/boot.ts @@ -0,0 +1,21 @@ +import 'isomorphic-fetch'; +import { Aurelia, PLATFORM } from 'aurelia-framework'; +import { HttpClient } from 'aurelia-fetch-client'; +import 'bootstrap/dist/css/bootstrap.css'; +import 'bootstrap'; +declare const IS_DEV_BUILD: boolean; // The value is supplied by Webpack during the build + +export function configure(aurelia: Aurelia) { + aurelia.use.standardConfiguration(); + + if (IS_DEV_BUILD) { + aurelia.use.developmentLogging(); + } + + new HttpClient().configure(config => { + const baseUrl = document.getElementsByTagName('base')[0].href; + config.withBaseUrl(baseUrl); + }); + + aurelia.start().then(() => aurelia.setRoot(PLATFORM.moduleName('app/components/app/app'))); +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/HomeController.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/HomeController.cs new file mode 100644 index 0000000000..1834659896 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/HomeController.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace AureliaSpa.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() + { + return View(); + } + + public IActionResult Error() + { + ViewData["RequestId"] = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + return View(); + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/SampleDataController.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/SampleDataController.cs new file mode 100644 index 0000000000..6705a682bb --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Controllers/SampleDataController.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace AureliaSpa.Controllers +{ + [Route("api/[controller]")] + public class SampleDataController : Controller + { + private static string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + [HttpGet("[action]")] + public IEnumerable WeatherForecasts() + { + var rng = new Random(); + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + DateFormatted = DateTime.Now.AddDays(index).ToString("d"), + TemperatureC = rng.Next(-20, 55), + Summary = Summaries[rng.Next(Summaries.Length)] + }); + } + + public class WeatherForecast + { + public string DateFormatted { get; set; } + public int TemperatureC { get; set; } + public string Summary { get; set; } + + public int TemperatureF + { + get + { + return 32 + (int)(this.TemperatureC / 0.5556); + } + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Program.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Program.cs new file mode 100644 index 0000000000..0b628556fc --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; + +namespace AureliaSpa +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Startup.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Startup.cs new file mode 100644 index 0000000000..4a96590eb5 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Startup.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.SpaServices.Webpack; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace AureliaSpa +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions + { + HotModuleReplacement = true + }); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + app.UseStaticFiles(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + + routes.MapSpaFallbackRoute( + name: "spa-fallback", + defaults: new { controller = "Home", action = "Index" }); + }); + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Home/Index.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Home/Index.cshtml new file mode 100644 index 0000000000..f6b179145f --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Home/Index.cshtml @@ -0,0 +1,10 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +
Loading...
+ +@section scripts { + + +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/Error.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/Error.cshtml new file mode 100644 index 0000000000..78e35d5d3c --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/Error.cshtml @@ -0,0 +1,21 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (!string.IsNullOrEmpty((string)ViewData["RequestId"])) +{ +

+ Request ID: @ViewData["RequestId"] +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ 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. +

diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/_Layout.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000000..4e0019c4b8 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/Shared/_Layout.cshtml @@ -0,0 +1,16 @@ + + + + + + @ViewData["Title"] - AureliaSpa + + + + + + @RenderBody() + + @RenderSection("scripts", required: false) + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewImports.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewImports.cshtml new file mode 100644 index 0000000000..4542402dcf --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using AureliaSpa +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.SpaServices diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewStart.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewStart.cshtml new file mode 100644 index 0000000000..820a2f6e02 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.Development.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.Development.json new file mode 100644 index 0000000000..457e003321 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.Development.json @@ -0,0 +1,19 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + }, + "Console": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.json new file mode 100644 index 0000000000..c851e129f9 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Warning" + } + }, + "Console": { + "LogLevel": { + "Default": "Warning" + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/npm-shrinkwrap.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/npm-shrinkwrap.json new file mode 100644 index 0000000000..de9bb13639 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/npm-shrinkwrap.json @@ -0,0 +1,2615 @@ +{ + "name": "AureliaSpa", + "version": "0.0.0", + "dependencies": { + "@types/webpack-env": { + "version": "1.13.0", + "from": "@types/webpack-env@>=1.13.0 <2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.0.tgz", + "dev": true + }, + "acorn": { + "version": "5.0.3", + "from": "acorn@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "from": "acorn-dynamic-import@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "dev": true, + "dependencies": { + "acorn": { + "version": "4.0.13", + "from": "acorn@>=4.0.3 <5.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "dev": true + } + } + }, + "ajv": { + "version": "5.2.0", + "from": "ajv@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", + "dev": true + }, + "ajv-keywords": { + "version": "1.5.1", + "from": "ajv-keywords@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "from": "align-text@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "from": "alphanum-sort@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "from": "ansi-html@0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "from": "ansi-styles@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "from": "anymatch@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "from": "argparse@>=1.0.7 <2.0.0", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "from": "arr-diff@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "from": "arr-flatten@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "from": "array-unique@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "from": "arrify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "from": "asn1.js@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "dev": true + }, + "aspnet-webpack": { + "version": "2.0.1", + "from": "aspnet-webpack@2.0.1", + "resolved": "https://registry.npmjs.org/aspnet-webpack/-/aspnet-webpack-2.0.1.tgz", + "dev": true + }, + "assert": { + "version": "1.4.1", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "from": "ast-types@0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "dev": true + }, + "async": { + "version": "2.5.0", + "from": "async@>=2.1.2 <3.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "from": "async-each@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "dev": true + }, + "aurelia-binding": { + "version": "1.2.1", + "from": "aurelia-binding@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-binding/-/aurelia-binding-1.2.1.tgz" + }, + "aurelia-bootstrapper": { + "version": "2.1.1", + "from": "aurelia-bootstrapper@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/aurelia-bootstrapper/-/aurelia-bootstrapper-2.1.1.tgz" + }, + "aurelia-dependency-injection": { + "version": "1.3.1", + "from": "aurelia-dependency-injection@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-dependency-injection/-/aurelia-dependency-injection-1.3.1.tgz" + }, + "aurelia-event-aggregator": { + "version": "1.0.1", + "from": "aurelia-event-aggregator@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-event-aggregator/-/aurelia-event-aggregator-1.0.1.tgz" + }, + "aurelia-fetch-client": { + "version": "1.1.2", + "from": "aurelia-fetch-client@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-fetch-client/-/aurelia-fetch-client-1.1.2.tgz" + }, + "aurelia-framework": { + "version": "1.1.2", + "from": "aurelia-framework@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-framework/-/aurelia-framework-1.1.2.tgz" + }, + "aurelia-history": { + "version": "1.0.0", + "from": "aurelia-history@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-history/-/aurelia-history-1.0.0.tgz" + }, + "aurelia-history-browser": { + "version": "1.0.0", + "from": "aurelia-history-browser@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-history-browser/-/aurelia-history-browser-1.0.0.tgz" + }, + "aurelia-hot-module-reload": { + "version": "0.1.0", + "from": "aurelia-hot-module-reload@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/aurelia-hot-module-reload/-/aurelia-hot-module-reload-0.1.0.tgz" + }, + "aurelia-loader": { + "version": "1.0.0", + "from": "aurelia-loader@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-loader/-/aurelia-loader-1.0.0.tgz" + }, + "aurelia-loader-default": { + "version": "1.0.2", + "from": "aurelia-loader-default@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-loader-default/-/aurelia-loader-default-1.0.2.tgz" + }, + "aurelia-loader-webpack": { + "version": "2.1.0", + "from": "aurelia-loader-webpack@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/aurelia-loader-webpack/-/aurelia-loader-webpack-2.1.0.tgz" + }, + "aurelia-logging": { + "version": "1.3.1", + "from": "aurelia-logging@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-logging/-/aurelia-logging-1.3.1.tgz" + }, + "aurelia-logging-console": { + "version": "1.0.0", + "from": "aurelia-logging-console@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-logging-console/-/aurelia-logging-console-1.0.0.tgz" + }, + "aurelia-metadata": { + "version": "1.0.3", + "from": "aurelia-metadata@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-metadata/-/aurelia-metadata-1.0.3.tgz" + }, + "aurelia-pal": { + "version": "1.3.0", + "from": "aurelia-pal@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-pal/-/aurelia-pal-1.3.0.tgz" + }, + "aurelia-pal-browser": { + "version": "1.2.1", + "from": "aurelia-pal-browser@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-pal-browser/-/aurelia-pal-browser-1.2.1.tgz" + }, + "aurelia-path": { + "version": "1.1.1", + "from": "aurelia-path@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-path/-/aurelia-path-1.1.1.tgz" + }, + "aurelia-polyfills": { + "version": "1.2.1", + "from": "aurelia-polyfills@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-polyfills/-/aurelia-polyfills-1.2.1.tgz" + }, + "aurelia-route-recognizer": { + "version": "1.1.0", + "from": "aurelia-route-recognizer@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-route-recognizer/-/aurelia-route-recognizer-1.1.0.tgz" + }, + "aurelia-router": { + "version": "1.3.0", + "from": "aurelia-router@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-router/-/aurelia-router-1.3.0.tgz" + }, + "aurelia-task-queue": { + "version": "1.2.0", + "from": "aurelia-task-queue@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-task-queue/-/aurelia-task-queue-1.2.0.tgz" + }, + "aurelia-templating": { + "version": "1.4.2", + "from": "aurelia-templating@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-templating/-/aurelia-templating-1.4.2.tgz" + }, + "aurelia-templating-binding": { + "version": "1.3.0", + "from": "aurelia-templating-binding@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-templating-binding/-/aurelia-templating-binding-1.3.0.tgz" + }, + "aurelia-templating-resources": { + "version": "1.4.0", + "from": "aurelia-templating-resources@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-templating-resources/-/aurelia-templating-resources-1.4.0.tgz" + }, + "aurelia-templating-router": { + "version": "1.1.0", + "from": "aurelia-templating-router@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/aurelia-templating-router/-/aurelia-templating-router-1.1.0.tgz" + }, + "aurelia-webpack-plugin": { + "version": "2.0.0-rc.2", + "from": "aurelia-webpack-plugin@>=2.0.0-rc.2 <3.0.0", + "resolved": "https://registry.npmjs.org/aurelia-webpack-plugin/-/aurelia-webpack-plugin-2.0.0-rc.2.tgz", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "from": "autoprefixer@>=6.3.1 <7.0.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "from": "babel-code-frame@>=6.11.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "from": "balanced-match@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "from": "base64-js@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "from": "big.js@>=3.1.3 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "from": "binary-extensions@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "from": "bn.js@>=4.1.1 <5.0.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "dev": true + }, + "bootstrap": { + "version": "3.3.7", + "from": "bootstrap@>=3.3.7 <4.0.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz" + }, + "brace-expansion": { + "version": "1.1.8", + "from": "brace-expansion@>=1.1.7 <2.0.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "dev": true + }, + "braces": { + "version": "1.8.5", + "from": "braces@>=1.8.2 <2.0.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "from": "brorand@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "from": "browserify-aes@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "dev": true + }, + "browserify-cipher": { + "version": "1.0.0", + "from": "browserify-cipher@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "dev": true + }, + "browserify-des": { + "version": "1.0.0", + "from": "browserify-des@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "dev": true + }, + "browserify-rsa": { + "version": "4.0.1", + "from": "browserify-rsa@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "dev": true + }, + "browserify-sign": { + "version": "4.0.4", + "from": "browserify-sign@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "dev": true + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "from": "browserslist@>=1.7.6 <2.0.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "from": "buffer@>=4.3.0 <5.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "from": "buffer-xor@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "from": "builtin-modules@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "from": "builtin-status-codes@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "dev": true + }, + "bundle-loader": { + "version": "0.5.5", + "from": "bundle-loader@>=0.5.4 <0.6.0", + "resolved": "https://registry.npmjs.org/bundle-loader/-/bundle-loader-0.5.5.tgz", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "from": "camel-case@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "dev": true + }, + "caniuse-api": { + "version": "1.6.1", + "from": "caniuse-api@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "dev": true + }, + "caniuse-db": { + "version": "1.0.30000694", + "from": "caniuse-db@>=1.0.30000634 <2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000694.tgz", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "from": "center-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "from": "chalk@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "from": "chokidar@>=1.4.3 <2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "dev": true + }, + "cipher-base": { + "version": "1.0.3", + "from": "cipher-base@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "dev": true + }, + "clap": { + "version": "1.2.0", + "from": "clap@>=1.0.9 <2.0.0", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "dev": true + }, + "clean-css": { + "version": "4.1.4", + "from": "clean-css@>=4.1.0 <4.2.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.4.tgz", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "from": "cliui@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "dev": true + }, + "clone": { + "version": "1.0.2", + "from": "clone@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "dev": true + }, + "co": { + "version": "4.6.0", + "from": "co@>=4.6.0 <5.0.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "dev": true + }, + "coa": { + "version": "1.0.3", + "from": "coa@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "from": "code-point-at@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "dev": true + }, + "color": { + "version": "0.11.4", + "from": "color@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "from": "color-convert@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "dev": true + }, + "color-name": { + "version": "1.1.2", + "from": "color-name@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "from": "color-string@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "from": "colormin@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "dev": true + }, + "colors": { + "version": "1.1.2", + "from": "colors@>=1.1.2 <1.2.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "dev": true + }, + "commander": { + "version": "2.9.0", + "from": "commander@>=2.9.0 <2.10.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "from": "concat-map@0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "dev": true + }, + "connect": { + "version": "3.6.2", + "from": "connect@>=3.4.1 <4.0.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "from": "constants-browserify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "from": "create-ecdh@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "dev": true + }, + "create-hash": { + "version": "1.1.3", + "from": "create-hash@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "dev": true + }, + "create-hmac": { + "version": "1.1.6", + "from": "create-hmac@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "dev": true + }, + "crypto-browserify": { + "version": "3.11.0", + "from": "crypto-browserify@>=3.11.0 <4.0.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "dev": true + }, + "css-color-names": { + "version": "0.0.4", + "from": "css-color-names@0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "dev": true + }, + "css-loader": { + "version": "0.28.4", + "from": "css-loader@>=0.28.0 <0.29.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "from": "css-selector-tokenizer@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "from": "cssesc@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "from": "cssnano@>=2.6.1 <4.0.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "dev": true + }, + "csso": { + "version": "2.3.2", + "from": "csso@>=2.3.1 <2.4.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "dev": true + }, + "debug": { + "version": "2.6.7", + "from": "debug@2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "from": "decamelize@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "dev": true + }, + "defined": { + "version": "1.0.0", + "from": "defined@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "from": "des.js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "from": "diffie-hellman@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "dev": true + }, + "domain-browser": { + "version": "1.1.7", + "from": "domain-browser@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.14", + "from": "electron-to-chromium@>=1.2.7 <2.0.0", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "from": "elliptic@>=6.0.0 <7.0.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "from": "emojis-list@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "from": "encodeurl@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "from": "encoding@>=0.1.11 <0.2.0", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz" + }, + "enhanced-resolve": { + "version": "3.1.0", + "from": "enhanced-resolve@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", + "dev": true, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + } + } + }, + "errno": { + "version": "0.1.4", + "from": "errno@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "from": "error-ex@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "dev": true + }, + "es6-promise": { + "version": "3.3.1", + "from": "es6-promise@>=3.1.2 <4.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "dev": true + }, + "es6-templates": { + "version": "0.2.3", + "from": "es6-templates@>=0.2.2 <0.3.0", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "from": "escape-html@>=1.0.3 <1.1.0", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "dev": true + }, + "esprima": { + "version": "3.1.3", + "from": "esprima@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "from": "esutils@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "dev": true + }, + "events": { + "version": "1.1.1", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "from": "evp_bytestokey@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "from": "expand-brackets@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "from": "expand-range@>=1.8.1 <2.0.0", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "from": "extglob@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "dev": true + }, + "extract-text-webpack-plugin": { + "version": "2.1.2", + "from": "extract-text-webpack-plugin@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", + "dev": true + }, + "fast-deep-equal": { + "version": "0.1.0", + "from": "fast-deep-equal@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "from": "fastparse@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "dev": true + }, + "file-loader": { + "version": "0.11.2", + "from": "file-loader@>=0.11.1 <0.12.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "from": "filename-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "from": "fill-range@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "dev": true + }, + "finalhandler": { + "version": "1.0.3", + "from": "finalhandler@1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "from": "find-up@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "dev": true + }, + "flatten": { + "version": "1.0.2", + "from": "flatten@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "from": "for-in@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "from": "for-own@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "dev": true + }, + "function-bind": { + "version": "1.1.0", + "from": "function-bind@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "from": "get-caller-file@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "from": "glob-base@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "from": "glob-parent@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>=1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "dev": true + }, + "has": { + "version": "1.0.1", + "from": "has@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "from": "hash-base@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "dev": true + }, + "hash.js": { + "version": "1.1.1", + "from": "hash.js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", + "dev": true + }, + "he": { + "version": "1.1.1", + "from": "he@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "from": "hmac-drbg@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "from": "hosted-git-info@>=2.1.4 <3.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "from": "html-comment-regex@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "from": "html-entities@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "dev": true + }, + "html-loader": { + "version": "0.4.5", + "from": "html-loader@>=0.4.5 <0.5.0", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", + "dev": true + }, + "html-minifier": { + "version": "3.5.2", + "from": "html-minifier@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "from": "https-browserify@0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "dev": true + }, + "iconv-lite": { + "version": "0.4.18", + "from": "iconv-lite@>=0.4.13 <0.5.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz" + }, + "icss-replace-symbols": { + "version": "1.1.0", + "from": "icss-replace-symbols@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "from": "icss-utils@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "from": "indexes-of@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "from": "indexof@0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "dev": true + }, + "interpret": { + "version": "1.0.3", + "from": "interpret@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "from": "invert-kv@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "from": "is-absolute-url@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "from": "is-arrayish@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "from": "is-binary-path@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "from": "is-buffer@>=1.1.5 <2.0.0", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "from": "is-builtin-module@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "from": "is-dotfile@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "from": "is-equal-shallow@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "from": "is-extendable@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "from": "is-number@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "from": "is-plain-obj@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "from": "is-posix-bracket@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "from": "is-primitive@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "from": "is-stream@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + }, + "is-svg": { + "version": "2.1.0", + "from": "is-svg@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "from": "is-utf8@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "from": "isobject@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "from": "isomorphic-fetch@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" + }, + "jquery": { + "version": "3.2.1", + "from": "jquery@>=3.2.1 <4.0.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" + }, + "js-base64": { + "version": "2.1.9", + "from": "js-base64@>=2.1.9 <3.0.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "from": "js-tokens@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "from": "js-yaml@>=3.7.0 <3.8.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "dev": true, + "dependencies": { + "esprima": { + "version": "2.7.3", + "from": "esprima@>=2.6.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "dev": true + } + } + }, + "jsesc": { + "version": "0.5.0", + "from": "jsesc@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "from": "json-loader@>=0.5.4 <0.6.0", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "from": "json-schema-traverse@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "from": "json-stable-stringify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "dev": true + }, + "json5": { + "version": "0.5.1", + "from": "json5@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "from": "jsonify@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "from": "kind-of@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "from": "lazy-cache@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "from": "lcid@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "from": "load-json-file@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "dev": true + }, + "loader-runner": { + "version": "2.3.0", + "from": "loader-runner@>=2.3.0 <3.0.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "from": "loader-utils@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "from": "lodash@>=4.14.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "from": "lodash.camelcase@>=4.3.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "from": "lodash.memoize@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "from": "lodash.uniq@>=4.5.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "dev": true + }, + "longest": { + "version": "1.0.1", + "from": "longest@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "from": "lower-case@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "dev": true + }, + "macaddress": { + "version": "0.2.8", + "from": "macaddress@>=0.2.8 <0.3.0", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "dev": true + }, + "math-expression-evaluator": { + "version": "1.2.17", + "from": "math-expression-evaluator@>=1.2.14 <2.0.0", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "dev": true + }, + "memory-fs": { + "version": "0.3.0", + "from": "memory-fs@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "from": "micromatch@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "dev": true + }, + "miller-rabin": { + "version": "4.0.0", + "from": "miller-rabin@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "dev": true + }, + "mime": { + "version": "1.3.6", + "from": "mime@>=1.3.4 <2.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "from": "minimalistic-assert@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "from": "minimalistic-crypto-utils@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dev": true + }, + "ms": { + "version": "2.0.0", + "from": "ms@2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "dev": true + }, + "ncname": { + "version": "1.0.0", + "from": "ncname@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "dev": true + }, + "no-case": { + "version": "2.3.1", + "from": "no-case@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "dev": true + }, + "node-fetch": { + "version": "1.7.1", + "from": "node-fetch@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz" + }, + "node-libs-browser": { + "version": "2.0.0", + "from": "node-libs-browser@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.25 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.3.8", + "from": "normalize-package-data@>=2.3.2 <3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "from": "normalize-path@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "from": "normalize-range@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "from": "normalize-url@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "from": "num2fraction@>=1.2.2 <2.0.0", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "from": "object-assign@>=4.1.0 <5.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "from": "object.omit@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dev": true + }, + "os-browserify": { + "version": "0.2.1", + "from": "os-browserify@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "from": "os-locale@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "dev": true + }, + "pako": { + "version": "0.2.9", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "dev": true + }, + "param-case": { + "version": "2.1.1", + "from": "param-case@>=2.1.0 <2.2.0", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "dev": true + }, + "parse-asn1": { + "version": "5.1.0", + "from": "parse-asn1@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "from": "parse-glob@>=3.0.4 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "from": "parse-json@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "dev": true + }, + "parseurl": { + "version": "1.3.1", + "from": "parseurl@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "from": "path-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "from": "path-exists@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "from": "path-is-absolute@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "from": "path-type@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "dev": true + }, + "pbkdf2": { + "version": "3.0.12", + "from": "pbkdf2@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "dev": true + }, + "pify": { + "version": "2.3.0", + "from": "pify@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "from": "pinkie@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "from": "pinkie-promise@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "dev": true + }, + "postcss": { + "version": "5.2.17", + "from": "postcss@>=5.0.6 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "dev": true, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "from": "supports-color@>=3.2.3 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "dev": true + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "from": "postcss-calc@>=5.2.0 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "dev": true + }, + "postcss-colormin": { + "version": "2.2.2", + "from": "postcss-colormin@>=2.1.8 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "dev": true + }, + "postcss-convert-values": { + "version": "2.6.1", + "from": "postcss-convert-values@>=2.3.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "dev": true + }, + "postcss-discard-comments": { + "version": "2.0.4", + "from": "postcss-discard-comments@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "from": "postcss-discard-duplicates@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "dev": true + }, + "postcss-discard-empty": { + "version": "2.1.0", + "from": "postcss-discard-empty@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "dev": true + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "from": "postcss-discard-overridden@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "dev": true + }, + "postcss-discard-unused": { + "version": "2.2.3", + "from": "postcss-discard-unused@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "dev": true + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "from": "postcss-filter-plugins@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "dev": true + }, + "postcss-merge-idents": { + "version": "2.1.7", + "from": "postcss-merge-idents@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "dev": true + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "from": "postcss-merge-longhand@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "dev": true + }, + "postcss-merge-rules": { + "version": "2.1.2", + "from": "postcss-merge-rules@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "dev": true + }, + "postcss-message-helpers": { + "version": "2.0.0", + "from": "postcss-message-helpers@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "from": "postcss-minify-font-values@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "dev": true + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "from": "postcss-minify-gradients@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "dev": true + }, + "postcss-minify-params": { + "version": "1.2.2", + "from": "postcss-minify-params@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "dev": true + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "from": "postcss-minify-selectors@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "from": "postcss-modules-extract-imports@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "from": "postcss-modules-local-by-default@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "from": "postcss-modules-scope@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "from": "postcss-modules-values@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "from": "postcss-normalize-charset@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "dev": true + }, + "postcss-normalize-url": { + "version": "3.0.8", + "from": "postcss-normalize-url@>=3.0.7 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "dev": true + }, + "postcss-ordered-values": { + "version": "2.2.3", + "from": "postcss-ordered-values@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "dev": true + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "from": "postcss-reduce-idents@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "dev": true + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "from": "postcss-reduce-initial@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "dev": true + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "from": "postcss-reduce-transforms@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "dev": true + }, + "postcss-selector-parser": { + "version": "2.2.3", + "from": "postcss-selector-parser@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "dev": true + }, + "postcss-svgo": { + "version": "2.1.6", + "from": "postcss-svgo@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "dev": true + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "from": "postcss-unique-selectors@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.0", + "from": "postcss-value-parser@>=3.3.0 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "from": "postcss-zindex@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "from": "prepend-http@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "from": "preserve@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "dev": true + }, + "private": { + "version": "0.1.7", + "from": "private@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "dev": true + }, + "process": { + "version": "0.11.10", + "from": "process@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "process-nextick-args@>=1.0.6 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "dev": true + }, + "prr": { + "version": "0.0.0", + "from": "prr@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "from": "public-encrypt@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "dev": true + }, + "q": { + "version": "1.5.0", + "from": "q@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "from": "query-string@>=4.1.0 <5.0.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "from": "querystring-es3@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "from": "randomatic@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "from": "is-number@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "from": "kind-of@^3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "from": "kind-of@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.5", + "from": "randombytes@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "from": "range-parser@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "from": "read-pkg@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "from": "read-pkg-up@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "from": "readable-stream@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "dev": true + }, + "readdirp": { + "version": "2.1.0", + "from": "readdirp@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "dev": true + }, + "recast": { + "version": "0.11.23", + "from": "recast@>=0.11.12 <0.12.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "dev": true + }, + "reduce-css-calc": { + "version": "1.3.0", + "from": "reduce-css-calc@>=1.2.6 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "dev": true, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "balanced-match@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.2", + "from": "reduce-function-call@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "dev": true, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "from": "balanced-match@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "dev": true + } + } + }, + "regenerate": { + "version": "1.3.2", + "from": "regenerate@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "from": "regex-cache@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "from": "regexpu-core@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "from": "regjsgen@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "from": "regjsparser@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "dev": true + }, + "relateurl": { + "version": "0.2.7", + "from": "relateurl@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "from": "remove-trailing-separator@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "from": "repeat-element@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "from": "repeat-string@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "from": "require-directory@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "from": "require-from-string@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "from": "require-main-filename@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "from": "right-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "from": "ripemd160@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "from": "safe-buffer@>=5.1.0 <5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "dev": true + }, + "sax": { + "version": "1.2.4", + "from": "sax@>=1.2.1 <1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "from": "schema-utils@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "dev": true + }, + "semver": { + "version": "5.3.0", + "from": "semver@>=5.0.1 <6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "from": "set-blocking@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "from": "set-immediate-shim@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "from": "setimmediate@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "from": "sha.js@>=2.4.0 <3.0.0", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "from": "sort-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "dev": true + }, + "source-list-map": { + "version": "0.1.8", + "from": "source-list-map@>=0.1.7 <0.2.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "from": "source-map@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "from": "spdx-correct@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "from": "spdx-expression-parse@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "from": "spdx-license-ids@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "from": "sprintf-js@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "from": "statuses@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "from": "stream-browserify@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "dev": true + }, + "stream-http": { + "version": "2.7.2", + "from": "stream-http@>=2.3.1 <3.0.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "from": "strict-uri-encode@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "from": "string_decoder@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "from": "string-width@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "from": "strip-bom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "dev": true + }, + "style-loader": { + "version": "0.16.1", + "from": "style-loader@>=0.16.1 <0.17.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.16.1.tgz", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "from": "svgo@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "dev": true + }, + "tapable": { + "version": "0.2.6", + "from": "tapable@>=0.2.5 <0.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "dev": true + }, + "through": { + "version": "2.3.8", + "from": "through@>=2.3.6 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "dev": true + }, + "timers-browserify": { + "version": "2.0.2", + "from": "timers-browserify@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "from": "to-arraybuffer@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "dev": true + }, + "ts-loader": { + "version": "2.2.0", + "from": "ts-loader@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-2.2.0.tgz", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "from": "tty-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "dev": true + }, + "typescript": { + "version": "2.3.4", + "from": "typescript@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "dev": true + }, + "uglify-js": { + "version": "3.0.20", + "from": "uglify-js@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.20.tgz", + "dev": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "dev": true, + "optional": true + }, + "uniq": { + "version": "1.0.1", + "from": "uniq@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "from": "uniqid@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "from": "uniqs@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "from": "unpipe@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "from": "upper-case@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "dev": true + }, + "url": { + "version": "0.11.0", + "from": "url@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "dev": true, + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "dev": true + } + } + }, + "url-loader": { + "version": "0.5.9", + "from": "url-loader@>=0.5.8 <0.6.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "dev": true + }, + "util": { + "version": "0.10.3", + "from": "util@>=0.10.3 <0.11.0", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dev": true, + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "from": "utils-merge@1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "from": "validate-npm-package-license@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "from": "vendors@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "from": "vm-browserify@0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "dev": true + }, + "watchpack": { + "version": "1.3.1", + "from": "watchpack@>=1.3.1 <2.0.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "dev": true + }, + "webpack": { + "version": "2.6.1", + "from": "webpack@>=2.3.3 <3.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", + "dev": true, + "dependencies": { + "ajv": { + "version": "4.11.8", + "from": "ajv@>=4.7.0 <5.0.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "from": "loader-utils@>=0.2.16 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + }, + "source-list-map": { + "version": "1.1.2", + "from": "source-list-map@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "from": "supports-color@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "from": "uglify-js@>=2.8.27 <3.0.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "dev": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "from": "yargs@>=3.10.0 <3.11.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dev": true + } + } + }, + "webpack-sources": { + "version": "0.2.3", + "from": "webpack-sources@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "1.11.0", + "from": "webpack-dev-middleware@>=1.8.4 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "dev": true, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + } + } + }, + "webpack-hot-middleware": { + "version": "2.18.0", + "from": "webpack-hot-middleware@>=2.18.0 <3.0.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz", + "dev": true + }, + "webpack-node-externals": { + "version": "1.6.0", + "from": "webpack-node-externals@>=1.4.3 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", + "dev": true + }, + "webpack-sources": { + "version": "1.0.1", + "from": "webpack-sources@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "dev": true, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "from": "source-list-map@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "from": "whatwg-fetch@>=0.10.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz" + }, + "whet.extend": { + "version": "0.9.9", + "from": "whet.extend@>=0.9.9 <0.10.0", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "from": "which-module@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "from": "window-size@0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "from": "wordwrap@0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "from": "wrap-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "dev": true + }, + "xml-char-classes": { + "version": "1.0.0", + "from": "xml-char-classes@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "from": "y18n@>=3.2.1 <4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "from": "yargs@>=6.0.0 <7.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "from": "camelcase@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "from": "cliui@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "from": "yargs-parser@>=4.2.0 <5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "from": "camelcase@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "dev": true + } + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/package.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/package.json new file mode 100644 index 0000000000..cc8cc6b145 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/package.json @@ -0,0 +1,30 @@ +{ + "name": "AureliaSpa", + "private": true, + "version": "0.0.0", + "devDependencies": { + "@types/webpack-env": "^1.13.0", + "aspnet-webpack": "^2.0.1", + "aurelia-bootstrapper": "^2.0.1", + "aurelia-fetch-client": "^1.0.1", + "aurelia-framework": "^1.1.0", + "aurelia-loader-webpack": "^2.0.0", + "aurelia-pal": "^1.3.0", + "aurelia-router": "^1.2.1", + "aurelia-webpack-plugin": "^2.0.0-rc.2", + "bootstrap": "^3.3.7", + "css-loader": "^0.28.0", + "extract-text-webpack-plugin": "^2.1.0", + "file-loader": "^0.11.1", + "html-loader": "^0.4.5", + "isomorphic-fetch": "^2.2.1", + "jquery": "^3.2.1", + "json-loader": "^0.5.4", + "style-loader": "^0.16.1", + "ts-loader": "^2.0.3", + "typescript": "^2.2.2", + "url-loader": "^0.5.8", + "webpack": "^2.3.3", + "webpack-hot-middleware": "^2.18.0" + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/tsconfig.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/tsconfig.json new file mode 100644 index 0000000000..bcbfa21ca2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "module": "es2015", + "moduleResolution": "node", + "target": "es5", + "sourceMap": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "skipDefaultLibCheck": true, + "strict": true, + "lib": [ "es2015", "dom" ], + "types": [ "webpack-env" ] + }, + "exclude": [ "bin", "node_modules" ], + "atom": { "rewriteTsconfig": false } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.js b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.js new file mode 100644 index 0000000000..5ff94d09b8 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.js @@ -0,0 +1,44 @@ +const path = require('path'); +const webpack = require('webpack'); +const { AureliaPlugin } = require('aurelia-webpack-plugin'); +const bundleOutputDir = './wwwroot/dist'; + +module.exports = (env) => { + const isDevBuild = !(env && env.prod); + return [{ + stats: { modules: false }, + entry: { 'app': 'aurelia-bootstrapper' }, + resolve: { + extensions: ['.ts', '.js'], + modules: ['ClientApp', 'node_modules'], + }, + output: { + path: path.resolve(bundleOutputDir), + publicPath: 'dist/', + filename: '[name].js' + }, + module: { + rules: [ + { test: /\.ts$/i, include: /ClientApp/, use: 'ts-loader?silent=true' }, + { test: /\.html$/i, use: 'html-loader' }, + { test: /\.css$/i, use: isDevBuild ? 'css-loader' : 'css-loader?minimize' }, + { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' } + ] + }, + plugins: [ + new webpack.DefinePlugin({ IS_DEV_BUILD: JSON.stringify(isDevBuild) }), + new webpack.DllReferencePlugin({ + context: __dirname, + manifest: require('./wwwroot/dist/vendor-manifest.json') + }), + new AureliaPlugin({ aureliaApp: 'boot' }) + ].concat(isDevBuild ? [ + new webpack.SourceMapDevToolPlugin({ + filename: '[file].map', // Remove this line if you prefer inline source maps + moduleFilenameTemplate: path.relative(bundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk + }) + ] : [ + new webpack.optimize.UglifyJsPlugin() + ]) + }]; +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.vendor.js b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.vendor.js new file mode 100644 index 0000000000..1dc579cedf --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/webpack.config.vendor.js @@ -0,0 +1,56 @@ +var path = require('path'); +var webpack = require('webpack'); +var ExtractTextPlugin = require('extract-text-webpack-plugin'); +var extractCSS = new ExtractTextPlugin('vendor.css'); + +module.exports = ({ prod } = {}) => { + const isDevBuild = !prod; + + return [{ + stats: { modules: false }, + resolve: { + extensions: ['.js'] + }, + module: { + loaders: [ + { test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, loader: 'url-loader?limit=100000' }, + { test: /\.css(\?|$)/, loader: extractCSS.extract([isDevBuild ? 'css-loader' : 'css-loader?minimize']) } + ] + }, + entry: { + vendor: [ + 'aurelia-event-aggregator', + 'aurelia-fetch-client', + 'aurelia-framework', + 'aurelia-history-browser', + 'aurelia-logging-console', + 'aurelia-pal-browser', + 'aurelia-polyfills', + 'aurelia-route-recognizer', + 'aurelia-router', + 'aurelia-templating-binding', + 'aurelia-templating-resources', + 'aurelia-templating-router', + 'bootstrap', + 'bootstrap/dist/css/bootstrap.css', + 'jquery' + ], + }, + output: { + path: path.join(__dirname, 'wwwroot', 'dist'), + publicPath: 'dist/', + filename: '[name].js', + library: '[name]_[hash]', + }, + plugins: [ + extractCSS, + new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable) + new webpack.DllPlugin({ + path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'), + name: '[name]_[hash]' + }) + ].concat(isDevBuild ? [] : [ + new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) + ]) + }] +}; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/wwwroot/favicon.ico b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/wwwroot/favicon.ico new file mode 100644 index 0000000000..6884543f96 Binary files /dev/null and b/src/Microsoft.AspNetCore.SpaTemplates/content/Aurelia-CSharp/wwwroot/favicon.ico differ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.gitignore b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.gitignore new file mode 100644 index 0000000000..3e035eeebf --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.gitignore @@ -0,0 +1,236 @@ +/Properties/launchSettings.json + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +bin/ +Bin/ +obj/ +Obj/ + +# Visual Studio 2015 cache/options directory +.vs/ +/wwwroot/dist/ + +/yarn.lock + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +orleans.codegen.cs + +/node_modules + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/dotnetcli.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..c15c6681aa --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/dotnetcli.host.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "TargetFrameworkOverride": { + "isHidden": "true", + "longName": "target-framework-override", + "shortName": "" + }, + "Framework": { + "longName": "framework" + }, + "skipRestore": { + "longName": "no-restore", + "shortName": "" + } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/icon.png b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/icon.png new file mode 100644 index 0000000000..adeddc23cf Binary files /dev/null and b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/icon.png differ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json new file mode 100644 index 0000000000..9e821a4f55 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/template.json @@ -0,0 +1,87 @@ +{ + "author": "Microsoft", + "classifications": [ + "Web", + "MVC", + "SPA" + ], + "groupIdentity": "Microsoft.AspNetCore.SpaTemplates.Knockout", + "identity": "Microsoft.AspNetCore.SpaTemplates.Knockout.CSharp", + "name": "ASP.NET Core with Knockout.js", + "preferNameDirectory": true, + "primaryOutputs": [ + { + "path": "KnockoutSpa.csproj" + } + ], + "shortName": "knockout", + "sourceName": "KnockoutSpa", + "sources": [ + { + "source": "./", + "target": "./", + "exclude": [ + ".template.config/**" + ] + } + ], + "symbols": { + "TargetFrameworkOverride": { + "type": "parameter", + "description": "Overrides the target framework", + "replaces": "TargetFrameworkOverride", + "datatype": "string", + "defaultValue": "" + }, + "Framework": { + "type": "parameter", + "description": "The target framework for the project.", + "datatype": "choice", + "choices": [ + { + "choice": "netcoreapp2.0", + "description": "Target netcoreapp2.0" + } + ], + "replaces": "netcoreapp2.0", + "defaultValue": "netcoreapp2.0" + }, + "HostIdentifier": { + "type": "bind", + "binding": "HostIdentifier" + }, + "skipRestore": { + "type": "parameter", + "datatype": "bool", + "description": "If specified, skips the automatic restore of the project on create.", + "defaultValue": "false" + } + }, + "tags": { + "language": "C#", + "type": "project" + }, + "postActions": [ + { + "condition": "(!skipRestore)", + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [ + { + "text": "Run 'dotnet restore'" + } + ], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier == \"dotnetcli\" || HostIdentifier == \"dotnetcli-preview\")", + "actionId": "AC1156F7-BB77-4DB8-B28F-24EEBCCA1E5C", + "description": "\n\n-------------------------------------------------------------------\nIMPORTANT: Before running this project on the command line,\n you must restore NPM packages by running \"npm install\"\n-------------------------------------------------------------------\n", + "manualInstructions": [ + { + "text": "Run \"npm install\"" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/vs-2017.3.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/vs-2017.3.host.json new file mode 100644 index 0000000000..7ce1189fd6 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/.template.config/vs-2017.3.host.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json.schemastore.org/vs-2017.3.host", + "name": { + "text": "Knockout.js", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1300" + }, + "description": { + "text": "A project template for creating an ASP.NET Core application with Knockout.js", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1301" + }, + "order": 301, + "icon": "icon.png", + "learnMoreLink": "https://github.com/aspnet/JavaScriptServices", + "uiFilters": [ + "oneaspnet" + ], + "minFullFrameworkVersion": "4.6.1" +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/boot.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/boot.ts new file mode 100644 index 0000000000..833ec8e2e1 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/boot.ts @@ -0,0 +1,21 @@ +import './css/site.css'; +import 'bootstrap'; +import * as ko from 'knockout'; +import { createBrowserHistory } from 'history'; +import './webpack-component-loader'; +import AppRootComponent from './components/app-root/app-root'; +const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')!; +const basename = baseUrl.substring(0, baseUrl.length - 1); // History component needs no trailing slash + +// Load and register the component +ko.components.register('app-root', AppRootComponent); + +// Tell Knockout to start up an instance of your application +ko.applyBindings({ history: createBrowserHistory({ basename }), basename }); + +// Basic hot reloading support. Automatically reloads and restarts the Knockout app each time +// you modify source files. This will not preserve any application state other than the URL. +if (module.hot) { + module.hot.accept(); + module.hot.dispose(() => ko.cleanNode(document.body)); +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.html new file mode 100644 index 0000000000..88e345bd82 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.html @@ -0,0 +1,8 @@ +
+
+
+ +
+
+
+
diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.ts new file mode 100644 index 0000000000..2ca1bfeb02 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/app-root/app-root.ts @@ -0,0 +1,44 @@ +import * as ko from 'knockout'; +import * as History from 'history'; +import { Route, Router } from '../../router'; +import navMenu from '../nav-menu/nav-menu'; + +// Declare the client-side routing configuration +const routes: Route[] = [ + { url: '', params: { page: 'home-page' } }, + { url: 'counter', params: { page: 'counter-example' } }, + { url: 'fetch-data', params: { page: 'fetch-data' } } +]; + +class AppRootViewModel { + public route: KnockoutObservable; + public router: Router; + + constructor(params: { history: History.History, basename: string }) { + // Activate the client-side router + this.router = new Router(params.history, routes, params.basename); + this.route = this.router.currentRoute; + + // Load and register all the KO components needed to handle the routes + // The optional 'bundle-loader?lazy!' prefix is a Webpack feature that causes the referenced modules + // to be split into separate files that are then loaded on demand. + // For docs, see https://github.com/webpack/bundle-loader + ko.components.register('nav-menu', navMenu); + ko.components.register('home-page', require('bundle-loader?lazy!../home-page/home-page')); + ko.components.register('counter-example', require('bundle-loader?lazy!../counter-example/counter-example')); + ko.components.register('fetch-data', require('bundle-loader?lazy!../fetch-data/fetch-data')); + } + + // To support hot module replacement, this method unregisters the router and KO components. + // In production scenarios where hot module replacement is disabled, this would not be invoked. + public dispose() { + this.router.dispose(); + + // TODO: Need a better API for this + Object.getOwnPropertyNames((ko).components._allRegisteredComponents).forEach(componentName => { + ko.components.unregister(componentName); + }); + } +} + +export default { viewModel: AppRootViewModel, template: require('./app-root.html') }; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.html new file mode 100644 index 0000000000..3656d7d3fd --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.html @@ -0,0 +1,7 @@ +

Counter

+ +

This is a simple example of a Knockout component.

+ +

Current count:

+ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.ts new file mode 100644 index 0000000000..39b7f04690 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/counter-example/counter-example.ts @@ -0,0 +1,12 @@ +import * as ko from 'knockout'; + +class CounterExampleViewModel { + public currentCount = ko.observable(0); + + public incrementCounter() { + let prevCount = this.currentCount(); + this.currentCount(prevCount + 1); + } +} + +export default { viewModel: CounterExampleViewModel, template: require('./counter-example.html') }; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.html new file mode 100644 index 0000000000..8e9223bbc9 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.html @@ -0,0 +1,24 @@ +

Weather forecast

+ +

This component demonstrates fetching data from the server.

+ +

Loading...

+ + + + + + + + + + + + + + + + + + +
DateTemp. (C)Temp. (F)Summary
diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.ts new file mode 100644 index 0000000000..b0538900b4 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/fetch-data/fetch-data.ts @@ -0,0 +1,23 @@ +import * as ko from 'knockout'; +import 'isomorphic-fetch'; + +interface WeatherForecast { + dateFormatted: string; + temperatureC: number; + temperatureF: number; + summary: string; +} + +class FetchDataViewModel { + public forecasts = ko.observableArray(); + + constructor() { + fetch('api/SampleData/WeatherForecasts') + .then(response => response.json() as Promise) + .then(data => { + this.forecasts(data); + }); + } +} + +export default { viewModel: FetchDataViewModel, template: require('./fetch-data.html') }; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.html new file mode 100644 index 0000000000..462426874a --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.html @@ -0,0 +1,16 @@ +

Hello, world!

+

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

+ +

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

+
    +
  • Client-side navigation. For example, click Counter then Back to return here.
  • +
  • Webpack dev middleware. In development mode, there's no need to run the webpack build tool. Your client-side resources are dynamically built on demand. Updates are available as soon as you modify any file.
  • +
  • Hot module replacement. In development mode, you don't even need to reload the page after making most changes. Within seconds of saving changes to files, your Knockout app will be rebuilt and a new instance injected is into the page.
  • +
  • Code splitting and lazy loading. KO components may optionally be bundled individually and loaded on demand. For example, the code and template for 'Counter' is not loaded until you navigate to it..
  • +
  • Efficient production builds. In production mode, development-time features are disabled, and the webpack build tool produces minified static CSS and JavaScript files.
  • +
diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.ts new file mode 100644 index 0000000000..588024e2f6 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/home-page/home-page.ts @@ -0,0 +1,6 @@ +import * as ko from 'knockout'; + +class HomePageViewModel { +} + +export default { viewModel: HomePageViewModel, template: require('./home-page.html') }; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.html new file mode 100644 index 0000000000..d2af38d86d --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.html @@ -0,0 +1,33 @@ + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.ts new file mode 100644 index 0000000000..4ea1fdb8a2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/components/nav-menu/nav-menu.ts @@ -0,0 +1,21 @@ +import * as ko from 'knockout'; +import { Route, Router } from '../../router'; + +interface NavMenuParams { + router: Router; +} + +class NavMenuViewModel { + public router: Router; + public route: KnockoutObservable; + + constructor(params: NavMenuParams) { + // This viewmodel doesn't do anything except pass through the 'route' parameter to the view. + // You could remove this viewmodel entirely, and define 'nav-menu' as a template-only component. + // But in most apps, you'll want some viewmodel logic to determine what navigation options appear. + this.router = params.router; + this.route = this.router.currentRoute; + } +} + +export default { viewModel: NavMenuViewModel, template: require('./nav-menu.html') }; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/css/site.css b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/css/site.css new file mode 100644 index 0000000000..3058af6805 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/css/site.css @@ -0,0 +1,66 @@ +.main-nav li .glyphicon { + margin-right: 10px; +} + +/* Highlighting rules for nav menu items */ +.main-nav li a.active, +.main-nav li a.active:hover, +.main-nav li a.active:focus { + background-color: #4189C7; + color: white; +} + +/* Keep the nav menu independent of scrolling and on top of other items */ +.main-nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1; +} + +@media (max-width: 767px) { + /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ + body { + padding-top: 50px; + } +} + +@media (min-width: 768px) { + /* On small screens, convert the nav menu to a vertical sidebar */ + .main-nav { + height: 100%; + width: calc(25% - 20px); + } + .main-nav .navbar { + border-radius: 0px; + border-width: 0px; + height: 100%; + } + .main-nav .navbar-header { + float: none; + } + .main-nav .navbar-collapse { + border-top: 1px solid #444; + padding: 0px; + } + .main-nav .navbar ul { + float: none; + } + .main-nav .navbar li { + float: none; + font-size: 15px; + margin: 6px; + } + .main-nav .navbar li a { + padding: 10px 16px; + border-radius: 4px; + } + .main-nav .navbar a { + /* If a menu item's text is too long, truncate it */ + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/router.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/router.ts new file mode 100644 index 0000000000..eeb1b40528 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/router.ts @@ -0,0 +1,62 @@ +import * as ko from 'knockout'; +import * as $ from 'jquery'; +import * as History from 'history'; +import * as crossroads from 'crossroads'; + +// This module configures crossroads.js, a routing library. If you prefer, you +// can use any other routing library (or none at all) as Knockout is designed to +// compose cleanly with external libraries. +// +// You *don't* have to follow the pattern established here (each route entry +// specifies a 'page', which is a Knockout component) - there's nothing built into +// Knockout that requires or even knows about this technique. It's just one of +// many possible ways of setting up client-side routes. +export class Router { + public currentRoute = ko.observable({}); + private disposeHistory: () => void; + private clickEventListener: EventListener; + + constructor(private history: History.History, routes: Route[], basename: string) { + // Reset and configure Crossroads so it matches routes and updates this.currentRoute + crossroads.removeAllRoutes(); + crossroads.resetState(); + (crossroads as any).normalizeFn = crossroads.NORM_AS_OBJECT; + routes.forEach(route => { + crossroads.addRoute(route.url, (requestParams: any) => { + this.currentRoute(ko.utils.extend(requestParams, route.params)); + }); + }); + + // Make history.js watch for navigation and notify Crossroads + this.disposeHistory = history.listen(location => crossroads.parse(location.pathname)); + this.clickEventListener = evt => { + let target: any = evt.currentTarget; + if (target && target.tagName === 'A') { + let href = target.getAttribute('href'); + if (href && href.indexOf(basename + '/') === 0) { + const hrefAfterBasename = href.substring(basename.length); + history.push(hrefAfterBasename); + evt.preventDefault(); + } + } + }; + $(document).on('click', 'a', this.clickEventListener); + + // Initialize Crossroads with starting location + crossroads.parse(history.location.pathname); + } + + public link(url: string): string { + return this.history.createHref({ pathname: url }); + } + + public dispose() { + this.disposeHistory(); + $(document).off('click', 'a', this.clickEventListener); + } +} + +export interface Route { + url?: string; + params?: any; +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/webpack-component-loader.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/webpack-component-loader.ts new file mode 100644 index 0000000000..823ab546dc --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/ClientApp/webpack-component-loader.ts @@ -0,0 +1,25 @@ +import * as ko from 'knockout'; + +// This Knockout component loader integrates with Webpack's lazy-loaded bundle feature. +// Having this means you can optionally declare components as follows: +// ko.components.register('my-component', require('bundle-loader?lazy!../some-path-to-a-js-or-ts-module')); +// ... and then it will be loaded on demand instead of being loaded up front. +ko.components.loaders.unshift({ + loadComponent: (name, componentConfig, callback) => { + if (typeof componentConfig === 'function') { + // It's a lazy-loaded Webpack bundle + (componentConfig as any)((loadedModule: any) => { + // Handle TypeScript-style default exports + if (loadedModule.__esModule && loadedModule.default) { + loadedModule = loadedModule.default; + } + + // Pass the loaded module to KO's default loader + ko.components.defaultLoader.loadComponent!(name, loadedModule as KnockoutComponentTypes.ComponentConfig, callback); + }); + } else { + // It's something else - let another component loader handle it + callback((null as any) as KnockoutComponentTypes.Definition); // workaround until https://github.com/DefinitelyTyped/DefinitelyTyped/pull/17999 + } + } +}); diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/HomeController.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/HomeController.cs new file mode 100644 index 0000000000..e952e8d35d --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/HomeController.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace KnockoutSpa.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() + { + return View(); + } + + public IActionResult Error() + { + ViewData["RequestId"] = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + return View(); + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/SampleDataController.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/SampleDataController.cs new file mode 100644 index 0000000000..0b30849b01 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Controllers/SampleDataController.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace KnockoutSpa.Controllers +{ + [Route("api/[controller]")] + public class SampleDataController : Controller + { + private static string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + [HttpGet("[action]")] + public IEnumerable WeatherForecasts() + { + var rng = new Random(); + return Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + DateFormatted = DateTime.Now.AddDays(index).ToString("d"), + TemperatureC = rng.Next(-20, 55), + Summary = Summaries[rng.Next(Summaries.Length)] + }); + } + + public class WeatherForecast + { + public string DateFormatted { get; set; } + public int TemperatureC { get; set; } + public string Summary { get; set; } + + public int TemperatureF + { + get + { + return 32 + (int)(TemperatureC / 0.5556); + } + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj new file mode 100644 index 0000000000..eff4c62c83 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/KnockoutSpa.csproj @@ -0,0 +1,57 @@ + + + + netcoreapp2.0 + TargetFrameworkOverride + true + Latest + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(DistFiles.Identity) + PreserveNewest + + + + + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Program.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Program.cs new file mode 100644 index 0000000000..514e143ef6 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; + +namespace KnockoutSpa +{ + public class Program + { + public static void Main(string[] args) + { + BuildWebHost(args).Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup() + .Build(); + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Startup.cs b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Startup.cs new file mode 100644 index 0000000000..fc7290b482 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Startup.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.SpaServices.Webpack; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace KnockoutSpa +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions + { + HotModuleReplacement = true + }); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + app.UseStaticFiles(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + + routes.MapSpaFallbackRoute( + name: "spa-fallback", + defaults: new { controller = "Home", action = "Index" }); + }); + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Home/Index.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Home/Index.cshtml new file mode 100644 index 0000000000..02530207fd --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Home/Index.cshtml @@ -0,0 +1,9 @@ +@{ + ViewData["Title"] = "Home Page"; +} + + + +@section scripts { + +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/Error.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/Error.cshtml new file mode 100644 index 0000000000..78e35d5d3c --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/Error.cshtml @@ -0,0 +1,21 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (!string.IsNullOrEmpty((string)ViewData["RequestId"])) +{ +

+ Request ID: @ViewData["RequestId"] +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ 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. +

diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/_Layout.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/_Layout.cshtml new file mode 100644 index 0000000000..448e6d7b43 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/Shared/_Layout.cshtml @@ -0,0 +1,20 @@ + + + + + + @ViewData["Title"] - KnockoutSpa + + + + + + + + + @RenderBody() + + + @RenderSection("scripts", required: false) + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewImports.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewImports.cshtml new file mode 100644 index 0000000000..b4dea68c79 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using KnockoutSpa +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Microsoft.AspNetCore.SpaServices diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewStart.cshtml b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewStart.cshtml new file mode 100644 index 0000000000..820a2f6e02 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.Development.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.Development.json new file mode 100644 index 0000000000..457e003321 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.Development.json @@ -0,0 +1,19 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + }, + "Console": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.json new file mode 100644 index 0000000000..c851e129f9 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "IncludeScopes": false, + "Debug": { + "LogLevel": { + "Default": "Warning" + } + }, + "Console": { + "LogLevel": { + "Default": "Warning" + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/npm-shrinkwrap.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/npm-shrinkwrap.json new file mode 100644 index 0000000000..8c897ce31a --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/npm-shrinkwrap.json @@ -0,0 +1,2491 @@ +{ + "name": "KnockoutSpa", + "version": "0.0.0", + "dependencies": { + "@types/core-js": { + "version": "0.9.41", + "from": "@types/core-js@>=0.9.34 <0.10.0", + "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.41.tgz", + "dev": true + }, + "@types/crossroads": { + "version": "0.0.29", + "from": "@types/crossroads@0.0.29", + "resolved": "https://registry.npmjs.org/@types/crossroads/-/crossroads-0.0.29.tgz", + "dev": true + }, + "@types/es6-promise": { + "version": "0.0.32", + "from": "@types/es6-promise@0.0.32", + "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.32.tgz", + "dev": true + }, + "@types/history": { + "version": "4.6.0", + "from": "@types/history@4.6.0", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.6.0.tgz", + "dev": true + }, + "@types/jquery": { + "version": "2.0.47", + "from": "@types/jquery@>=2.0.32 <3.0.0", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.47.tgz", + "dev": true + }, + "@types/knockout": { + "version": "3.4.41", + "from": "@types/knockout@>=3.4.35 <4.0.0", + "resolved": "https://registry.npmjs.org/@types/knockout/-/knockout-3.4.41.tgz", + "dev": true + }, + "@types/signals": { + "version": "0.0.16", + "from": "@types/signals@0.0.16", + "resolved": "https://registry.npmjs.org/@types/signals/-/signals-0.0.16.tgz", + "dev": true + }, + "@types/webpack-env": { + "version": "1.13.0", + "from": "@types/webpack-env@>=1.13.0 <2.0.0", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.0.tgz", + "dev": true + }, + "acorn": { + "version": "5.0.3", + "from": "acorn@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", + "dev": true + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "from": "acorn-dynamic-import@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "dev": true, + "dependencies": { + "acorn": { + "version": "4.0.13", + "from": "acorn@>=4.0.3 <5.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "dev": true + } + } + }, + "ajv": { + "version": "5.2.0", + "from": "ajv@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", + "dev": true + }, + "ajv-keywords": { + "version": "1.5.1", + "from": "ajv-keywords@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "from": "align-text@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "from": "alphanum-sort@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "from": "ansi-html@0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "from": "ansi-styles@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "dev": true + }, + "anymatch": { + "version": "1.3.0", + "from": "anymatch@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "from": "argparse@>=1.0.7 <2.0.0", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "dev": true + }, + "arr-diff": { + "version": "2.0.0", + "from": "arr-diff@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "dev": true + }, + "arr-flatten": { + "version": "1.0.3", + "from": "arr-flatten@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "from": "array-unique@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "from": "arrify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "dev": true + }, + "asn1.js": { + "version": "4.9.1", + "from": "asn1.js@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "dev": true + }, + "aspnet-webpack": { + "version": "2.0.1", + "from": "aspnet-webpack@2.0.1", + "resolved": "https://registry.npmjs.org/aspnet-webpack/-/aspnet-webpack-2.0.1.tgz", + "dev": true + }, + "assert": { + "version": "1.4.1", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "dev": true + }, + "async": { + "version": "2.5.0", + "from": "async@>=2.1.2 <3.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "from": "async-each@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "from": "autoprefixer@>=6.3.1 <7.0.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "dev": true + }, + "awesome-typescript-loader": { + "version": "3.1.3", + "from": "awesome-typescript-loader@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.1.3.tgz", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "from": "babel-code-frame@>=6.11.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "from": "balanced-match@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "dev": true + }, + "base64-js": { + "version": "1.2.1", + "from": "base64-js@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "dev": true + }, + "big.js": { + "version": "3.1.3", + "from": "big.js@>=3.1.3 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "from": "binary-extensions@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "dev": true + }, + "bn.js": { + "version": "4.11.7", + "from": "bn.js@>=4.1.1 <5.0.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "dev": true + }, + "bootstrap": { + "version": "3.3.7", + "from": "bootstrap@>=3.3.6 <4.0.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "from": "brace-expansion@>=1.1.7 <2.0.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "dev": true, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "from": "balanced-match@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "dev": true + } + } + }, + "braces": { + "version": "1.8.5", + "from": "braces@>=1.8.2 <2.0.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "dev": true + }, + "brorand": { + "version": "1.1.0", + "from": "brorand@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "from": "browserify-aes@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "dev": true + }, + "browserify-cipher": { + "version": "1.0.0", + "from": "browserify-cipher@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "dev": true + }, + "browserify-des": { + "version": "1.0.0", + "from": "browserify-des@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "dev": true + }, + "browserify-rsa": { + "version": "4.0.1", + "from": "browserify-rsa@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "dev": true + }, + "browserify-sign": { + "version": "4.0.4", + "from": "browserify-sign@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "dev": true + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "from": "browserslist@>=1.7.6 <2.0.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "dev": true + }, + "buffer": { + "version": "4.9.1", + "from": "buffer@>=4.3.0 <5.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "from": "buffer-xor@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "from": "builtin-modules@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "from": "builtin-status-codes@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "dev": true + }, + "bundle-loader": { + "version": "0.5.5", + "from": "bundle-loader@>=0.5.4 <0.6.0", + "resolved": "https://registry.npmjs.org/bundle-loader/-/bundle-loader-0.5.5.tgz", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "dev": true + }, + "caniuse-api": { + "version": "1.6.1", + "from": "caniuse-api@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "dev": true + }, + "caniuse-db": { + "version": "1.0.30000694", + "from": "caniuse-db@>=1.0.30000634 <2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000694.tgz", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "from": "center-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "from": "chalk@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "from": "chokidar@>=1.4.3 <2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "dev": true + }, + "cipher-base": { + "version": "1.0.3", + "from": "cipher-base@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", + "dev": true + }, + "clap": { + "version": "1.2.0", + "from": "clap@>=1.0.9 <2.0.0", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "from": "cliui@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "dev": true + }, + "clone": { + "version": "1.0.2", + "from": "clone@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "dev": true + }, + "co": { + "version": "4.6.0", + "from": "co@>=4.6.0 <5.0.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "dev": true + }, + "coa": { + "version": "1.0.3", + "from": "coa@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "from": "code-point-at@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "dev": true + }, + "color": { + "version": "0.11.4", + "from": "color@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "dev": true + }, + "color-convert": { + "version": "1.9.0", + "from": "color-convert@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "dev": true + }, + "color-name": { + "version": "1.1.2", + "from": "color-name@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "from": "color-string@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "dev": true + }, + "colormin": { + "version": "1.1.2", + "from": "colormin@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "dev": true + }, + "colors": { + "version": "1.1.2", + "from": "colors@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "from": "concat-map@0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "dev": true + }, + "connect": { + "version": "3.6.2", + "from": "connect@>=3.4.1 <4.0.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "from": "constants-browserify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "dev": true + }, + "create-ecdh": { + "version": "4.0.0", + "from": "create-ecdh@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "dev": true + }, + "create-hash": { + "version": "1.1.3", + "from": "create-hash@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "dev": true + }, + "create-hmac": { + "version": "1.1.6", + "from": "create-hmac@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "dev": true + }, + "crossroads": { + "version": "0.12.2", + "from": "crossroads@>=0.12.2 <0.13.0", + "resolved": "https://registry.npmjs.org/crossroads/-/crossroads-0.12.2.tgz", + "dev": true + }, + "crypto-browserify": { + "version": "3.11.0", + "from": "crypto-browserify@>=3.11.0 <4.0.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", + "dev": true + }, + "css-color-names": { + "version": "0.0.4", + "from": "css-color-names@0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "dev": true + }, + "css-loader": { + "version": "0.25.0", + "from": "css-loader@>=0.25.0 <0.26.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.25.0.tgz", + "dev": true, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "from": "loader-utils@>=0.2.2 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "dev": true + } + } + }, + "css-selector-tokenizer": { + "version": "0.6.0", + "from": "css-selector-tokenizer@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "from": "cssesc@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "from": "cssnano@>=2.6.1 <4.0.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "dev": true + }, + "csso": { + "version": "2.3.2", + "from": "csso@>=2.3.1 <2.4.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "dev": true + }, + "debug": { + "version": "2.6.7", + "from": "debug@2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "from": "decamelize@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "dev": true + }, + "defined": { + "version": "1.0.0", + "from": "defined@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "from": "des.js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.2", + "from": "diffie-hellman@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "dev": true + }, + "domain-browser": { + "version": "1.1.7", + "from": "domain-browser@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.14", + "from": "electron-to-chromium@>=1.2.7 <2.0.0", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.14.tgz", + "dev": true + }, + "elliptic": { + "version": "6.4.0", + "from": "elliptic@>=6.0.0 <7.0.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "from": "emojis-list@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "from": "encodeurl@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "from": "encoding@>=0.1.11 <0.2.0", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "dev": true + }, + "enhanced-resolve": { + "version": "3.1.0", + "from": "enhanced-resolve@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", + "dev": true, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + } + } + }, + "errno": { + "version": "0.1.4", + "from": "errno@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "dev": true + }, + "error-ex": { + "version": "1.3.1", + "from": "error-ex@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "dev": true + }, + "es6-promise": { + "version": "3.3.1", + "from": "es6-promise@>=3.1.2 <4.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "from": "escape-html@>=1.0.3 <1.1.0", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "dev": true + }, + "esprima": { + "version": "2.7.3", + "from": "esprima@>=2.6.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "from": "esutils@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "dev": true + }, + "event-source-polyfill": { + "version": "0.0.7", + "from": "event-source-polyfill@>=0.0.7 <0.0.8", + "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-0.0.7.tgz", + "dev": true + }, + "events": { + "version": "1.1.1", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.0", + "from": "evp_bytestokey@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "from": "expand-brackets@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "dev": true + }, + "expand-range": { + "version": "1.8.2", + "from": "expand-range@>=1.8.1 <2.0.0", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "from": "extglob@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "dev": true + }, + "extract-text-webpack-plugin": { + "version": "2.1.2", + "from": "extract-text-webpack-plugin@>=2.0.0-rc <3.0.0", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", + "dev": true + }, + "fast-deep-equal": { + "version": "0.1.0", + "from": "fast-deep-equal@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "from": "fastparse@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "dev": true + }, + "file-loader": { + "version": "0.9.0", + "from": "file-loader@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", + "dev": true, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "from": "loader-utils@>=0.2.5 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "dev": true + } + } + }, + "filename-regex": { + "version": "2.0.1", + "from": "filename-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "from": "fill-range@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "dev": true + }, + "finalhandler": { + "version": "1.0.3", + "from": "finalhandler@1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "from": "find-up@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "dev": true + }, + "flatten": { + "version": "1.0.2", + "from": "flatten@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "from": "for-in@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "from": "for-own@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "dev": true + }, + "function-bind": { + "version": "1.1.0", + "from": "function-bind@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "from": "get-caller-file@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "dev": true + }, + "glob-base": { + "version": "0.3.0", + "from": "glob-base@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "dev": true + }, + "glob-parent": { + "version": "2.0.0", + "from": "glob-parent@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "dev": true + }, + "has": { + "version": "1.0.1", + "from": "has@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "dev": true + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dev": true + }, + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "dev": true + }, + "hash-base": { + "version": "2.0.2", + "from": "hash-base@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "dev": true + }, + "hash.js": { + "version": "1.1.1", + "from": "hash.js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", + "dev": true + }, + "history": { + "version": "4.6.3", + "from": "history@>=4.3.0 <5.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-4.6.3.tgz", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "from": "hmac-drbg@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "dev": true + }, + "hosted-git-info": { + "version": "2.4.2", + "from": "hosted-git-info@>=2.1.4 <3.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.2.tgz", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.1", + "from": "html-comment-regex@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "from": "html-entities@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "dev": true + }, + "https-browserify": { + "version": "0.0.1", + "from": "https-browserify@0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "dev": true + }, + "iconv-lite": { + "version": "0.4.18", + "from": "iconv-lite@>=0.4.13 <0.5.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "dev": true + }, + "icss-replace-symbols": { + "version": "1.1.0", + "from": "icss-replace-symbols@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "dev": true + }, + "ieee754": { + "version": "1.1.8", + "from": "ieee754@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "from": "indexes-of@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "from": "indexof@0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "from": "inherits@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "dev": true + }, + "interpret": { + "version": "1.0.3", + "from": "interpret@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "from": "invariant@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "from": "invert-kv@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "from": "is-absolute-url@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "from": "is-arrayish@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "from": "is-binary-path@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "dev": true + }, + "is-buffer": { + "version": "1.1.5", + "from": "is-buffer@>=1.1.5 <2.0.0", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "from": "is-builtin-module@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "from": "is-dotfile@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "from": "is-equal-shallow@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "from": "is-extendable@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "from": "is-number@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "from": "is-plain-obj@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "dev": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "from": "is-posix-bracket@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "from": "is-primitive@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "from": "is-stream@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "from": "is-svg@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "from": "is-utf8@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "from": "isobject@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "from": "isomorphic-fetch@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "dev": true + }, + "jquery": { + "version": "2.2.4", + "from": "jquery@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "dev": true + }, + "js-base64": { + "version": "2.1.9", + "from": "js-base64@>=2.1.9 <3.0.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "dev": true + }, + "js-tokens": { + "version": "3.0.1", + "from": "js-tokens@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "from": "js-yaml@>=3.7.0 <3.8.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "from": "jsesc@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "dev": true + }, + "json-loader": { + "version": "0.5.4", + "from": "json-loader@>=0.5.4 <0.6.0", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "from": "json-schema-traverse@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "from": "json-stable-stringify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "dev": true + }, + "json5": { + "version": "0.5.1", + "from": "json5@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "from": "jsonify@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "from": "kind-of@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "dev": true + }, + "knockout": { + "version": "3.4.2", + "from": "knockout@>=3.4.0 <4.0.0", + "resolved": "https://registry.npmjs.org/knockout/-/knockout-3.4.2.tgz", + "dev": true + }, + "lazy-cache": { + "version": "1.0.4", + "from": "lazy-cache@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "from": "lcid@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "dev": true + }, + "load-json-file": { + "version": "1.1.0", + "from": "load-json-file@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "dev": true + }, + "loader-runner": { + "version": "2.3.0", + "from": "loader-runner@>=2.3.0 <3.0.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "from": "loader-utils@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "dev": true + }, + "lodash": { + "version": "4.17.4", + "from": "lodash@>=4.17.4 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "dev": true + }, + "lodash._createcompounder": { + "version": "3.0.0", + "from": "lodash._createcompounder@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "from": "lodash._root@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "dev": true + }, + "lodash.camelcase": { + "version": "3.0.1", + "from": "lodash.camelcase@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz", + "dev": true + }, + "lodash.deburr": { + "version": "3.2.0", + "from": "lodash.deburr@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "from": "lodash.memoize@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "from": "lodash.uniq@>=4.5.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "dev": true + }, + "lodash.words": { + "version": "3.2.0", + "from": "lodash.words@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz", + "dev": true + }, + "longest": { + "version": "1.0.1", + "from": "longest@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "from": "loose-envify@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "dev": true + }, + "macaddress": { + "version": "0.2.8", + "from": "macaddress@>=0.2.8 <0.3.0", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "dev": true + }, + "math-expression-evaluator": { + "version": "1.2.17", + "from": "math-expression-evaluator@>=1.2.14 <2.0.0", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "dev": true + }, + "memory-fs": { + "version": "0.3.0", + "from": "memory-fs@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "from": "micromatch@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "dev": true + }, + "miller-rabin": { + "version": "4.0.0", + "from": "miller-rabin@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "dev": true + }, + "mime": { + "version": "1.3.6", + "from": "mime@>=1.3.4 <2.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.0", + "from": "minimalistic-assert@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "from": "minimalistic-crypto-utils@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dev": true + }, + "ms": { + "version": "2.0.0", + "from": "ms@2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "dev": true + }, + "node-fetch": { + "version": "1.7.1", + "from": "node-fetch@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "dev": true + }, + "node-libs-browser": { + "version": "2.0.0", + "from": "node-libs-browser@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "dev": true, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.25 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "dev": true + } + } + }, + "normalize-package-data": { + "version": "2.3.8", + "from": "normalize-package-data@>=2.3.2 <3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "from": "normalize-path@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "from": "normalize-range@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "from": "normalize-url@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "from": "num2fraction@>=1.2.2 <2.0.0", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "from": "object-assign@>=4.1.1 <5.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "from": "object.omit@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dev": true + }, + "os-browserify": { + "version": "0.2.1", + "from": "os-browserify@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "from": "os-locale@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "dev": true + }, + "pako": { + "version": "0.2.9", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "dev": true + }, + "parse-asn1": { + "version": "5.1.0", + "from": "parse-asn1@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "from": "parse-glob@>=3.0.4 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "from": "parse-json@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "dev": true + }, + "parseurl": { + "version": "1.3.1", + "from": "parseurl@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "from": "path-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "from": "path-exists@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "from": "path-is-absolute@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "from": "path-type@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "dev": true + }, + "pbkdf2": { + "version": "3.0.12", + "from": "pbkdf2@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "dev": true + }, + "pify": { + "version": "2.3.0", + "from": "pify@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "from": "pinkie@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "from": "pinkie-promise@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "dev": true + }, + "postcss": { + "version": "5.2.17", + "from": "postcss@>=5.0.6 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "dev": true, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "from": "supports-color@>=3.2.3 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "dev": true + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "from": "postcss-calc@>=5.2.0 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "dev": true + }, + "postcss-colormin": { + "version": "2.2.2", + "from": "postcss-colormin@>=2.1.8 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "dev": true + }, + "postcss-convert-values": { + "version": "2.6.1", + "from": "postcss-convert-values@>=2.3.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "dev": true + }, + "postcss-discard-comments": { + "version": "2.0.4", + "from": "postcss-discard-comments@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "from": "postcss-discard-duplicates@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "dev": true + }, + "postcss-discard-empty": { + "version": "2.1.0", + "from": "postcss-discard-empty@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "dev": true + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "from": "postcss-discard-overridden@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "dev": true + }, + "postcss-discard-unused": { + "version": "2.2.3", + "from": "postcss-discard-unused@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "dev": true + }, + "postcss-filter-plugins": { + "version": "2.0.2", + "from": "postcss-filter-plugins@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "dev": true + }, + "postcss-merge-idents": { + "version": "2.1.7", + "from": "postcss-merge-idents@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "dev": true + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "from": "postcss-merge-longhand@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "dev": true + }, + "postcss-merge-rules": { + "version": "2.1.2", + "from": "postcss-merge-rules@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "dev": true + }, + "postcss-message-helpers": { + "version": "2.0.0", + "from": "postcss-message-helpers@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "from": "postcss-minify-font-values@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "dev": true + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "from": "postcss-minify-gradients@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "dev": true + }, + "postcss-minify-params": { + "version": "1.2.2", + "from": "postcss-minify-params@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "dev": true + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "from": "postcss-minify-selectors@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "dev": true + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "from": "postcss-modules-extract-imports@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "from": "postcss-modules-local-by-default@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "dev": true, + "dependencies": { + "css-selector-tokenizer": { + "version": "0.7.0", + "from": "css-selector-tokenizer@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "from": "postcss-modules-scope@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "dev": true, + "dependencies": { + "css-selector-tokenizer": { + "version": "0.7.0", + "from": "css-selector-tokenizer@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "from": "postcss-modules-values@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "dev": true, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "from": "has-flag@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "dev": true + }, + "postcss": { + "version": "6.0.3", + "from": "postcss@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.3.tgz", + "dev": true + }, + "supports-color": { + "version": "4.0.0", + "from": "supports-color@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.0.0.tgz", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "from": "postcss-normalize-charset@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "dev": true + }, + "postcss-normalize-url": { + "version": "3.0.8", + "from": "postcss-normalize-url@>=3.0.7 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "dev": true + }, + "postcss-ordered-values": { + "version": "2.2.3", + "from": "postcss-ordered-values@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "dev": true + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "from": "postcss-reduce-idents@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "dev": true + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "from": "postcss-reduce-initial@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "dev": true + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "from": "postcss-reduce-transforms@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "dev": true + }, + "postcss-selector-parser": { + "version": "2.2.3", + "from": "postcss-selector-parser@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "dev": true + }, + "postcss-svgo": { + "version": "2.1.6", + "from": "postcss-svgo@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "dev": true + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "from": "postcss-unique-selectors@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.0", + "from": "postcss-value-parser@>=3.2.3 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "from": "postcss-zindex@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "from": "prepend-http@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "from": "preserve@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "dev": true + }, + "process": { + "version": "0.11.10", + "from": "process@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "from": "process-nextick-args@>=1.0.6 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "dev": true + }, + "prr": { + "version": "0.0.0", + "from": "prr@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "dev": true + }, + "public-encrypt": { + "version": "4.0.0", + "from": "public-encrypt@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "dev": true + }, + "q": { + "version": "1.5.0", + "from": "q@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "from": "query-string@>=4.1.0 <5.0.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "from": "querystring-es3@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "from": "randomatic@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "dev": true, + "dependencies": { + "is-number": { + "version": "3.0.0", + "from": "is-number@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "dev": true, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "from": "kind-of@^3.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "dev": true + } + } + }, + "kind-of": { + "version": "4.0.0", + "from": "kind-of@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.5", + "from": "randombytes@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "dev": true + }, + "range-parser": { + "version": "1.2.0", + "from": "range-parser@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "dev": true + }, + "raw-loader": { + "version": "0.5.1", + "from": "raw-loader@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "from": "read-pkg@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "dev": true + }, + "read-pkg-up": { + "version": "1.0.1", + "from": "read-pkg-up@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "dev": true + }, + "readable-stream": { + "version": "2.3.2", + "from": "readable-stream@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", + "dev": true + }, + "readdirp": { + "version": "2.1.0", + "from": "readdirp@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "dev": true + }, + "reduce-css-calc": { + "version": "1.3.0", + "from": "reduce-css-calc@>=1.2.6 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "dev": true + }, + "reduce-function-call": { + "version": "1.0.2", + "from": "reduce-function-call@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "dev": true + }, + "regenerate": { + "version": "1.3.2", + "from": "regenerate@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "from": "regex-cache@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "from": "regexpu-core@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "dev": true + }, + "regjsgen": { + "version": "0.2.0", + "from": "regjsgen@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "from": "regjsparser@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.0.2", + "from": "remove-trailing-separator@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "from": "repeat-element@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "from": "repeat-string@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "from": "require-directory@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "from": "require-from-string@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "from": "require-main-filename@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "dev": true + }, + "resolve-pathname": { + "version": "2.1.0", + "from": "resolve-pathname@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.1.0.tgz", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "from": "right-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "dev": true + }, + "ripemd160": { + "version": "2.0.1", + "from": "ripemd160@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "from": "safe-buffer@>=5.1.0 <5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "dev": true + }, + "sax": { + "version": "1.2.4", + "from": "sax@>=1.2.1 <1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "dev": true + }, + "schema-utils": { + "version": "0.3.0", + "from": "schema-utils@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "dev": true + }, + "semver": { + "version": "5.3.0", + "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", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "from": "set-blocking@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "from": "set-immediate-shim@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "from": "setimmediate@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "dev": true + }, + "sha.js": { + "version": "2.4.8", + "from": "sha.js@>=2.4.0 <3.0.0", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "dev": true + }, + "signals": { + "version": "1.0.0", + "from": "signals@<2.0.0", + "resolved": "https://registry.npmjs.org/signals/-/signals-1.0.0.tgz", + "dev": true + }, + "sort-keys": { + "version": "1.1.2", + "from": "sort-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "dev": true + }, + "source-list-map": { + "version": "0.1.8", + "from": "source-list-map@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "dev": true + }, + "source-map": { + "version": "0.5.6", + "from": "source-map@>=0.5.6 <0.6.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "from": "source-map-support@>=0.4.15 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "dev": true + }, + "spdx-correct": { + "version": "1.0.2", + "from": "spdx-correct@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "dev": true + }, + "spdx-expression-parse": { + "version": "1.0.4", + "from": "spdx-expression-parse@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "from": "spdx-license-ids@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "from": "sprintf-js@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "from": "statuses@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "dev": true + }, + "stream-browserify": { + "version": "2.0.1", + "from": "stream-browserify@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "dev": true + }, + "stream-http": { + "version": "2.7.2", + "from": "stream-http@>=2.3.1 <3.0.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "from": "strict-uri-encode@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "from": "string_decoder@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "from": "string-width@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "from": "strip-bom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "dev": true + }, + "style-loader": { + "version": "0.13.2", + "from": "style-loader@>=0.13.1 <0.14.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "from": "svgo@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "dev": true + }, + "tapable": { + "version": "0.2.6", + "from": "tapable@>=0.2.5 <0.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", + "dev": true + }, + "timers-browserify": { + "version": "2.0.2", + "from": "timers-browserify@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "from": "to-arraybuffer@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "from": "tty-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "dev": true + }, + "typescript": { + "version": "2.3.4", + "from": "typescript@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "from": "uglify-js@>=2.8.27 <3.0.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "dev": true, + "dependencies": { + "yargs": { + "version": "3.10.0", + "from": "yargs@>=3.10.0 <3.11.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "dev": true, + "optional": true + }, + "uniq": { + "version": "1.0.1", + "from": "uniq@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "dev": true + }, + "uniqid": { + "version": "4.1.1", + "from": "uniqid@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "from": "uniqs@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "from": "unpipe@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "dev": true + }, + "url": { + "version": "0.11.0", + "from": "url@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "dev": true, + "dependencies": { + "punycode": { + "version": "1.3.2", + "from": "punycode@1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "dev": true + } + } + }, + "url-loader": { + "version": "0.5.9", + "from": "url-loader@>=0.5.7 <0.6.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "dev": true + }, + "util": { + "version": "0.10.3", + "from": "util@>=0.10.3 <0.11.0", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dev": true, + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "from": "utils-merge@1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "from": "validate-npm-package-license@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "dev": true + }, + "value-equal": { + "version": "0.2.1", + "from": "value-equal@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.2.1.tgz", + "dev": true + }, + "vendors": { + "version": "1.0.1", + "from": "vendors@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "from": "vm-browserify@0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "dev": true + }, + "warning": { + "version": "3.0.0", + "from": "warning@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "dev": true + }, + "watchpack": { + "version": "1.3.1", + "from": "watchpack@>=1.3.1 <2.0.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", + "dev": true + }, + "webpack": { + "version": "2.6.1", + "from": "webpack@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", + "dev": true, + "dependencies": { + "ajv": { + "version": "4.11.8", + "from": "ajv@>=4.7.0 <5.0.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "from": "loader-utils@>=0.2.16 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + }, + "source-list-map": { + "version": "1.1.2", + "from": "source-list-map@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "from": "supports-color@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "dev": true + }, + "webpack-sources": { + "version": "0.2.3", + "from": "webpack-sources@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "1.11.0", + "from": "webpack-dev-middleware@>=1.8.4 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "dev": true, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "from": "memory-fs@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "dev": true + } + } + }, + "webpack-hot-middleware": { + "version": "2.18.0", + "from": "webpack-hot-middleware@>=2.12.2 <3.0.0", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz", + "dev": true + }, + "webpack-node-externals": { + "version": "1.6.0", + "from": "webpack-node-externals@>=1.4.3 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz", + "dev": true + }, + "webpack-sources": { + "version": "1.0.1", + "from": "webpack-sources@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "dev": true, + "dependencies": { + "source-list-map": { + "version": "2.0.0", + "from": "source-list-map@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "from": "whatwg-fetch@>=0.10.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "dev": true + }, + "whet.extend": { + "version": "0.9.9", + "from": "whet.extend@>=0.9.9 <0.10.0", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "dev": true + }, + "which-module": { + "version": "1.0.0", + "from": "which-module@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "from": "window-size@0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "from": "wordwrap@0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "from": "wrap-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "from": "y18n@>=3.2.1 <4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "dev": true + }, + "yargs": { + "version": "6.6.0", + "from": "yargs@>=6.0.0 <7.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "from": "camelcase@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "from": "cliui@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "dev": true + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "from": "yargs-parser@>=4.2.0 <5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "dev": true, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "from": "camelcase@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "dev": true + } + } + } + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/package.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/package.json new file mode 100644 index 0000000000..86722a708f --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/package.json @@ -0,0 +1,35 @@ +{ + "name": "KnockoutSpa", + "private": true, + "version": "0.0.0", + "devDependencies": { + "@types/core-js": "^0.9.34", + "@types/crossroads": "0.0.29", + "@types/es6-promise": "0.0.32", + "@types/history": "^4.6.0", + "@types/jquery": "^2.0.32", + "@types/knockout": "^3.4.41", + "@types/signals": "0.0.16", + "@types/webpack-env": "^1.13.0", + "aspnet-webpack": "^2.0.1", + "awesome-typescript-loader": "^3.0.0", + "bootstrap": "^3.3.6", + "bundle-loader": "^0.5.4", + "crossroads": "^0.12.2", + "css-loader": "^0.25.0", + "event-source-polyfill": "^0.0.7", + "extract-text-webpack-plugin": "^2.0.0-rc", + "file-loader": "^0.9.0", + "history": "^4.6.3", + "isomorphic-fetch": "^2.2.1", + "jquery": "^2.2.1", + "json-loader": "^0.5.4", + "knockout": "^3.4.0", + "raw-loader": "^0.5.1", + "style-loader": "^0.13.1", + "typescript": "^2.2.1", + "url-loader": "^0.5.7", + "webpack": "^2.2.0", + "webpack-hot-middleware": "^2.12.2" + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/tsconfig.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/tsconfig.json new file mode 100644 index 0000000000..78973bd6e2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "es2015", + "moduleResolution": "node", + "target": "es5", + "sourceMap": true, + "skipDefaultLibCheck": true, + "strict": true, + "types": ["es6-promise", "webpack-env"] + }, + "exclude": [ + "bin", + "node_modules" + ] +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.js b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.js new file mode 100644 index 0000000000..98a37b686e --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.js @@ -0,0 +1,44 @@ +const path = require('path'); +const webpack = require('webpack'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); +const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin; +const bundleOutputDir = './wwwroot/dist'; + +module.exports = (env) => { + const isDevBuild = !(env && env.prod); + return [{ + stats: { modules: false }, + entry: { 'main': './ClientApp/boot.ts' }, + resolve: { extensions: [ '.js', '.ts' ] }, + output: { + path: path.join(__dirname, bundleOutputDir), + filename: '[name].js', + publicPath: 'dist/' + }, + module: { + rules: [ + { test: /\.ts$/, include: /ClientApp/, use: 'awesome-typescript-loader?silent=true' }, + { test: /\.html$/, use: 'raw-loader' }, + { test: /\.css$/, use: isDevBuild ? [ 'style-loader', 'css-loader' ] : ExtractTextPlugin.extract({ use: 'css-loader?minimize' }) }, + { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' } + ] + }, + plugins: [ + new CheckerPlugin(), + new webpack.DllReferencePlugin({ + context: __dirname, + manifest: require('./wwwroot/dist/vendor-manifest.json') + }) + ].concat(isDevBuild ? [ + // Plugins that apply in development builds only + new webpack.SourceMapDevToolPlugin({ + filename: '[file].map', // Remove this line if you prefer inline source maps + moduleFilenameTemplate: path.relative(bundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk + }) + ] : [ + // Plugins that apply in production builds only + new webpack.optimize.UglifyJsPlugin(), + new ExtractTextPlugin('site.css') + ]) + }]; +}; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.vendor.js b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.vendor.js new file mode 100644 index 0000000000..12d4dba565 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/webpack.config.vendor.js @@ -0,0 +1,39 @@ +const path = require('path'); +const webpack = require('webpack'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); + +module.exports = (env) => { + const isDevBuild = !(env && env.prod); + const extractCSS = new ExtractTextPlugin('vendor.css'); + return [{ + stats: { modules: false }, + resolve: { + extensions: [ '.js' ] + }, + module: { + rules: [ + { test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, use: 'url-loader?limit=100000' }, + { test: /\.css(\?|$)/, use: extractCSS.extract({ use: isDevBuild ? 'css-loader' : 'css-loader?minimize' }) } + ] + }, + entry: { + vendor: ['bootstrap', 'bootstrap/dist/css/bootstrap.css', 'knockout', 'crossroads', 'event-source-polyfill', 'history', 'isomorphic-fetch', 'jquery'], + }, + output: { + path: path.join(__dirname, 'wwwroot', 'dist'), + publicPath: 'dist/', + filename: '[name].js', + library: '[name]_[hash]', + }, + plugins: [ + extractCSS, + new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable) + new webpack.DllPlugin({ + path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'), + name: '[name]_[hash]' + }) + ].concat(isDevBuild ? [] : [ + new webpack.optimize.UglifyJsPlugin() + ]) + }]; +}; diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/wwwroot/favicon.ico b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/wwwroot/favicon.ico new file mode 100644 index 0000000000..a3a799985c Binary files /dev/null and b/src/Microsoft.AspNetCore.SpaTemplates/content/Knockout-CSharp/wwwroot/favicon.ico differ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.gitignore b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.gitignore new file mode 100644 index 0000000000..30342b19cb --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.gitignore @@ -0,0 +1,239 @@ +/Properties/launchSettings.json + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +bin/ +Bin/ +obj/ +Obj/ + +# Visual Studio 2015 cache/options directory +.vs/ +/wwwroot/dist/ + +/yarn.lock + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Microsoft Azure ApplicationInsights config file +ApplicationInsights.config + +# Windows Store app package directory +AppPackages/ +BundleArtifacts/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +orleans.codegen.cs + +/node_modules + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe + +# FAKE - F# Make +.fake/ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/dotnetcli.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/dotnetcli.host.json new file mode 100644 index 0000000000..c15c6681aa --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/dotnetcli.host.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json.schemastore.org/dotnetcli.host", + "symbolInfo": { + "TargetFrameworkOverride": { + "isHidden": "true", + "longName": "target-framework-override", + "shortName": "" + }, + "Framework": { + "longName": "framework" + }, + "skipRestore": { + "longName": "no-restore", + "shortName": "" + } + } +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/icon.png b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/icon.png new file mode 100644 index 0000000000..2e861ee526 Binary files /dev/null and b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/icon.png differ diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json new file mode 100644 index 0000000000..6cb8810d64 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/template.json @@ -0,0 +1,87 @@ +{ + "author": "Microsoft", + "classifications": [ + "Web", + "MVC", + "SPA" + ], + "groupIdentity": "Microsoft.AspNetCore.SpaTemplates.Vue", + "identity": "Microsoft.AspNetCore.SpaTemplates.Vue.CSharp", + "name": "ASP.NET Core with Vue.js", + "preferNameDirectory": true, + "primaryOutputs": [ + { + "path": "VueSpa.csproj" + } + ], + "shortName": "vue", + "sourceName": "VueSpa", + "sources": [ + { + "source": "./", + "target": "./", + "exclude": [ + ".template.config/**" + ] + } + ], + "symbols": { + "TargetFrameworkOverride": { + "type": "parameter", + "description": "Overrides the target framework", + "replaces": "TargetFrameworkOverride", + "datatype": "string", + "defaultValue": "" + }, + "Framework": { + "type": "parameter", + "description": "The target framework for the project.", + "datatype": "choice", + "choices": [ + { + "choice": "netcoreapp2.0", + "description": "Target netcoreapp2.0" + } + ], + "replaces": "netcoreapp2.0", + "defaultValue": "netcoreapp2.0" + }, + "HostIdentifier": { + "type": "bind", + "binding": "HostIdentifier" + }, + "skipRestore": { + "type": "parameter", + "datatype": "bool", + "description": "If specified, skips the automatic restore of the project on create.", + "defaultValue": "false" + } + }, + "tags": { + "language": "C#", + "type": "project" + }, + "postActions": [ + { + "condition": "(!skipRestore)", + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [ + { + "text": "Run 'dotnet restore'" + } + ], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + }, + { + "condition": "(HostIdentifier == \"dotnetcli\" || HostIdentifier == \"dotnetcli-preview\")", + "actionId": "AC1156F7-BB77-4DB8-B28F-24EEBCCA1E5C", + "description": "\n\n-------------------------------------------------------------------\nIMPORTANT: Before running this project on the command line,\n you must restore NPM packages by running \"npm install\"\n-------------------------------------------------------------------\n", + "manualInstructions": [ + { + "text": "Run \"npm install\"" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/vs-2017.3.host.json b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/vs-2017.3.host.json new file mode 100644 index 0000000000..9b9b6a5f05 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/.template.config/vs-2017.3.host.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json.schemastore.org/vs-2017.3.host", + "name": { + "text": "Vue.js", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1600" + }, + "description": { + "text": "A project template for creating an ASP.NET Core application with Vue.js", + "package": "{0CD94836-1526-4E85-87D3-FB5274C5AFC9}", + "id": "1601" + }, + "order": 301, + "icon": "icon.png", + "learnMoreLink": "https://github.com/aspnet/JavaScriptServices", + "uiFilters": [ + "oneaspnet" + ], + "minFullFrameworkVersion": "4.6.1" +} \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/boot.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/boot.ts new file mode 100644 index 0000000000..b95bd381a2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/boot.ts @@ -0,0 +1,17 @@ +import './css/site.css'; +import 'bootstrap'; +import Vue from 'vue'; +import VueRouter from 'vue-router'; +Vue.use(VueRouter); + +const routes = [ + { path: '/', component: require('./components/home/home.vue.html') }, + { path: '/counter', component: require('./components/counter/counter.vue.html') }, + { path: '/fetchdata', component: require('./components/fetchdata/fetchdata.vue.html') } +]; + +new Vue({ + el: '#app-root', + router: new VueRouter({ mode: 'history', routes: routes }), + render: h => h(require('./components/app/app.vue.html')) +}); diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.ts new file mode 100644 index 0000000000..f580f76b2e --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.ts @@ -0,0 +1,10 @@ +import Vue from 'vue'; +import { Component } from 'vue-property-decorator'; + +@Component({ + components: { + MenuComponent: require('../navmenu/navmenu.vue.html') + } +}) +export default class AppComponent extends Vue { +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.vue.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.vue.html new file mode 100644 index 0000000000..6a108b8a44 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/app/app.vue.html @@ -0,0 +1,14 @@ + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.ts new file mode 100644 index 0000000000..e48ef79b4c --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.ts @@ -0,0 +1,11 @@ +import Vue from 'vue'; +import { Component } from 'vue-property-decorator'; + +@Component +export default class CounterComponent extends Vue { + currentcount: number = 0; + + incrementCounter() { + this.currentcount++; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.vue.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.vue.html new file mode 100644 index 0000000000..570d1a2e3d --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/counter/counter.vue.html @@ -0,0 +1,13 @@ + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.ts b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.ts new file mode 100644 index 0000000000..c6108f9303 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.ts @@ -0,0 +1,22 @@ +import Vue from 'vue'; +import { Component } from 'vue-property-decorator'; + +interface WeatherForecast { + dateFormatted: string; + temperatureC: number; + temperatureF: number; + summary: string; +} + +@Component +export default class FetchDataComponent extends Vue { + forecasts: WeatherForecast[] = []; + + mounted() { + fetch('api/SampleData/WeatherForecasts') + .then(response => response.json() as Promise) + .then(data => { + this.forecasts = data; + }); + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.vue.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.vue.html new file mode 100644 index 0000000000..1b647748c6 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/fetchdata/fetchdata.vue.html @@ -0,0 +1,30 @@ + + + diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/home/home.vue.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/home/home.vue.html new file mode 100644 index 0000000000..d418e70ae2 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/home/home.vue.html @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.css b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.css new file mode 100644 index 0000000000..b7404b4118 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.css @@ -0,0 +1,59 @@ +.main-nav li .glyphicon { + margin-right: 10px; +} + +/* Highlighting rules for nav menu items */ +.main-nav li a.router-link-active, +.main-nav li a.router-link-active:hover, +.main-nav li a.router-link-active:focus { + background-color: #4189C7; + color: white; +} + +/* Keep the nav menu independent of scrolling and on top of other items */ +.main-nav { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1; +} + +@media (min-width: 768px) { + /* On small screens, convert the nav menu to a vertical sidebar */ + .main-nav { + height: 100%; + width: calc(25% - 20px); + } + .main-nav .navbar { + border-radius: 0px; + border-width: 0px; + height: 100%; + } + .main-nav .navbar-header { + float: none; + } + .main-nav .navbar-collapse { + border-top: 1px solid #444; + padding: 0px; + } + .main-nav .navbar ul { + float: none; + } + .main-nav .navbar li { + float: none; + font-size: 15px; + margin: 6px; + } + .main-nav .navbar li a { + padding: 10px 16px; + border-radius: 4px; + } + .main-nav .navbar a { + /* If a menu item's text is too long, truncate it */ + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +} diff --git a/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.vue.html b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.vue.html new file mode 100644 index 0000000000..d4d4060153 --- /dev/null +++ b/src/Microsoft.AspNetCore.SpaTemplates/content/Vue-CSharp/ClientApp/components/navmenu/navmenu.vue.html @@ -0,0 +1,37 @@ + + +