diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..c85af840 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 + +[*.{fs,fsi,fsx,js,html,css}] +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = false + +[{package.json,.travis.yml}] +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2b56df10..7e6d9851 100644 --- a/.gitignore +++ b/.gitignore @@ -189,3 +189,5 @@ src/reveal.js docs/tools/FSharp.Formatting.svclog FSharp.Formatting.svclog _NCrunch* +node_modules/ +dist/ diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..7dceab0f --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +2.7.10 diff --git a/.travis.yml b/.travis.yml index 7c08986a..7d4dc8a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,10 @@ -language: objective-c +language: csharp -env: - matrix: - - MONO_VERSION="3.4.0" +mono: + - 4.6.1 install: - - wget "http://download.mono-project.com/archive/3.4.0/macos-10-x86/MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" - - sudo installer -pkg "MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" -target / + - apt-get update -y script: - ./build.sh All diff --git a/README.md b/README.md index 1972d6a4..95434916 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,49 @@ _Inspried by two great works:_ #### See FsReveal slides in action -- [1st sample](http://kimsk.github.io/fsreveal-sample-fsx/FsReveal.html#/) generated from [FsReveal.fsx](https://github.com/kimsk/fsreveal-sample-fsx/blob/master/slides/FsReveal.fsx) -- [2nd sample](http://kimsk.github.io/fsreveal-sample-md/FsReveal.html#/) generated from [FsReveal.md](https://github.com/kimsk/fsreveal-sample-md/blob/master/slides/FsReveal.md) ([raw](https://raw.githubusercontent.com/kimsk/fsreveal-sample-md/master/slides/FsReveal.md)) +- [1st sample](http://kimsk.github.io/fsreveal-sample-fsx/FsReveal.html#/) + generated from + [FsReveal.fsx](https://github.com/kimsk/fsreveal-sample-fsx/blob/master/slides/FsReveal.fsx) +- [2nd sample](http://kimsk.github.io/fsreveal-sample-md/FsReveal.html#/) + generated from + [FsReveal.md](https://github.com/kimsk/fsreveal-sample-md/blob/master/slides/FsReveal.md) + ([raw](https://raw.githubusercontent.com/kimsk/fsreveal-sample-md/master/slides/FsReveal.md)) +### Dev + + pyenv local 2.7.10 + # npm install -g yarn + yarn install --ignore-engines + yarn run build + # when you want to test your changes: + ./build.sh GenerateSlides + +Source code is in `./src/FsReveal`. Built with `FAKE` and `yarn` (in turn uses `webpack`). + +Source code is **also** in `./docs/tools` for the generation part. + +Create a work-in-progress package by + + 1. Create `paket.local` with + `nuget FsReveal -> source /Users/h/dev/haf/FsReveal/temp version 1.4.0` but + for your own home folder, in the `master` branch. + 2. `git checkout develop` to get to this branch. + 3. Hack on it + 4. `./build.sh NuGet` + +#### How it all fits together + +The node modules take care of bundling all the JS dependencies. You don't need +anything other than Yarn to compile, but some of them are dependent on having a +binary called 'python2' on your PATH. + +`./src/FsReveal` contain the object model for transforming the Markdown and +literate F# files into slides. + +`./src/FsReveal/template.{html,js}` is the entry point for webpack during +packaging. + +When you've performed a change to the repo, it's all packaged as a NuGet package. That +NuGet now contains a copy of the compiled JS files, as well as +`./tools/generateSlides.fsx`. diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 61a3f3a6..0177ff74 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,3 +1,7 @@ +### 1.4.0 - 2016-11-09 +* Offline support +* Bumping JS deps + ### 1.3.1 - 17.06.2016 * BUGFIX: Position tooltips properly on all screens diff --git a/build.fsx b/build.fsx index 500a268b..c1a24d44 100644 --- a/build.fsx +++ b/build.fsx @@ -8,6 +8,7 @@ open Fake open Fake.Git open Fake.AssemblyInfoFile open Fake.ReleaseNotesHelper +open Fake.Testing.Expecto open System open System.IO #if MONO @@ -47,8 +48,8 @@ let tags = "F#, markdown, reveal.js" // File system information let solutionFile = "FsReveal.sln" -// Pattern specifying assemblies to be tested using NUnit -let testAssemblies = "tests/**/bin/Release/*Tests*.dll" +// Pattern specifying assemblies to be tested using Expecto +let testExecutables = "tests/**/bin/Release/*Tests.exe" // Git configuration (used for publishing documentation in gh-pages branch) // The profile where the project is posted @@ -72,52 +73,59 @@ let release = LoadReleaseNotes "RELEASE_NOTES.md" let outDir = "./docs/output" let genFSAssemblyInfo (projectPath) = - let projectName = System.IO.Path.GetFileNameWithoutExtension(projectPath) - let basePath = "src/" + projectName - let fileName = basePath + "/AssemblyInfo.fs" - CreateFSharpAssemblyInfo fileName - [ Attribute.Title (projectName) - Attribute.Product project - Attribute.Description summary - Attribute.Version release.AssemblyVersion - Attribute.FileVersion release.AssemblyVersion ] - -let genCSAssemblyInfo (projectPath) = - let projectName = System.IO.Path.GetFileNameWithoutExtension(projectPath) - let basePath = "src/" + projectName + "/Properties" - let fileName = basePath + "/AssemblyInfo.cs" - CreateCSharpAssemblyInfo fileName - [ Attribute.Title (projectName) - Attribute.Product project - Attribute.Description summary - Attribute.Version release.AssemblyVersion - Attribute.FileVersion release.AssemblyVersion ] + let projectName = System.IO.Path.GetFileNameWithoutExtension(projectPath) + let basePath = "src/" + projectName + let fileName = basePath + "/AssemblyInfo.fs" + CreateFSharpAssemblyInfo fileName + [ Attribute.Title (projectName) + Attribute.Product project + Attribute.Description summary + Attribute.Version release.AssemblyVersion + Attribute.FileVersion release.AssemblyVersion ] // Generate assembly info files with the right version & up-to-date information Target "AssemblyInfo" (fun _ -> - let fsProjs = !! "src/**/*.fsproj" - let csProjs = !! "src/**/*.csproj" - fsProjs |> Seq.iter genFSAssemblyInfo - csProjs |> Seq.iter genCSAssemblyInfo + !! "src/FsReveal/*.fsproj" + |> Seq.iter genFSAssemblyInfo ) // -------------------------------------------------------------------------------------- // Clean build results Target "Clean" (fun _ -> - CleanDirs [buildDir; "temp"] + CleanDirs [buildDir; "temp"] ) Target "CleanDocs" (fun _ -> - CleanDirs [outDir] + CleanDirs [outDir] ) // -------------------------------------------------------------------------------------- // Build library & test project +let sh exe args = + let exe, args = + if EnvironmentHelper.isUnix + then exe, args else "cmd", ("/C " + exe + " " + args) + shellExec ({ ExecParams.Program = exe + WorkingDirectory = "." + CommandLine = args + Args = [] }) + |> function 0 -> () | x -> failwithf "%s %s exited with %i" exe args x + +Target "JS" (fun _ -> + sh "yarn" "install --ignore-engines" + sh "yarn" "run build" +) + +Target "LoggingFile" (fun _ -> + ReplaceInFiles [ "namespace Logary.Facade", "namespace FsReveal.Logging" ] + [ "paket-files/logary/logary/src/Logary.Facade/Facade.fs" ] +) + Target "Build" (fun _ -> !! solutionFile - |> MSBuildRelease "" "Rebuild" + |> MSBuildRelease "" "Build" |> ignore ) @@ -125,12 +133,8 @@ Target "Build" (fun _ -> // Run the unit tests using test runner Target "RunTests" (fun _ -> - !! testAssemblies - |> NUnit (fun p -> - { p with - DisableShadowCopy = true - TimeOut = TimeSpan.FromMinutes 20. - OutputFile = "TestResults.xml" }) + !! testExecutables + |> Expecto (fun p -> { p with Parallel = false } ) ) #if MONO @@ -158,9 +162,9 @@ Target "SourceLink" (fun _ -> // -------------------------------------------------------------------------------------- // Build a NuGet package -Target "NuGet" (fun _ -> - Paket.Pack (fun p -> - { p with +Target "NuGet" (fun _ -> + Paket.Pack (fun p -> + { p with Version = release.NugetVersion ReleaseNotes = toLines release.Notes }) ) @@ -185,10 +189,10 @@ let generateHelp fail = failwith "generating help documentation failed" else traceImportant "generating help documentation failed" - + Target "GenerateHelp" (fun _ -> - DeleteFile "docs/content/release-notes.md" + DeleteFile "docs/content/release-notes.md" CopyFile "docs/content/" "RELEASE_NOTES.md" Rename "docs/content/release-notes.md" "docs/content/RELEASE_NOTES.md" @@ -202,11 +206,11 @@ Target "GenerateHelp" (fun _ -> Target "GenerateSlides" (fun _ -> if executeFSIWithArgs "docs/tools" "createSlides.fsx" [] [] then - traceImportant "Slides generated" + traceImportant "Slides generated" ) -Target "KeepRunning" (fun _ -> +Target "KeepRunning" (fun _ -> use watcher = new FileSystemWatcher(DirectoryInfo("docs/content").FullName,"*.*") watcher.EnableRaisingEvents <- true watcher.Changed.Add(fun e -> generateHelp false) @@ -249,10 +253,10 @@ Target "Release" (fun _ -> Branches.tag "" release.NugetVersion Branches.pushTag "" "origin" release.NugetVersion - + // release on github createClient (getBuildParamOrDefault "github-user" "") (getBuildParamOrDefault "github-pw" "") - |> createDraft gitOwner gitName release.NugetVersion (release.SemVer.PreRelease <> None) release.Notes + |> createDraft gitOwner gitName release.NugetVersion (release.SemVer.PreRelease <> None) release.Notes |> releaseDraft |> Async.RunSynchronously ) @@ -266,6 +270,8 @@ Target "All" DoNothing "Clean" ==> "AssemblyInfo" + ==> "JS" + ==> "LoggingFile" ==> "Build" ==> "RunTests" =?> ("GenerateReferenceDocs",isLocalBuild && not isMono) @@ -273,11 +279,7 @@ Target "All" DoNothing ==> "All" =?> ("ReleaseDocs",isLocalBuild && not isMono) -"All" -//#if MONO -//#else -// =?> ("SourceLink", Pdbstr.tryFind().IsSome ) -//#endif +"All" ==> "NuGet" ==> "BuildPackage" @@ -289,7 +291,7 @@ Target "All" DoNothing "GenerateHelp" ==> "KeepRunning" - + "ReleaseDocs" ==> "Release" diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/docs/tools/createSlides.fsx b/docs/tools/createSlides.fsx index 487b0365..7fae92a6 100644 --- a/docs/tools/createSlides.fsx +++ b/docs/tools/createSlides.fsx @@ -1,58 +1,58 @@ -#I @"../../bin/" +#I @"../../src/FsReveal/bin/Release" #r "FsReveal.dll" #r "FSharp.Literate.dll" #r "../../packages/build/FAKE/tools/FakeLib.dll" open Fake open System.IO - open FsReveal - +let combine args = Path.Combine (Array.ofList args) +let exists file = File.Exists file +let copy source target = File.Copy(source, target) let root = Path.Combine(__SOURCE_DIRECTORY__,"../../") +let rooted file = combine [ root; file ] let slidesDir = root @@ "/docs/slides" let outDir = root @@ "/docs/output/samples/" -FsReveal.FsRevealHelper.RevealJsFolder <- Path.Combine(root,"paket-files/fsprojects/reveal.js") -FsReveal.FsRevealHelper.TemplateFile <- Path.Combine(root,"src/FsReveal/template.html") +FsReveal.FsRevealHelper.DistFolder <- rooted "dist" +FsReveal.FsRevealHelper.TemplateFile <- rooted "dist/index.html" -let targetFCIS = Path.Combine(root,@"packages/build/FAKE/tools/FSharp.Compiler.Interactive.Settings.dll") -if not (System.IO.File.Exists(targetFCIS)) then - System.IO.File.Copy(Path.Combine(root,@"bin/FSharp.Compiler.Interactive.Settings.dll"), targetFCIS) +let targetFCIS = rooted @"lib/FSharp.Compiler.Interactive.Settings.dll" +if not (exists targetFCIS) then + copy (rooted @"bin/FSharp.Compiler.Interactive.Settings.dll") targetFCIS -let copyStylesheet() = - try - CopyFile (outDir @@ "css\custom.css") (slidesDir @@ "custom.css") - with - | exn -> traceImportant <| sprintf "Could not copy stylesheet: %s" exn.Message +let copyStylesheet () = + try + CopyFile (outDir @@ "css/custom.css") (slidesDir @@ "custom.css") + with + | exn -> + traceImportant <| sprintf "Could not copy stylesheet: %s" exn.Message let copyPics() = + try + !! (slidesDir @@ "images/*.*") + |> CopyFiles (outDir @@ "images") + with + | exn -> + traceImportant <| sprintf "Could not copy picture: %s" exn.Message + +let generateFor (file:FileInfo) = + let rec tryGenerate trials = try - !! (slidesDir @@ "images/*.*") - |> CopyFiles (outDir @@ "images") + FsReveal.GenerateFromFile(file.FullName, outDir) with - | exn -> traceImportant <| sprintf "Could not copy picture: %s" exn.Message - -let generateFor (file:FileInfo) = - try - copyPics() - let rec tryGenerate trials = - try - FsReveal.GenerateFromFile(file.FullName, outDir) - with - | exn when trials > 0 -> tryGenerate (trials - 1) - | exn -> - traceImportant <| sprintf "Could not generate slides for: %s" file.FullName - traceImportant exn.Message - - tryGenerate 3 - - copyStylesheet() - with - | :? FileNotFoundException as exn -> - traceImportant <| sprintf "Could not copy file: %s" exn.FileName - - + | exn when trials > 0 -> tryGenerate (trials - 1) + | exn -> + traceImportant <| sprintf "Could not generate slides for: %s" file.FullName + traceImportant exn.Message + try + copyPics() + tryGenerate 3 + copyStylesheet() + with + | :? FileNotFoundException as exn -> + traceImportant <| sprintf "Could not copy file: %s" exn.FileName !! (slidesDir @@ "*.md") ++ (slidesDir @@ "*.fsx") |> Seq.map fileInfo -|> Seq.iter generateFor +|> Seq.iter generateFor \ No newline at end of file diff --git a/docs/tools/templates/template.cshtml b/docs/tools/templates/template.cshtml deleted file mode 100644 index 5ace6f18..00000000 --- a/docs/tools/templates/template.cshtml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - @Title - - - - - - - - - - - - - - - -
-
- -

@Properties["project-name"]

-
-
-
-
- @RenderBody() -
-
- F# Project - -
-
-
- Fork me on GitHub - - diff --git a/lib/README.md b/lib/README.md index 11cdd7a5..eaf227b0 100644 --- a/lib/README.md +++ b/lib/README.md @@ -4,7 +4,7 @@ Any **libraries** on which your project depends and which are **NOT managed via This typically includes custom builds of third-party software, private (i.e. to a company) codebases, and native libraries. --- -NOTE: +NOTE: This file is a placeholder, used to preserve directory structure in Git. diff --git a/nuget/paket.template b/nuget/paket.template index 2ba1709d..15793530 100644 --- a/nuget/paket.template +++ b/nuget/paket.template @@ -3,21 +3,18 @@ id FsReveal description FsReveal parses markdown or F# script files and generates reveal.js slides. authors - Karlkim Suwanmongkol + Karlkim Suwanmongkol, Steffen Forkmann, Henrik Feldt + licenseurl http://fsprojects.github.io/FsReveal/license.html projecturl https://github.com/fsprojects/FsReveal iconurl http://fsprojects.github.io/FsReveal/img/logo-2.png + tags F#, markdown, reveal.js files - ../bin/FsReveal.* ==> lib/net40 - ../bin/FSharp.Compiler.Interactive.Settings.dll ==> lib/net40 - ../paket-files/fsprojects/reveal.js/**/*.* ==> reveal.js - ../src/FsReveal/style.css ==> reveal.js/fsharp.formatting/styles - ../src/FsReveal/tips.js ==> reveal.js/fsharp.formatting/styles - ../src/FsReveal/deedle.css ==> reveal.js/fsharp.formatting/styles - ../src/FsReveal/template.html ==> fsreveal - ../src/FsReveal/fsreveal.fsx ==> fsreveal - ../src/FsReveal/fsreveal.css ==> fsreveal + ../src/FsReveal/bin/Release/FsReveal.* ==> lib/net461 + ../src/FsReveal/bin/Release/FSharp.Compiler.Interactive.Settings.dll ==> lib/net461 + ../dist/**/*.* ==> tools + ../src/FsReveal/fsreveal.fsx ==> tools dependencies FSharp.Formatting >= 2.11.0 \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 00000000..58336543 --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "fsreveal", + "version": "1.4.0", + "description": "FsReveal parses markdown or F# script files and generates reveal.js slides.", + "main": "index.js", + "repository": { + "url": "https://github.com/fsprojects/FsReveal/", + "type": "git" + }, + "author": "Karlkim Suwamongkol , Troy Kershaw, Steffen Forkmann ", + "license": "MIT", + "dependencies": { + "babel-core": "^6.18.2", + "babel-loader": "^6.2.7", + "babel-preset-es2015": "^6.18.0", + "babel-runtime": "^6.18.0", + "css-loader": "^0.25.0", + "exports-loader": "^0.6.3", + "expose-loader": "^0.7.1", + "file-loader": "^0.9.0", + "highlight.js": "^9.8.0", + "html-loader": "^0.4.4", + "html-webpack-plugin": "^2.24.1", + "imports-loader": "^0.6.5", + "mathjax": "^2.7.0", + "offline-plugin": "^3.4.2", + "raw-loader": "^0.5.1", + "script-loader": "^0.7.0", + "style-loader": "^0.13.1", + "url-loader": "^0.5.7", + "webpack": "^1.13.3" + }, + "engines": { + "node": ">=6.9.1" + }, + "scripts": { + "watch": "webpack -p --display-modules --progress --colors --watch", + "build": "webpack -p --display-modules --progress --colors" + }, + "devDependencies": { + "babel-plugin-transform-runtime": "^6.15.0" + } +} diff --git a/paket.dependencies b/paket.dependencies index 7f17a049..f4a00bd9 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,18 +1,21 @@ source https://nuget.org/api/v2 redirects: on +framework net461 nuget FSharp.Formatting nuget FSharp.Core +github logary/logary src/Logary.Facade/Facade.fs github fsprojects/reveal.js:master group Build - source https://nuget.org/api/v2 + framework net461 + source https://nuget.org/api/v2 nuget FAKE nuget SourceLink.Fake github fsharp/FAKE modules/Octokit/Octokit.fsx group Test + framework net461 source https://nuget.org/api/v2 - nuget NUnit ~> 2 - nuget NUnit.Runners ~> 2 - github forki/FsUnit FsUnit.fs \ No newline at end of file + nuget Expecto + nuget Expecto.FsCheck diff --git a/paket.lock b/paket.lock index c432d4e1..d7f8bf75 100644 --- a/paket.lock +++ b/paket.lock @@ -1,38 +1,48 @@ REDIRECTS: ON +FRAMEWORK: NET461 NUGET remote: https://www.nuget.org/api/v2 FSharp.Compiler.Service (2.0.0.6) - FSharp.Core (4.0.0.1) + FSharp.Core (4.1.17) + System.ValueTuple (>= 4.3) FSharp.Formatting (2.14.4) FSharp.Compiler.Service (2.0.0.6) FSharpVSPowerTools.Core (>= 2.3 < 2.4) FSharpVSPowerTools.Core (2.3) FSharp.Compiler.Service (>= 2.0.0.3) + System.ValueTuple (4.3.1) GITHUB + remote: logary/logary + src/Logary.Facade/Facade.fs (f1d5a7bd317381f014d50ed693e507505b207616) remote: fsprojects/reveal.js FULLPROJECT (539e774d31f91676bcc3f75e28168921cd27d819) GROUP Build +FRAMEWORK: NET461 NUGET remote: https://www.nuget.org/api/v2 - FAKE (4.28) - Microsoft.Bcl (1.1.10) - framework: net10, net11, net20, net30, net35, net40, net40-full - Microsoft.Bcl.Build (>= 1.0.14) - Microsoft.Bcl.Build (1.0.21) - import_targets: false, framework: net10, net11, net20, net30, net35, net40, net40-full - Microsoft.Net.Http (2.2.29) - framework: net10, net11, net20, net30, net35, net40, net40-full - Microsoft.Bcl (>= 1.1.10) - Microsoft.Bcl.Build (>= 1.0.14) - Octokit (0.20) - Microsoft.Net.Http - framework: net10, net11, net20, net30, net35, net40, net40-full + FAKE (4.61.2) + Octokit (0.24) SourceLink.Fake (1.1) GITHUB remote: fsharp/FAKE - modules/Octokit/Octokit.fsx (5a9789b05e5713b55ea996baf8feb3561b6b926d) - Octokit + modules/Octokit/Octokit.fsx (1ada6a9c84aada940bd7e6a7b63c0dc62e2fa56e) + Octokit (>= 0.20) GROUP Test +FRAMEWORK: NET461 NUGET remote: https://www.nuget.org/api/v2 - NUnit (2.6.4) - NUnit.Runners (2.6.4) -GITHUB - remote: forki/FsUnit - FsUnit.fs (f536bd5ed0eba8b38d2b01ae79d64e4e14fbd0a6) \ No newline at end of file + Argu (3.7) + Expecto (4.2.1) + Argu (>= 3.7) + FSharp.Core (>= 4.1.12) + Mono.Cecil (>= 0.9.6.4) + Expecto.FsCheck (4.2.1) + Expecto (>= 4.2.1) + FsCheck (>= 2.8) + FSharp.Core (>= 4.1.12) + FsCheck (2.9) + FSharp.Core (>= 4.1) + FSharp.Core (4.1.17) + System.ValueTuple (>= 4.3) + Mono.Cecil (0.9.6.4) + System.ValueTuple (4.3.1) diff --git a/src/FsReveal/App.config b/src/FsReveal/App.config index ba41caea..fa0dece8 100644 --- a/src/FsReveal/App.config +++ b/src/FsReveal/App.config @@ -4,6 +4,6 @@ True - + diff --git a/src/FsReveal/AssemblyInfo.fs b/src/FsReveal/AssemblyInfo.fs index af5c4ba8..ec0270c1 100644 --- a/src/FsReveal/AssemblyInfo.fs +++ b/src/FsReveal/AssemblyInfo.fs @@ -1,13 +1,17 @@ -namespace System +// Auto-Generated by FAKE; do not edit +namespace System open System.Reflection [] [] [] -[] -[] +[] +[] do () module internal AssemblyVersionInformation = - let [] Version = "1.3.1" - let [] InformationalVersion = "1.3.1" + let [] AssemblyTitle = "FsReveal" + let [] AssemblyProduct = "FsReveal" + let [] AssemblyDescription = "FsReveal parses markdown or F# script files and generates reveal.js slides." + let [] AssemblyVersion = "1.4.0" + let [] AssemblyFileVersion = "1.4.0" diff --git a/src/FsReveal/Domain.fs b/src/FsReveal/Domain.fs index 43fcde45..8e285e4b 100644 --- a/src/FsReveal/Domain.fs +++ b/src/FsReveal/Domain.fs @@ -8,15 +8,15 @@ open FSharp.Literate open FSharp.Markdown open FSharp.Markdown.Html -type SlideData = +type SlideData = { Properties : Map Paragraphs : MarkdownParagraph list } -type Slide = +type Slide = | Simple of SlideData | Nested of SlideData list -type Presentation = +type Presentation = { Properties : Map Slides : Slide list Document : LiterateDocument } diff --git a/src/FsReveal/Formatting.fs b/src/FsReveal/Formatting.fs index e3a63c98..7449c1ff 100644 --- a/src/FsReveal/Formatting.fs +++ b/src/FsReveal/Formatting.fs @@ -12,20 +12,20 @@ let (|SpeakerNote|OtherLine|) (line : string) = let replaceSpeakerNotes text = let rec loop inNotes = function - | (SpeakerNote note) :: lines -> + | (SpeakerNote note) :: lines -> if inNotes then note::(loop true lines) else ""::line::(loop false lines) else line::(loop false lines) | _ -> [] text |> Array.toList |> loop false -let preprocessing (text : string []) = - text +let preprocessing (text : string []) = + text |> replaceSpeakerNotes |> fun s -> String.Join(Environment.NewLine,s) - + /// Generates a HTML page from a presentation let GenerateHTML (template:string) presentation = let doc = Literate.FormatLiterateNodes presentation.Document diff --git a/src/FsReveal/FsReveal.fs b/src/FsReveal/FsReveal.fs index 49dc4eba..38a6f17c 100644 --- a/src/FsReveal/FsReveal.fs +++ b/src/FsReveal/FsReveal.fs @@ -7,108 +7,128 @@ open System.Text open FSharp.Literate open FSharp.Markdown open FSharp.Markdown.Html +open FsReveal.Logging +open FsReveal.Logging.Message -module FsRevealHelper = +module FsRevealHelper = // used to change the working directory - let mutable RevealJsFolder = __SOURCE_DIRECTORY__ - let mutable TemplateFile = Path.Combine(__SOURCE_DIRECTORY__,"template.html") + let mutable DistFolder = __SOURCE_DIRECTORY__ + let mutable TemplateFile = Path.Combine(__SOURCE_DIRECTORY__, "template.html") let mutable StyleFile = Path.Combine(__SOURCE_DIRECTORY__,"fsreveal.css") -type FsReveal private() = - static let defaultFileName (other:FileInfo) optInput = - match optInput with - | Some fn -> fn - | None -> other.Name.Replace(other.Extension, ".html") - - static let generateOutput outDir outFile presentation = - if Directory.Exists outDir |> not then - Directory.CreateDirectory outDir |> ignore - printfn "Creating %s.." outDir - printfn "Copy reveal.js files from %s to %s" FsRevealHelper.RevealJsFolder outDir - copyFiles (fun f -> f.ToLower().Contains("index.html")) FsRevealHelper.RevealJsFolder outDir - // delete overhead - File.Delete(outDir @@ "README.md") - let di = DirectoryInfo(outDir @@ "test") - if di.Exists then di.Delete(true) - let template = File.ReadAllText(FsRevealHelper.TemplateFile) - printfn "Apply template : %s" FsRevealHelper.TemplateFile - let output = Formatting.GenerateHTML template presentation - File.WriteAllText(outDir @@ outFile, output) - let cssDir = outDir @@ "css" - printfn "Copy fsreveal.css style from %s to %s" FsRevealHelper.StyleFile cssDir - if Directory.Exists cssDir |> not then - Directory.CreateDirectory cssDir |> ignore - printfn "Creating %s.." cssDir - - File.Copy(FsRevealHelper.StyleFile, cssDir @@ "fsreveal.css", true) - - static let getPresentationFromScriptLines fsxFile fsiEvaluator lines = - let fsx = Formatting.preprocessing lines - Literate.ParseScriptString(fsx, ?path=Option.map Path.GetFullPath fsxFile, ?fsiEvaluator = fsiEvaluator) - |> getPresentation - - static let getPresentationFromMarkdownLines mdFile fsiEvaluator lines = - let md = Formatting.preprocessing lines - Literate.ParseMarkdownString(md, ?path=Option.map Path.GetFullPath mdFile, ?fsiEvaluator = fsiEvaluator) - |> getPresentation - - static let checkIfFileExistsAndRun file f = - if File.Exists file then f() - else printfn "%s does not exist. Abort!" file - - /// Creates a presentation from an F# Script file specified as string. This also evaluates - /// all F# code snippets in the presentation and embeds the outputs. If you do not specify - /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. - static member GetPresentationFromScriptString(text : string, ?fsxFile, ?fsiEvaluator) = - normalizeLineBreaks(text).Split('\n') - |> getPresentationFromScriptLines fsxFile fsiEvaluator - - /// Creates a presentation from a Markdown source file specified as string. This also evaluates - /// all F# code snippets in the presentation and embeds the outputs. If you do not specify - /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. - static member GetPresentationFromMarkdown(text : string, ?mdFile, ?fsiEvaluator) = - normalizeLineBreaks(text).Split('\n') - |> getPresentationFromMarkdownLines mdFile fsiEvaluator - - /// Write the specified presentation to a specified file in the output directory. - /// (if a file name is not specified, the default `index.html` will be used) - static member GenerateOutput(presentation, outDir, ?outFile) = - generateOutput outDir (defaultArg outFile "index.html") presentation - - /// Processes a presentation specified as an F# Script. This also evaluates all - /// F# code snippets in the presentation and embeds the outputs. If you do not specify - /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. - static member GenerateOutputFromScriptFile(fsxFile, outDir, ?outFile, ?fsiEvaluator) = - checkIfFileExistsAndRun fsxFile (fun () -> - fsxFile - |> File.ReadAllLines - |> getPresentationFromScriptLines (Some fsxFile) fsiEvaluator - |> generateOutput outDir (defaultFileName (FileInfo fsxFile) outFile)) - - /// Processes a presentation specified as a Markdown. This also evaluates all - /// F# code snippets in the presentation and embeds the outputs. If you do not specify - /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. - static member GenerateOutputFromMarkdownFile(mdFile, outDir, ?outFile, ?fsiEvaluator) = - checkIfFileExistsAndRun mdFile (fun () -> - mdFile - |> File.ReadAllLines - |> getPresentationFromMarkdownLines (Some mdFile) fsiEvaluator - |> generateOutput outDir (defaultFileName (FileInfo mdFile) outFile)) - - /// Processes a presentation specified as an F# Script file or a Markdown document. - /// (When the file name has extension other than `fsx` or `md`, nothing happens). - /// - /// The method evaluates F# code snippets in the presentation and embeds the outputs. You - /// can specify a custom `fsiEvaluator` to add formatting for custom values and handle errors - /// during the valuation. - /// - /// ## Parameters - /// - `fsiEvaluator` - Custom evaluator (you can use this parameter to add custom formatting - /// that turns values into HTML when embedding them into the presentation) - static member GenerateFromFile(fileName, outDir, ?outFile, ?fsiEvaluator) = - let file = FileInfo fileName - let outputFileName = defaultFileName file outFile - match file.Extension with - | ".md" -> FsReveal.GenerateOutputFromMarkdownFile(file.FullName, outDir, outputFileName, ?fsiEvaluator=fsiEvaluator) - | ".fsx" -> FsReveal.GenerateOutputFromScriptFile(file.FullName, outDir, outputFileName, ?fsiEvaluator=fsiEvaluator) - | _ -> () +type FsReveal private() = + static let logger = Log.create "FsReveal" + static let defaultFileName (other:FileInfo) optInput = + match optInput with + | Some fn -> + fn + | None -> + other.Name.Replace(other.Extension, ".html") + + static let generateOutput outDir outFile presentation = + if not (Directory.Exists outDir) then + ignore (Directory.CreateDirectory outDir) + logger.info (eventX "Creating {outDir}..." >> setField "outDir" outDir) + + logger.info ( + eventX "Copy compiled JS files from {distFolder} to {outDir}" + >> setField "distFolder" FsRevealHelper.DistFolder + >> setField "outDir" outDir) + + copyFiles (fun f -> f.ToLower().Contains("index.html")) FsRevealHelper.DistFolder outDir + + File.Delete (outDir @@ "README.md") + let di = DirectoryInfo (outDir @@ "test") + if di.Exists then di.Delete(true) + + let template = File.ReadAllText (FsRevealHelper.TemplateFile) + logger.info (eventX "Applying template {templatePath}" + >> setField "templatePath" FsRevealHelper.TemplateFile) + let output = Formatting.GenerateHTML template presentation + File.WriteAllText(outDir @@ outFile, output) + + let cssDir = outDir @@ "css" + logger.info ( + eventX "Copying fsreveal.css styles from {styleFilePath} to {cssDir}" + >> setField "styleFilePath" FsRevealHelper.StyleFile + >> setField "cssDir" cssDir) + + if not (Directory.Exists cssDir)then + logger.info (eventX "Creating {cssDir}" >> setField "cssDir" cssDir) + ignore (Directory.CreateDirectory cssDir) + + File.Copy (FsRevealHelper.StyleFile, cssDir @@ "fsreveal.css", true) + + static let getPresentationFromScriptLines fsxFile fsiEvaluator lines = + let fsx = Formatting.preprocessing lines + Literate.ParseScriptString(fsx, ?path=Option.map Path.GetFullPath fsxFile, ?fsiEvaluator = fsiEvaluator) + |> getPresentation + + static let getPresentationFromMarkdownLines mdFile fsiEvaluator lines = + let md = Formatting.preprocessing lines + Literate.ParseMarkdownString(md, ?path=Option.map Path.GetFullPath mdFile, ?fsiEvaluator = fsiEvaluator) + |> getPresentation + + static let checkIfFileExistsAndRun file f = + if File.Exists file then f() + else logger.warn (eventX "{filePath} does not exist. Abort!" >> setField "filePath" file) + + /// Creates a presentation from an F# Script file specified as string. This also evaluates + /// all F# code snippets in the presentation and embeds the outputs. If you do not specify + /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. + static member GetPresentationFromScriptString(text : string, ?fsxFile, ?fsiEvaluator) = + normalizeLineBreaks(text).Split('\n') + |> getPresentationFromScriptLines fsxFile fsiEvaluator + + /// Creates a presentation from a Markdown source file specified as string. This also evaluates + /// all F# code snippets in the presentation and embeds the outputs. If you do not specify + /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. + static member GetPresentationFromMarkdown(text : string, ?mdFile, ?fsiEvaluator) = + normalizeLineBreaks(text).Split('\n') + |> getPresentationFromMarkdownLines mdFile fsiEvaluator + + /// Write the specified presentation to a specified file in the output directory. + /// (if a file name is not specified, the default `index.html` will be used) + static member GenerateOutput(presentation, outDir, ?outFile) = + generateOutput outDir (defaultArg outFile "index.html") presentation + + /// Processes a presentation specified as an F# Script. This also evaluates all + /// F# code snippets in the presentation and embeds the outputs. If you do not specify + /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. + static member GenerateOutputFromScriptFile(fsxFile, outDir, ?outFile, ?fsiEvaluator) = + checkIfFileExistsAndRun fsxFile (fun () -> + fsxFile + |> File.ReadAllLines + |> getPresentationFromScriptLines (Some fsxFile) fsiEvaluator + |> generateOutput outDir (defaultFileName (FileInfo fsxFile) outFile)) + + /// Processes a presentation specified as a Markdown. This also evaluates all + /// F# code snippets in the presentation and embeds the outputs. If you do not specify + /// a custom FSI evaluator, a new default one is created. See `GenerateFromFile` for more info. + static member GenerateOutputFromMarkdownFile(mdFile, outDir, ?outFile, ?fsiEvaluator) = + checkIfFileExistsAndRun mdFile (fun () -> + mdFile + |> File.ReadAllLines + |> getPresentationFromMarkdownLines (Some mdFile) fsiEvaluator + |> generateOutput outDir (defaultFileName (FileInfo mdFile) outFile)) + + /// Processes a presentation specified as an F# Script file or a Markdown document. + /// (When the file name has extension other than `fsx` or `md`, nothing happens). + /// + /// The method evaluates F# code snippets in the presentation and embeds the outputs. You + /// can specify a custom `fsiEvaluator` to add formatting for custom values and handle errors + /// during the valuation. + /// + /// ## Parameters + /// - `fsiEvaluator` - Custom evaluator (you can use this parameter to add custom formatting + /// that turns values into HTML when embedding them into the presentation) + static member GenerateFromFile(fileName, outDir, ?outFile, ?fsiEvaluator) = + let file = FileInfo fileName + let outputFileName = defaultFileName file outFile + match file.Extension with + | ".md" -> + FsReveal.GenerateOutputFromMarkdownFile(file.FullName, outDir, outputFileName, ?fsiEvaluator=fsiEvaluator) + | ".fsx" -> + FsReveal.GenerateOutputFromScriptFile(file.FullName, outDir, outputFileName, ?fsiEvaluator=fsiEvaluator) + | _ -> + () \ No newline at end of file diff --git a/src/FsReveal/FsReveal.fsproj b/src/FsReveal/FsReveal.fsproj index 77a195da..c34a1824 100644 --- a/src/FsReveal/FsReveal.fsproj +++ b/src/FsReveal/FsReveal.fsproj @@ -2,37 +2,34 @@ - Debug + Release AnyCPU 2.0 7e90d6ce-a10b-4858-a5bc-41df7250cbca Library FsReveal FsReveal - v4.5 - 4.3.0.0 + v4.6.1 FsReveal - - ..\..\ true full false - false - ..\..\bin + true + bin\Debug DEBUG;TRACE 3 - ..\..\bin\FsReveal.xml + bin\Debug\FsReveal.xml pdbonly true true - ..\..\bin + bin\Release TRACE 3 - ..\..\bin\FsReveal.xml + bin\Release\FsReveal.xml 11 @@ -50,14 +47,11 @@ - + + True + paket-files/Facade.fs + @@ -67,7 +61,10 @@ - Always + IfNewer + + + IfNewer @@ -82,16 +79,7 @@ - - - - ..\..\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.dll - True - True - - - - + ..\..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll @@ -102,64 +90,10 @@ - - - - ..\..\packages\FSharp.Core\lib\net20\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll - True - True - - - - + - ..\..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll - True - True - - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll + ..\..\packages\FSharp.Core\lib\net45\FSharp.Core.dll True True @@ -167,7 +101,7 @@ - + ..\..\packages\FSharp.Formatting\lib\net40\CSharpFormat.dll @@ -213,7 +147,7 @@ - + ..\..\packages\FSharpVSPowerTools.Core\lib\net45\FSharpVSPowerTools.Core.dll @@ -223,4 +157,15 @@ + + + + + ..\..\packages\System.ValueTuple\lib\netstandard1.0\System.ValueTuple.dll + True + True + + + + \ No newline at end of file diff --git a/src/FsReveal/fonts.css b/src/FsReveal/fonts.css new file mode 100644 index 00000000..d338a752 --- /dev/null +++ b/src/FsReveal/fonts.css @@ -0,0 +1,144 @@ +/* This stylesheet generated by Transfonter (http://transfonter.org) on November 9, 2016 4:16 PM */ + +@font-face { + font-family: 'Droid Sans'; + src: url('./fonts/DroidSans.eot'); + src: url('./fonts/DroidSans.eot?#iefix') format('embedded-opentype'), + url('./fonts/DroidSans.woff2') format('woff2'), + url('./fonts/DroidSans.woff') format('woff'), + url('./fonts/DroidSans.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Droid Sans'; + src: url('./fonts/DroidSans-Bold.eot'); + src: url('./fonts/DroidSans-Bold.eot?#iefix') format('embedded-opentype'), + url('./fonts/DroidSans-Bold.woff2') format('woff2'), + url('./fonts/DroidSans-Bold.woff') format('woff'), + url('./fonts/DroidSans-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'Droid Sans Mono'; + src: url('./fonts/DroidSansMono.eot'); + src: url('./fonts/DroidSansMono.eot?#iefix') format('embedded-opentype'), + url('./fonts/DroidSansMono.woff2') format('woff2'), + url('./fonts/DroidSansMono.woff') format('woff'), + url('./fonts/DroidSansMono.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-Extrabold.eot'); + src: url('./fonts/OpenSans-Extrabold.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-Extrabold.woff2') format('woff2'), + url('./fonts/OpenSans-Extrabold.woff') format('woff'), + url('./fonts/OpenSans-Extrabold.ttf') format('truetype'); + font-weight: 800; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-SemiboldItalic.eot'); + src: url('./fonts/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-SemiboldItalic.woff2') format('woff2'), + url('./fonts/OpenSans-SemiboldItalic.woff') format('woff'), + url('./fonts/OpenSans-SemiboldItalic.ttf') format('truetype'); + font-weight: 600; + font-style: italic; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSansLight-Italic.eot'); + src: url('./fonts/OpenSansLight-Italic.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSansLight-Italic.woff2') format('woff2'), + url('./fonts/OpenSansLight-Italic.woff') format('woff'), + url('./fonts/OpenSansLight-Italic.ttf') format('truetype'); + font-weight: 300; + font-style: italic; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-Light.eot'); + src: url('./fonts/OpenSans-Light.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-Light.woff2') format('woff2'), + url('./fonts/OpenSans-Light.woff') format('woff'), + url('./fonts/OpenSans-Light.ttf') format('truetype'); + font-weight: 300; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-BoldItalic.eot'); + src: url('./fonts/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-BoldItalic.woff2') format('woff2'), + url('./fonts/OpenSans-BoldItalic.woff') format('woff'), + url('./fonts/OpenSans-BoldItalic.ttf') format('truetype'); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-Bold.eot'); + src: url('./fonts/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-Bold.woff2') format('woff2'), + url('./fonts/OpenSans-Bold.woff') format('woff'), + url('./fonts/OpenSans-Bold.ttf') format('truetype'); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-ExtraboldItalic.eot'); + src: url('./fonts/OpenSans-ExtraboldItalic.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-ExtraboldItalic.woff2') format('woff2'), + url('./fonts/OpenSans-ExtraboldItalic.woff') format('woff'), + url('./fonts/OpenSans-ExtraboldItalic.ttf') format('truetype'); + font-weight: 800; + font-style: italic; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-Italic.eot'); + src: url('./fonts/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-Italic.woff2') format('woff2'), + url('./fonts/OpenSans-Italic.woff') format('woff'), + url('./fonts/OpenSans-Italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans.eot'); + src: url('./fonts/OpenSans.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans.woff2') format('woff2'), + url('./fonts/OpenSans.woff') format('woff'), + url('./fonts/OpenSans.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Open Sans'; + src: url('./fonts/OpenSans-Semibold.eot'); + src: url('./fonts/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), + url('./fonts/OpenSans-Semibold.woff2') format('woff2'), + url('./fonts/OpenSans-Semibold.woff') format('woff'), + url('./fonts/OpenSans-Semibold.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} diff --git a/src/FsReveal/fonts/DroidSans-Bold.eot b/src/FsReveal/fonts/DroidSans-Bold.eot new file mode 100644 index 00000000..346a620d Binary files /dev/null and b/src/FsReveal/fonts/DroidSans-Bold.eot differ diff --git a/src/FsReveal/fonts/DroidSans-Bold.ttf b/src/FsReveal/fonts/DroidSans-Bold.ttf new file mode 100644 index 00000000..e9a939b0 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans-Bold.ttf differ diff --git a/src/FsReveal/fonts/DroidSans-Bold.woff b/src/FsReveal/fonts/DroidSans-Bold.woff new file mode 100644 index 00000000..b72675d2 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans-Bold.woff differ diff --git a/src/FsReveal/fonts/DroidSans-Bold.woff2 b/src/FsReveal/fonts/DroidSans-Bold.woff2 new file mode 100644 index 00000000..7f16dce7 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans-Bold.woff2 differ diff --git a/src/FsReveal/fonts/DroidSans.eot b/src/FsReveal/fonts/DroidSans.eot new file mode 100644 index 00000000..027edda3 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans.eot differ diff --git a/src/FsReveal/fonts/DroidSans.ttf b/src/FsReveal/fonts/DroidSans.ttf new file mode 100644 index 00000000..c785b482 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans.ttf differ diff --git a/src/FsReveal/fonts/DroidSans.woff b/src/FsReveal/fonts/DroidSans.woff new file mode 100644 index 00000000..6cab43f6 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans.woff differ diff --git a/src/FsReveal/fonts/DroidSans.woff2 b/src/FsReveal/fonts/DroidSans.woff2 new file mode 100644 index 00000000..507b6ab2 Binary files /dev/null and b/src/FsReveal/fonts/DroidSans.woff2 differ diff --git a/src/FsReveal/fonts/DroidSansMono.eot b/src/FsReveal/fonts/DroidSansMono.eot new file mode 100644 index 00000000..83743d0e Binary files /dev/null and b/src/FsReveal/fonts/DroidSansMono.eot differ diff --git a/src/FsReveal/fonts/DroidSansMono.ttf b/src/FsReveal/fonts/DroidSansMono.ttf new file mode 100644 index 00000000..1e5c3325 Binary files /dev/null and b/src/FsReveal/fonts/DroidSansMono.ttf differ diff --git a/src/FsReveal/fonts/DroidSansMono.woff b/src/FsReveal/fonts/DroidSansMono.woff new file mode 100644 index 00000000..89ffc77c Binary files /dev/null and b/src/FsReveal/fonts/DroidSansMono.woff differ diff --git a/src/FsReveal/fonts/DroidSansMono.woff2 b/src/FsReveal/fonts/DroidSansMono.woff2 new file mode 100644 index 00000000..67185e4b Binary files /dev/null and b/src/FsReveal/fonts/DroidSansMono.woff2 differ diff --git a/src/FsReveal/fonts/LICENSE.txt b/src/FsReveal/fonts/LICENSE.txt new file mode 100755 index 00000000..d6456956 --- /dev/null +++ b/src/FsReveal/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/src/FsReveal/fonts/OpenSans-Bold.eot b/src/FsReveal/fonts/OpenSans-Bold.eot new file mode 100644 index 00000000..999dc25c Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Bold.eot differ diff --git a/src/FsReveal/fonts/OpenSans-Bold.ttf b/src/FsReveal/fonts/OpenSans-Bold.ttf new file mode 100644 index 00000000..8540b204 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Bold.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Bold.woff b/src/FsReveal/fonts/OpenSans-Bold.woff new file mode 100644 index 00000000..fa3a403e Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Bold.woff differ diff --git a/src/FsReveal/fonts/OpenSans-Bold.woff2 b/src/FsReveal/fonts/OpenSans-Bold.woff2 new file mode 100644 index 00000000..7f69aa45 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Bold.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-BoldItalic.eot b/src/FsReveal/fonts/OpenSans-BoldItalic.eot new file mode 100644 index 00000000..1ca19c7b Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-BoldItalic.eot differ diff --git a/src/FsReveal/fonts/OpenSans-BoldItalic.ttf b/src/FsReveal/fonts/OpenSans-BoldItalic.ttf new file mode 100644 index 00000000..0f7d9aaf Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-BoldItalic.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-BoldItalic.woff b/src/FsReveal/fonts/OpenSans-BoldItalic.woff new file mode 100644 index 00000000..ce246035 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-BoldItalic.woff differ diff --git a/src/FsReveal/fonts/OpenSans-BoldItalic.woff2 b/src/FsReveal/fonts/OpenSans-BoldItalic.woff2 new file mode 100644 index 00000000..27b4e321 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-BoldItalic.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-Extrabold.eot b/src/FsReveal/fonts/OpenSans-Extrabold.eot new file mode 100644 index 00000000..89fb6eb1 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Extrabold.eot differ diff --git a/src/FsReveal/fonts/OpenSans-Extrabold.ttf b/src/FsReveal/fonts/OpenSans-Extrabold.ttf new file mode 100644 index 00000000..934fcc26 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Extrabold.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Extrabold.woff b/src/FsReveal/fonts/OpenSans-Extrabold.woff new file mode 100644 index 00000000..73f87c2e Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Extrabold.woff differ diff --git a/src/FsReveal/fonts/OpenSans-Extrabold.woff2 b/src/FsReveal/fonts/OpenSans-Extrabold.woff2 new file mode 100644 index 00000000..a53b0050 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Extrabold.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-ExtraboldItalic.eot b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.eot new file mode 100644 index 00000000..945ef5c4 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.eot differ diff --git a/src/FsReveal/fonts/OpenSans-ExtraboldItalic.ttf b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.ttf new file mode 100644 index 00000000..d805c800 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff new file mode 100644 index 00000000..b8c3c15f Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff differ diff --git a/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff2 b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff2 new file mode 100644 index 00000000..1a575853 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-ExtraboldItalic.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-Italic.eot b/src/FsReveal/fonts/OpenSans-Italic.eot new file mode 100644 index 00000000..25bf15a3 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Italic.eot differ diff --git a/src/FsReveal/fonts/OpenSans-Italic.ttf b/src/FsReveal/fonts/OpenSans-Italic.ttf new file mode 100644 index 00000000..bcf94f4f Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Italic.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Italic.woff b/src/FsReveal/fonts/OpenSans-Italic.woff new file mode 100644 index 00000000..3dd3c5e5 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Italic.woff differ diff --git a/src/FsReveal/fonts/OpenSans-Italic.woff2 b/src/FsReveal/fonts/OpenSans-Italic.woff2 new file mode 100644 index 00000000..79a26670 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Italic.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-Light.eot b/src/FsReveal/fonts/OpenSans-Light.eot new file mode 100644 index 00000000..10a8377a Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Light.eot differ diff --git a/src/FsReveal/fonts/OpenSans-Light.ttf b/src/FsReveal/fonts/OpenSans-Light.ttf new file mode 100644 index 00000000..3b21c3ca Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Light.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Light.woff b/src/FsReveal/fonts/OpenSans-Light.woff new file mode 100644 index 00000000..cecd791f Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Light.woff differ diff --git a/src/FsReveal/fonts/OpenSans-Light.woff2 b/src/FsReveal/fonts/OpenSans-Light.woff2 new file mode 100644 index 00000000..bbe79f23 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Light.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-LightItalic.ttf b/src/FsReveal/fonts/OpenSans-LightItalic.ttf new file mode 100755 index 00000000..68299c4b Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-LightItalic.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Regular.ttf b/src/FsReveal/fonts/OpenSans-Regular.ttf new file mode 100755 index 00000000..db433349 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Regular.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Semibold.eot b/src/FsReveal/fonts/OpenSans-Semibold.eot new file mode 100644 index 00000000..3f248799 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Semibold.eot differ diff --git a/src/FsReveal/fonts/OpenSans-Semibold.ttf b/src/FsReveal/fonts/OpenSans-Semibold.ttf new file mode 100644 index 00000000..d66a071a Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Semibold.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-Semibold.woff b/src/FsReveal/fonts/OpenSans-Semibold.woff new file mode 100644 index 00000000..b3e997b0 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Semibold.woff differ diff --git a/src/FsReveal/fonts/OpenSans-Semibold.woff2 b/src/FsReveal/fonts/OpenSans-Semibold.woff2 new file mode 100644 index 00000000..df98b0e3 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-Semibold.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans-SemiboldItalic.eot b/src/FsReveal/fonts/OpenSans-SemiboldItalic.eot new file mode 100644 index 00000000..897100a4 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-SemiboldItalic.eot differ diff --git a/src/FsReveal/fonts/OpenSans-SemiboldItalic.ttf b/src/FsReveal/fonts/OpenSans-SemiboldItalic.ttf new file mode 100644 index 00000000..2303a356 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-SemiboldItalic.ttf differ diff --git a/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff b/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff new file mode 100644 index 00000000..529f9fd9 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff differ diff --git a/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff2 b/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff2 new file mode 100644 index 00000000..bcb90fe6 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans-SemiboldItalic.woff2 differ diff --git a/src/FsReveal/fonts/OpenSans.eot b/src/FsReveal/fonts/OpenSans.eot new file mode 100644 index 00000000..3c585c51 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans.eot differ diff --git a/src/FsReveal/fonts/OpenSans.ttf b/src/FsReveal/fonts/OpenSans.ttf new file mode 100644 index 00000000..7a4e22a8 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans.ttf differ diff --git a/src/FsReveal/fonts/OpenSans.woff b/src/FsReveal/fonts/OpenSans.woff new file mode 100644 index 00000000..101c1897 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans.woff differ diff --git a/src/FsReveal/fonts/OpenSans.woff2 b/src/FsReveal/fonts/OpenSans.woff2 new file mode 100644 index 00000000..cb388731 Binary files /dev/null and b/src/FsReveal/fonts/OpenSans.woff2 differ diff --git a/src/FsReveal/fonts/OpenSansLight-Italic.eot b/src/FsReveal/fonts/OpenSansLight-Italic.eot new file mode 100644 index 00000000..0c002640 Binary files /dev/null and b/src/FsReveal/fonts/OpenSansLight-Italic.eot differ diff --git a/src/FsReveal/fonts/OpenSansLight-Italic.ttf b/src/FsReveal/fonts/OpenSansLight-Italic.ttf new file mode 100644 index 00000000..63463063 Binary files /dev/null and b/src/FsReveal/fonts/OpenSansLight-Italic.ttf differ diff --git a/src/FsReveal/fonts/OpenSansLight-Italic.woff b/src/FsReveal/fonts/OpenSansLight-Italic.woff new file mode 100644 index 00000000..4dcf0d51 Binary files /dev/null and b/src/FsReveal/fonts/OpenSansLight-Italic.woff differ diff --git a/src/FsReveal/fonts/OpenSansLight-Italic.woff2 b/src/FsReveal/fonts/OpenSansLight-Italic.woff2 new file mode 100644 index 00000000..8bf83bb1 Binary files /dev/null and b/src/FsReveal/fonts/OpenSansLight-Italic.woff2 differ diff --git a/src/FsReveal/fsreveal.fsx b/src/FsReveal/fsreveal.fsx index 9afaf6e0..158d7d31 100644 --- a/src/FsReveal/fsreveal.fsx +++ b/src/FsReveal/fsreveal.fsx @@ -1,16 +1,18 @@ #load "../../FSharp.Formatting/FSharp.Formatting.fsx" -#I "../lib/net40" +#I "../lib/net461" // this fils is in ./tools in the nuget package #r "FsReveal.dll" +open System.IO // Workaround for https://github.com/fsharp/FSharp.Compiler.Service/issues/199 // (The file needs to be in the same place from which FSharp.Compiler.Service.dll is loaded) -printfn "copy FSharp.Compiler.Interactive.Settings ..." +printfn "copy FSharp.Compiler.Interactive.Settings ..." let targetFCIS = __SOURCE_DIRECTORY__ + "/../../FAKE/tools/FSharp.Compiler.Interactive.Settings.dll" -if not (System.IO.File.Exists(targetFCIS)) then - System.IO.File.Copy(__SOURCE_DIRECTORY__ + "/../lib/net40/FSharp.Compiler.Interactive.Settings.dll", targetFCIS) -FsReveal.FsRevealHelper.RevealJsFolder <- System.IO.Path.Combine(__SOURCE_DIRECTORY__,"../reveal.js") -printfn "Set FsReveal folder to %s" FsReveal.FsRevealHelper.RevealJsFolder +if not (File.Exists (targetFCIS)) then + System.IO.File.Copy(__SOURCE_DIRECTORY__ + "/../lib/net461/FSharp.Compiler.Interactive.Settings.dll", targetFCIS) -FsReveal.FsRevealHelper.TemplateFile <- System.IO.Path.Combine(__SOURCE_DIRECTORY__,"template.html") +FsReveal.FsRevealHelper.DistFolder <- System.IO.Path.Combine(__SOURCE_DIRECTORY__) +printfn "Set dist to %s" FsReveal.FsRevealHelper.DistFolder + +FsReveal.FsRevealHelper.TemplateFile <- System.IO.Path.Combine(__SOURCE_DIRECTORY__,"index.html") FsReveal.FsRevealHelper.StyleFile <- System.IO.Path.Combine(__SOURCE_DIRECTORY__,"fsreveal.css") \ No newline at end of file diff --git a/src/FsReveal/manifest.json b/src/FsReveal/manifest.json new file mode 100644 index 00000000..32795285 --- /dev/null +++ b/src/FsReveal/manifest.json @@ -0,0 +1,8 @@ + +{ + "name": "FsReveal presentation", + "start_url": "index.html", + "display": "standalone", + "orientation": "portrait", + "background_color": "#FFFFFF" +} \ No newline at end of file diff --git a/src/FsReveal/paket.references b/src/FsReveal/paket.references index 3a1b7bfc..def6c23b 100644 --- a/src/FsReveal/paket.references +++ b/src/FsReveal/paket.references @@ -1,2 +1,3 @@ FSharp.Formatting -FSharp.Core \ No newline at end of file +FSharp.Core +File: Facade.fs diff --git a/src/FsReveal/template.html b/src/FsReveal/template.html index 26dc7d60..511a82c9 100644 --- a/src/FsReveal/template.html +++ b/src/FsReveal/template.html @@ -1,6 +1,6 @@ - + - + {title} @@ -8,82 +8,14 @@ - - - - - - - - - - - - - - - - - - - + +
- {tooltips} - -
- {slides} -
+ {tooltips} +
+ {slides} +
- - - - - - + + \ No newline at end of file diff --git a/src/FsReveal/template.js b/src/FsReveal/template.js new file mode 100644 index 00000000..3ab198d8 --- /dev/null +++ b/src/FsReveal/template.js @@ -0,0 +1,95 @@ +//import 'mathjax'; // currently pretty broken +import '../../paket-files/fsprojects/reveal.js/css/reveal.css'; +import '../../paket-files/fsprojects/reveal.js/lib/css/zenburn.css'; +import '../../paket-files/fsprojects/reveal.js/css/theme/night.css'; +import './fonts.css'; +import './style.css'; +import './deedle.css'; +import { ToolTips } from './tips.js'; +//import 'file?name=[name].[ext]!./favicon.ico'; +import '!file?name=[name].[ext]!./manifest.json'; + +// Reveal stuff +import Reveal from 'imports?define=>null!../../paket-files/fsprojects/reveal.js/js/reveal.js'; +import '!file?name=plugin/markdown/[name].[ext]!../../paket-files/fsprojects/reveal.js/plugin/markdown/marked.js'; +import '!file?name=plugin/markdown/[name].[ext]!../../paket-files/fsprojects/reveal.js/plugin/markdown/markdown.js'; +import '!file?name=plugin/zoom-js/[name].[ext]!../../paket-files/fsprojects/reveal.js/plugin/zoom-js/zoom.js'; +import '!file?name=plugin/notes/[name].[ext]!../../paket-files/fsprojects/reveal.js/plugin/notes/notes.js'; +import hljs from 'highlight.js'; + +// If the query includes 'print-pdf', include the PDF print sheet +if (window.location.search.match( /print-pdf/gi)) { + require('../../paket-files/fsprojects/reveal.js/css/reveal.css'); +} + +// legacy tips.js file: +var currentTip = null; +var currentTipElement = null; + +function hideTip(evt, name, unique) { + var el = document.getElementById(name); + el.style.display = "none"; + currentTip = null; +} + +function hideUsingEsc(e) { + if (!e) { e = event; } + hideTip(e, currentTipElement, currentTip); +} + +function showTip(evt, name, unique, owner) { + document.onkeydown = hideUsingEsc; + if (currentTip == unique) return; + currentTip = unique; + currentTipElement = name; + + var target = owner ? owner : (evt.srcElement ? evt.srcElement : evt.target); + var posx = target.offsetLeft; + var posy = target.offsetTop + target.offsetHeight; + + var el = document.getElementById(name); + var parent = target.offsetParent; + el.style.position = "absolute"; + el.style.left = posx + "px"; + el.style.top = posy + "px"; + parent.appendChild(el); + el.style.display = "block"; +} +window.hideTip = hideTip; +window.hideUsingEsc = hideUsingEsc; +window.showTip = showTip; +// end legacy file tips.js + +function init() { + const websocket = new WebSocket(`ws://${window.location.host}/websocket`); + websocket.onmessage = function(evt) { location.reload(); }; +} +window.addEventListener("load", init, false); + +// Add the nohighlight class and data-noescape attribute to code elements that have already been formatted by FSharp.Formatting +[].forEach.call(document.querySelectorAll('pre.highlighted code'), el => { + el.classList.add('nohighlight'); + el.setAttribute('data-noescape', ''); +}); + +function reveal() { + hljs.initHighlightingOnLoad(); + + // Full list of configuration options available here: + // https://github.com/hakimel/reveal.js#configuration + Reveal.initialize({ + controls: true, + progress: true, + history: true, + center: true, + transition: 'default', // default/cube/page/concave/zoom/linear/fade/none + // Parallax scrolling + // parallaxBackgroundImage: 'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg', + // parallaxBackgroundSize: '2100px 900px', + }); +} +window.addEventListener("load", reveal, false); + +if (process.env.NODE_ENV === 'production') { + require('offline-plugin/runtime').install(); // eslint-disable-line global-require +} \ No newline at end of file diff --git a/tests/FsReveal.Tests/App.config b/tests/FsReveal.Tests/App.config index ba41caea..fa0dece8 100644 --- a/tests/FsReveal.Tests/App.config +++ b/tests/FsReveal.Tests/App.config @@ -4,6 +4,6 @@ True - + diff --git a/tests/FsReveal.Tests/FsReveal.Tests.fsproj b/tests/FsReveal.Tests/FsReveal.Tests.fsproj index 36259eb1..254e87c4 100644 --- a/tests/FsReveal.Tests/FsReveal.Tests.fsproj +++ b/tests/FsReveal.Tests/FsReveal.Tests.fsproj @@ -6,14 +6,11 @@ AnyCPU 2.0 e789c72a-5cfd-436b-8ef1-61aa2852a89f - Library + Exe FsReveal.Tests FsReveal.Tests - v4.5 - 4.3.0.0 + v4.6.1 FsReveal.Tests - - ..\..\ true @@ -23,21 +20,14 @@ bin\Debug\ DEBUG;TRACE 3 - bin\Debug\fsharp_project_scaffold_tests.XML Project - - - - pdbonly true true bin\Release\ - TRACE 3 - bin\Release\FsReveal.Tests.xml 11 @@ -55,19 +45,7 @@ - - - - True - FsUnit.fs - @@ -76,6 +54,7 @@ Always + @@ -95,19 +74,21 @@ - + - ..\..\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.dll + ..\..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll True True - + + + - - ..\..\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll + + ..\..\packages\FSharp.Core\lib\net45\FSharp.Core.dll True True @@ -115,64 +96,56 @@ - + - - ..\..\packages\FSharp.Core\lib\net20\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\CSharpFormat.dll True True - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\FSharp.CodeFormat.dll True True - - - - - - ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Formatting.Common.dll True True - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+monoandroid10+monotouch10+xamarinios10\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Literate.dll True True - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Markdown.dll True True - - - - - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45+wp8\FSharp.Core.dll + + ..\..\packages\FSharp.Formatting\lib\net40\FSharp.MetadataFormat.dll + True + True + + + ..\..\packages\FSharp.Formatting\lib\net40\RazorEngine.dll + True + True + + + ..\..\packages\FSharp.Formatting\lib\net40\System.Web.Razor.dll True True - + + + - - ..\..\packages\FSharp.Core\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Core.dll + + ..\..\packages\FSharpVSPowerTools.Core\lib\net45\FSharpVSPowerTools.Core.dll True True @@ -180,67 +153,84 @@ - + - - ..\..\packages\FSharp.Formatting\lib\net40\CSharpFormat.dll + + ..\..\packages\System.ValueTuple\lib\netstandard1.0\System.ValueTuple.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\FSharp.CodeFormat.dll + + + + + + + + ..\..\packages\test\Argu\lib\net40\Argu.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Formatting.Common.dll + + + + + + + + ..\..\packages\test\Expecto\lib\net40\Expecto.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Literate.dll + + + + + + + + ..\..\packages\test\Expecto.FsCheck\lib\net40\Expecto.FsCheck.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\FSharp.Markdown.dll + + + + + + + + ..\..\packages\test\FsCheck\lib\net452\FsCheck.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\FSharp.MetadataFormat.dll + + + + + + + + ..\..\packages\test\Mono.Cecil\lib\net45\Mono.Cecil.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\RazorEngine.dll + + ..\..\packages\test\Mono.Cecil\lib\net45\Mono.Cecil.Mdb.dll True True - - ..\..\packages\FSharp.Formatting\lib\net40\System.Web.Razor.dll + + ..\..\packages\test\Mono.Cecil\lib\net45\Mono.Cecil.Pdb.dll True True - - - - - - - - ..\..\packages\FSharpVSPowerTools.Core\lib\net45\FSharpVSPowerTools.Core.dll + + ..\..\packages\test\Mono.Cecil\lib\net45\Mono.Cecil.Rocks.dll True True - - - ..\..\packages\test\NUnit\lib\nunit.framework.dll - True - True - - \ No newline at end of file diff --git a/tests/FsReveal.Tests/FsRevealIntroTest.fs b/tests/FsReveal.Tests/FsRevealIntroTest.fs index fc0ad9d8..f5d32985 100644 --- a/tests/FsReveal.Tests/FsRevealIntroTest.fs +++ b/tests/FsReveal.Tests/FsRevealIntroTest.fs @@ -1,20 +1,24 @@ module FsReveal.FsRevealIntroTest +open System.IO open FsReveal -open NUnit.Framework -open FsUnit +open Expecto +open Expecto.Flip -[] -let ``can read FsReveal intro``() = - let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", "." ,"index.html") +[] +let tests = + testList "intro" [ + testCase "can read FsReveal intro" <| fun () -> + let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", ".", "index.html") + File.Exists "index.html" + |> Expect.isTrue "Should have index.html" - System.IO.File.Exists "index.html" |> shouldEqual true + testCase "can create intro twice" <| fun () -> + let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", ".", "index.html") + let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", ".", "sample.html") - -[] -let ``can create intro twice``() = - let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", ".", "index.html") - let doc = FsReveal.GenerateOutputFromMarkdownFile("Index.md", ".", "sample.html") - - System.IO.File.Exists "index.html" |> shouldEqual true - System.IO.File.Exists "sample.html" |> shouldEqual true \ No newline at end of file + File.Exists "index.html" + |> Expect.isTrue "Should have index.html" + File.Exists "sample.html" + |> Expect.isTrue "Should have index.html" + ] \ No newline at end of file diff --git a/tests/FsReveal.Tests/Program.fs b/tests/FsReveal.Tests/Program.fs new file mode 100644 index 00000000..bbc63f52 --- /dev/null +++ b/tests/FsReveal.Tests/Program.fs @@ -0,0 +1,6 @@ +module FsReveal.Tests.Program + +open Expecto + +[] +let main argv = Tests.runTestsInAssembly defaultConfig argv \ No newline at end of file diff --git a/tests/FsReveal.Tests/PropertySpecs.fs b/tests/FsReveal.Tests/PropertySpecs.fs index b1c21b26..4bdf8f0b 100644 --- a/tests/FsReveal.Tests/PropertySpecs.fs +++ b/tests/FsReveal.Tests/PropertySpecs.fs @@ -1,8 +1,8 @@ module FsReveal.PropertySpecs open FsReveal -open NUnit.Framework -open FsUnit +open Expecto +open Expecto.Flip let md = """ - title : FsReveal @@ -31,13 +31,21 @@ let md = """ ### Section 3""" -[] -let ``can read properties from markdown``() = +[] +let tests = + testCase "can read properties from markdown" <| fun () -> let properties = (md |> FsReveal.GetPresentationFromMarkdown).Properties - properties.["title"] |> shouldEqual "FsReveal" - properties.["description"] |> shouldEqual "Introduction to FsReveal" - properties.["theme"] |> shouldEqual "Night" - properties.["transition"] |> shouldEqual "default" + properties.["title"] + |> Expect.equal "Should have the correct title" "FsReveal" + + properties.["description"] + |> Expect.equal "Should have the correct description" "Introduction to FsReveal" + + properties.["theme"] + |> Expect.equal "Should have the correct themse" "Night" + + properties.["transition"] + |> Expect.equal "Should have the right transition method" "default" let defaultMD = """ *** @@ -60,10 +68,19 @@ let defaultMD = """ ### Section 3""" -[] -let ``uses default properties if nothing is specified in markdown``() = - let properties = (defaultMD |> FsReveal.GetPresentationFromMarkdown).Properties - properties.["title"] |> shouldEqual "Presentation" - properties.["description"] |> shouldEqual "" - properties.["theme"] |> shouldEqual "night" - properties.["transition"] |> shouldEqual "default" \ No newline at end of file +[] +let tests2 = + testCase "uses default properties if nothing is specified in markdown" <| fun () -> + let presentation = defaultMD |> FsReveal.GetPresentationFromMarkdown + let properties = presentation.Properties + properties.["title"] + |> Expect.equal "Presentation title" "Presentation" + + properties.["description"] + |> Expect.stringHasLength "Presentation description" 0 + + properties.["theme"] + |> Expect.equal "Theme is correct" "night" + + properties.["transition"] + |> Expect.equal "Transition is default" "default" \ No newline at end of file diff --git a/tests/FsReveal.Tests/SectionsSpecs.fs b/tests/FsReveal.Tests/SectionsSpecs.fs index 1b5e467b..353c5174 100644 --- a/tests/FsReveal.Tests/SectionsSpecs.fs +++ b/tests/FsReveal.Tests/SectionsSpecs.fs @@ -1,8 +1,8 @@ module FsReveal.SectionsSpecs open FsReveal -open NUnit.Framework -open FsUnit +open Expecto +open Expecto.Flip let md = """ - title : FsReveal @@ -31,17 +31,24 @@ let md = """ ### Slide 3""" -[] -let ``can generate sections from markdown``() = - let slides = (md |> FsReveal.GetPresentationFromMarkdown).Slides - slides.Length |> shouldEqual 3 - let slide = - slides - |> Seq.skip 1 - |> Seq.head +[] +let tests = + testCase "can generate sections from markdown" <| fun () -> + let presentation = FsReveal.GetPresentationFromMarkdown md + let slides = presentation.Slides + + slides.Length |> Expect.equal "Should have three slides" 3 + + let slide = + slides + |> Seq.skip 1 + |> Seq.head + match slide with - | Slide.Nested x -> () - | _ -> failwith "subslides not parsed" + | Slide.Nested x -> + () + | _ -> + failwith "subslides not parsed" let md2 = """ @@ -65,16 +72,21 @@ let md2 = """ ### Slide 3""" -[] -let ``can generate sections from markdown without properties``() = - let slides = (md2 |> FsReveal.GetPresentationFromMarkdown).Slides - slides.Length |> shouldEqual 3 - let slide = slides.[1] - match slide with - | Slide.Nested x -> () - | _ -> failwith "subslides not parsed" +[] +let markdowns = + testCase "can generate sections from markdown without properties" <| fun () -> + let presentation = FsReveal.GetPresentationFromMarkdown md2 + let slides = presentation.Slides + slides.Length |> Expect.equal "Should have three slides" 3 + match slides.[1] with + | Slide.Nested x -> + () + | _ -> + failwith "subslides not parsed" -let normalizeLineBreaks (text:string) = text.Replace("\r\n","\n").Replace("\n","\n") +let normalizeLineBreaks (text: string) = + text.Replace("\r\n","\n") + .Replace("\n","\n") let testTemplate ="{slides}" @@ -100,9 +112,10 @@ let expectedOutput = """
""" -[] -let ``can generate html sections from markdown``() = +[] +let outputs = + testCase "can generate html sections from markdown" <| fun () -> let presentation = FsReveal.GetPresentationFromMarkdown md Formatting.GenerateHTML testTemplate presentation |> normalizeLineBreaks - |> shouldEqual (normalizeLineBreaks expectedOutput) + |> Expect.equal "Output with linebreaks equals" (normalizeLineBreaks expectedOutput) diff --git a/tests/FsReveal.Tests/SlidePropertySpecs.fs b/tests/FsReveal.Tests/SlidePropertySpecs.fs index 115bfb34..e9d509a8 100644 --- a/tests/FsReveal.Tests/SlidePropertySpecs.fs +++ b/tests/FsReveal.Tests/SlidePropertySpecs.fs @@ -1,8 +1,8 @@ module FsReveal.SlidePropertySpecs open FsReveal -open NUnit.Framework -open FsUnit +open Expecto +open Expecto.Flip let md = """ - title : FsReveal @@ -31,15 +31,17 @@ let md = """ ### Section 3""" -[] -let ``can read properties from slides``() = - let doc = md |> FsReveal.GetPresentationFromMarkdown +[] +let tests = + testCase "can read properties from slides" <| fun () -> + let doc = FsReveal.GetPresentationFromMarkdown md match doc.Slides.[0] with | Simple slide -> - let slideProperties = slide.Properties - slideProperties.["background"] |> shouldEqual "image.png" - slideProperties.["background-repeat"] |> shouldEqual "repeat" - | _ -> failwith "first slide should be a simple one" + let slideProperties = slide.Properties + slideProperties.["background"] |> Expect.equal "Background is the right image" "image.png" + slideProperties.["background-repeat"] |> Expect.equal "Background-repeat is correct" "repeat" + | _ -> + failwith "first slide should be a simple one" let md2 = """*** - no property @@ -64,18 +66,29 @@ let md2 = """*** ### Section 3""" -[] -let ``can read properties from slides with list``() = - let doc = md2 |> FsReveal.GetPresentationFromMarkdown - match doc.Slides.[1] with - | Nested slides -> - let firstNestedSlideProperties = slides.[0].Properties - firstNestedSlideProperties.["data-background"] |> shouldEqual "images/smalllogo.png" - firstNestedSlideProperties.["data-background-repeat"] |> shouldEqual "repeat" - firstNestedSlideProperties.["data-background-size"] |> shouldEqual "100px" - let secondNestedSlideProperties = slides.[1].Properties - secondNestedSlideProperties |> shouldEqual Map.empty - | _ -> failwith "first slide should be a nested one" +[] +let tests2 = + testCase "can read properties from slides with list" <| fun () -> + let doc = FsReveal.GetPresentationFromMarkdown md2 + let slides = + match doc.Slides.[1] with + | Nested slides -> slides + | _ -> failwith "first slide should be a nested one" + + let firstNestedSlideProperties = slides.[0].Properties + firstNestedSlideProperties.["data-background"] + |> Expect.equal "Can set data properties" "images/smalllogo.png" + + firstNestedSlideProperties.["data-background-repeat"] + |> Expect.equal "Can set data properties 2" "repeat" + + firstNestedSlideProperties.["data-background-size"] + |> Expect.equal "Can set data properties 3" "100px" + + let secondNestedSlideProperties = slides.[1].Properties + secondNestedSlideProperties + |> Expect.equal "Has no properties for the second slide" Map.empty + let testTemplate ="{slides}" @@ -105,9 +118,10 @@ let expectedOutput = """
""" -[] -let ``should not render slide properties``() = +[] +let tests3 = + testCase "should not render slide properties" <| fun () -> let presentation = FsReveal.GetPresentationFromMarkdown md2 Formatting.GenerateHTML testTemplate presentation |> normalizeLineBreaks - |> shouldEqual (normalizeLineBreaks expectedOutput) + |> Expect.equal "Normalised slides" (normalizeLineBreaks expectedOutput) \ No newline at end of file diff --git a/tests/FsReveal.Tests/SpeakerNotesSpecs.fs b/tests/FsReveal.Tests/SpeakerNotesSpecs.fs index cd30443b..fff8d279 100644 --- a/tests/FsReveal.Tests/SpeakerNotesSpecs.fs +++ b/tests/FsReveal.Tests/SpeakerNotesSpecs.fs @@ -1,8 +1,8 @@ module FsReveal.SpeakerNotesSpecs open FsReveal -open NUnit.Framework -open FsUnit +open Expecto +open Expecto.Flip let testTemplate ="{slides}" @@ -42,9 +42,10 @@ And some more
""" -[] -let ``can generate sections from markdown``() = +[] +let tests = + testCase "can generate sections from markdown" <| fun () -> let presentation = FsReveal.GetPresentationFromMarkdown md Formatting.GenerateHTML testTemplate presentation |> normalizeLineBreaks - |> shouldEqual (normalizeLineBreaks expectedOutput) + |> Expect.equal "Normalised output for speaker notes in slides" (normalizeLineBreaks expectedOutput) diff --git a/tests/FsReveal.Tests/paket.references b/tests/FsReveal.Tests/paket.references index 8d0dc274..88d581d5 100644 --- a/tests/FsReveal.Tests/paket.references +++ b/tests/FsReveal.Tests/paket.references @@ -2,5 +2,5 @@ FSharp.Formatting FSharp.Core group Test -NUnit -File:FsUnit.fs . \ No newline at end of file +Expecto +Expecto.FsCheck \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..cdf08995 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,137 @@ +const webpack = require('webpack'), + path = require('path'), + HtmlWebpackPlugin = require('html-webpack-plugin'), + OfflinePlugin = require('offline-plugin'); + +const APP = path.resolve(__dirname, 'src/FsReveal'); + +module.exports = { + context: APP, + entry: { + app: './template.js' + }, + output: { + path: "dist/", + publicPath: "/", + filename: '[name].[chunkhash].js', + chunkFilename: '[name].[chunkhash].chunk.js', + }, + resolve: { + modulesDirectories: ['./node_modules'] + }, + devtool: 'source-map', + module: { + loaders: [ + { + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + loader: 'babel', + query: { + presets: ['es2015'], + plugins: ['transform-runtime'] + } + }, + { + test: /\.css$/, + loader: "style!css" + }, + { + test: /\.eot(\?\S*)?$/, + loader: 'url-loader?limit=100000&mimetype=application/vnd.ms-fontobject&name=[name].[hash].eot' + }, + { + test: /\.woff2(\?\S*)?$/, + loader: 'url-loader?limit=100000&mimetype=application/font-woff2&name=[name].[hash].woff2' + }, + { + test: /\.woff(\?\S*)?$/, + loader: 'url-loader?limit=100000&mimetype=application/font-woff&name=[name].[hash].woff' + }, + { + test: /\.ttf(\?\S*)?$/, + loader: 'url-loader?limit=100000&mimetype=application/font-ttf&name=[name].[hash].ttf' + }, + { + test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, + loader: "file-loader" + }, + { + test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, + loader: "url-loader?limit=10000&mimetype=image/svg+xml" + }, + { + test: /\.html$/, + loader: 'html-loader' + }, + { + test: /\.jpg$/, + loader: "file-loader" + }, + { + test: /\.png$/, + loader: "url-loader?mimetype=image/png" + }, + { + test: /index\.html/, + loader: "file-loader?name=[name].[ext]" + } + ] + }, + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'common', + children: true, + minChunks: 2, + async: true, + }), + new webpack.optimize.DedupePlugin(), + // Minify and optimize the index.html + new HtmlWebpackPlugin({ + title: 'Presentation', + template: 'template.html', + minify: { + removeComments: true, + collapseWhitespace: true, + removeRedundantAttributes: true, + useShortDoctype: true, + removeEmptyAttributes: true, + removeStyleLinkTypeAttributes: true, + keepClosingSlash: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true, + }, + inject: true, + }), + // Put it in the end to capture all the HtmlWebpackPlugin's + // assets manipulations and do leak its manipulations to HtmlWebpackPlugin + new OfflinePlugin({ + relativePaths: false, + publicPath: '/', + excludes: [], + caches: { + main: [':rest:'], + // All chunks marked as `additional`, loaded after main section + // and do not prevent SW to install. Change to `optional` if + // do not want them to be preloaded at all (cached only when first loaded) + additional: ['*.chunk.js'], + }, + // Removes warning for about `additional` section usage + safeToUseOptionalCaches: true, + AppCache: false, + }), + + // Always expose NODE_ENV to webpack, in order to use `process.env.NODE_ENV` + // inside your code for any environment checks; UglifyJS will automatically + // drop any unreachable code. + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify(process.env.NODE_ENV), + }, + }), + new webpack.NamedModulesPlugin(), + ], + devServer: { + contentBase: APP + } +}; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..23192662 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2958 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +Base64@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" + +abbrev@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +acorn@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" + +are-we-there-yet@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.0 || ^1.1.13" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +ast-types@0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.2.tgz#2cc19979d15c655108bf565323b8e7ee38751f6b" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +async@^1.3.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autoprefixer@^6.3.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.5.2.tgz#37cc910c5e1139ad341a006d5f6d441a380b742b" + dependencies: + browserslist "~1.4.0" + caniuse-db "^1.0.30000576" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.5" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" + +babel-code-frame@^6.11.0, babel-code-frame@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^2.0.0" + +babel-core, babel-core@^6.18.0: + version "6.18.2" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.18.2.tgz#d8bb14dd6986fa4f3566a26ceda3964fa0e04e5b" + dependencies: + babel-code-frame "^6.16.0" + babel-generator "^6.18.0" + babel-helpers "^6.16.0" + babel-messages "^6.8.0" + babel-register "^6.18.0" + babel-runtime "^6.9.1" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-generator@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.18.0.tgz#e4f104cb3063996d9850556a45aae4a022060a07" + dependencies: + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + +babel-helper-call-delegate@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.18.0.tgz#05b14aafa430884b034097ef29e9f067ea4133bd" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.0.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-define-map@^6.18.0, babel-helper-define-map@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.18.0.tgz#8d6c85dc7fbb4c19be3de40474d18e97c3676ec2" + dependencies: + babel-helper-function-name "^6.18.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-function-name@^6.18.0, babel-helper-function-name@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.18.0.tgz#68ec71aeba1f3e28b2a6f0730190b754a9bf30e6" + dependencies: + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helper-get-function-arity@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.18.0.tgz#a5b19695fd3f9cdfc328398b47dafcd7094f9f24" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-hoist-variables@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.18.0.tgz#a835b5ab8b46d6de9babefae4d98ea41e866b82a" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-optimise-call-expression@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.18.0.tgz#9261d0299ee1a4f08a6dd28b7b7c777348fd8f0f" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-helper-regex@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.18.0.tgz#ae0ebfd77de86cb2f1af258e2cc20b5fe893ecc6" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-helper-replace-supers@^6.18.0, babel-helper-replace-supers@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.18.0.tgz#28ec69877be4144dbd64f4cc3a337e89f29a924e" + dependencies: + babel-helper-optimise-call-expression "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-helpers@^6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.16.0.tgz#1095ec10d99279460553e67eb3eee9973d3867e3" + dependencies: + babel-runtime "^6.0.0" + babel-template "^6.16.0" + +babel-loader: + version "6.2.7" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.2.7.tgz#16fdbf64328030dc5a606827d389c8b92a2a8032" + dependencies: + find-cache-dir "^0.1.1" + loader-utils "^0.2.11" + mkdirp "^0.5.1" + object-assign "^4.0.1" + +babel-messages@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-check-es2015-constants@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.8.0.tgz#dbf024c32ed37bfda8dee1e76da02386a8d26fe7" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-arrow-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.8.0.tgz#5b63afc3181bdc9a8c4d481b5a4f3f7d7fef3d9d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.8.0.tgz#ed95d629c4b5a71ae29682b998f70d9833eb366d" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-block-scoping@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.18.0.tgz#3bfdcfec318d46df22525cdea88f1978813653af" + dependencies: + babel-runtime "^6.9.0" + babel-template "^6.15.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + lodash "^4.2.0" + +babel-plugin-transform-es2015-classes@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.18.0.tgz#ffe7a17321bf83e494dcda0ae3fc72df48ffd1d9" + dependencies: + babel-helper-define-map "^6.18.0" + babel-helper-function-name "^6.18.0" + babel-helper-optimise-call-expression "^6.18.0" + babel-helper-replace-supers "^6.18.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-template "^6.14.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-computed-properties@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.8.0.tgz#f51010fd61b3bd7b6b60a5fdfd307bb7a5279870" + dependencies: + babel-helper-define-map "^6.8.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-destructuring@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.18.0.tgz#a08fb89415ab82058649558bedb7bf8dafa76ba5" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.8.0.tgz#fd8f7f7171fc108cc1c70c3164b9f15a81c25f7d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-for-of@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.18.0.tgz#4c517504db64bf8cfc119a6b8f177211f2028a70" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-function-name@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.9.0.tgz#8c135b17dbd064e5bba56ec511baaee2fca82719" + dependencies: + babel-helper-function-name "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.9.0" + +babel-plugin-transform-es2015-literals@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.8.0.tgz#50aa2e5c7958fc2ab25d74ec117e0cc98f046468" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-modules-amd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.18.0.tgz#49a054cbb762bdf9ae2d8a807076cfade6141e40" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-modules-commonjs@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.18.0.tgz#c15ae5bb11b32a0abdcc98a5837baa4ee8d67bcc" + dependencies: + babel-plugin-transform-strict-mode "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.16.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.18.0.tgz#f09294707163edae4d3b3e8bfacecd01d920b7ad" + dependencies: + babel-helper-hoist-variables "^6.18.0" + babel-runtime "^6.11.6" + babel-template "^6.14.0" + +babel-plugin-transform-es2015-modules-umd@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.18.0.tgz#23351770ece5c1f8e83ed67cb1d7992884491e50" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-runtime "^6.0.0" + babel-template "^6.8.0" + +babel-plugin-transform-es2015-object-super@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.8.0.tgz#1b858740a5a4400887c23dcff6f4d56eea4a24c5" + dependencies: + babel-helper-replace-supers "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-parameters@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.18.0.tgz#9b2cfe238c549f1635ba27fc1daa858be70608b1" + dependencies: + babel-helper-call-delegate "^6.18.0" + babel-helper-get-function-arity "^6.18.0" + babel-runtime "^6.9.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-shorthand-properties@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.18.0.tgz#e2ede3b7df47bf980151926534d1dd0cbea58f43" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-plugin-transform-es2015-spread@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.8.0.tgz#0217f737e3b821fa5a669f187c6ed59205f05e9c" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-sticky-regex@^6.3.13: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.8.0.tgz#e73d300a440a35d5c64f5c2a344dc236e3df47be" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + babel-types "^6.8.0" + +babel-plugin-transform-es2015-template-literals@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.8.0.tgz#86eb876d0a2c635da4ec048b4f7de9dfc897e66b" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.18.0.tgz#0b14c48629c90ff47a0650077f6aa699bee35798" + dependencies: + babel-runtime "^6.0.0" + +babel-plugin-transform-es2015-unicode-regex@^6.3.13: + version "6.11.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.11.0.tgz#6298ceabaad88d50a3f4f392d8de997260f6ef2c" + dependencies: + babel-helper-regex "^6.8.0" + babel-runtime "^6.0.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-regenerator@^6.16.0: + version "6.16.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.16.1.tgz#a75de6b048a14154aae14b0122756c5bed392f59" + dependencies: + babel-runtime "^6.9.0" + babel-types "^6.16.0" + private "~0.1.5" + +babel-plugin-transform-runtime: + version "6.15.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.15.0.tgz#3d75b4d949ad81af157570273846fb59aeb0d57c" + dependencies: + babel-runtime "^6.9.0" + +babel-plugin-transform-strict-mode@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.18.0.tgz#df7cf2991fe046f44163dcd110d5ca43bc652b9d" + dependencies: + babel-runtime "^6.0.0" + babel-types "^6.18.0" + +babel-preset-es2015: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.18.0.tgz#b8c70df84ec948c43dcf2bf770e988eb7da88312" + dependencies: + babel-plugin-check-es2015-constants "^6.3.13" + babel-plugin-transform-es2015-arrow-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoped-functions "^6.3.13" + babel-plugin-transform-es2015-block-scoping "^6.18.0" + babel-plugin-transform-es2015-classes "^6.18.0" + babel-plugin-transform-es2015-computed-properties "^6.3.13" + babel-plugin-transform-es2015-destructuring "^6.18.0" + babel-plugin-transform-es2015-duplicate-keys "^6.6.0" + babel-plugin-transform-es2015-for-of "^6.18.0" + babel-plugin-transform-es2015-function-name "^6.9.0" + babel-plugin-transform-es2015-literals "^6.3.13" + babel-plugin-transform-es2015-modules-amd "^6.18.0" + babel-plugin-transform-es2015-modules-commonjs "^6.18.0" + babel-plugin-transform-es2015-modules-systemjs "^6.18.0" + babel-plugin-transform-es2015-modules-umd "^6.18.0" + babel-plugin-transform-es2015-object-super "^6.3.13" + babel-plugin-transform-es2015-parameters "^6.18.0" + babel-plugin-transform-es2015-shorthand-properties "^6.18.0" + babel-plugin-transform-es2015-spread "^6.3.13" + babel-plugin-transform-es2015-sticky-regex "^6.3.13" + babel-plugin-transform-es2015-template-literals "^6.6.0" + babel-plugin-transform-es2015-typeof-symbol "^6.18.0" + babel-plugin-transform-es2015-unicode-regex "^6.3.13" + babel-plugin-transform-regenerator "^6.16.0" + +babel-register@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.18.0.tgz#892e2e03865078dd90ad2c715111ec4449b32a68" + dependencies: + babel-core "^6.18.0" + babel-runtime "^6.11.6" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime, babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.9.0, babel-runtime@^6.9.1: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.9.5" + +babel-template@^6.14.0, babel-template@^6.15.0, babel-template@^6.16.0, babel-template@^6.8.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca" + dependencies: + babel-runtime "^6.9.0" + babel-traverse "^6.16.0" + babel-types "^6.16.0" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.16.0, babel-traverse@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.18.0.tgz#5aeaa980baed2a07c8c47329cd90c3b90c80f05e" + dependencies: + babel-code-frame "^6.16.0" + babel-messages "^6.8.0" + babel-runtime "^6.9.0" + babel-types "^6.18.0" + babylon "^6.11.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.8.0, babel-types@^6.9.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.18.0.tgz#1f7d5a73474c59eb9151b2417bbff4e4fce7c3f8" + dependencies: + babel-runtime "^6.9.1" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.11.0: + version "6.13.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.13.1.tgz#adca350e088f0467647157652bafead6ddb8dfdb" + +balanced-match@^0.4.1, balanced-match@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +balanced-match@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a" + +base64-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.4.6: + version "3.4.6" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +brace-expansion@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browserify-zlib@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049" + dependencies: + caniuse-db "^1.0.30000539" + +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer@^4.9.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000576: + version "1.0.30000578" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000578.tgz#fc4106bda3ca19df4bd9f35e491063f3d498ff31" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +change-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.0.tgz#6c9c8e35f8790870a82b6b0745be8c3cbef9b081" + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.2.0" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +chokidar@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +clap@^1.0.9: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.1.tgz#a8a93e0bfb7581ac199c4f001a5525a724ce696d" + dependencies: + chalk "^1.1.3" + +clean-css@3.4.x: + version "3.4.20" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.20.tgz#c0d8963b5448e030f0bcd3ddd0dac4dfe3dea501" + dependencies: + commander "2.8.x" + source-map "0.4.x" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +coa@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3" + dependencies: + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.3.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.6.0.tgz#7592755faf53938a05b1ea8e5374cab77d6dd190" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + +color-string@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" + dependencies: + color-name "^1.0.0" + +color@^0.11.0: + version "0.11.4" + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" + dependencies: + clone "^1.0.2" + color-convert "^1.3.0" + color-string "^0.3.0" + +colormin@^1.0.5: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" + dependencies: + color "^0.11.0" + css-color-names "0.0.4" + has "^1.0.1" + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@2.8.x: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@2.9.x, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +constants-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-0.0.1.tgz#92577db527ba6c4cf0a4568d84bc031f441e21f2" + +convert-source-map@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67" + +core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@~3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.2.8.tgz#b9b11dbe6d9651dd882a01e6cc467df718ecf189" + dependencies: + pbkdf2-compat "2.0.1" + ripemd160 "0.2.0" + sha.js "2.2.6" + +css-color-names@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + +css-loader: + version "0.25.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.25.0.tgz#c3febc8ce28f4c83576b6b13707f47f90c390223" + dependencies: + babel-code-frame "^6.11.0" + css-selector-tokenizer "^0.6.0" + cssnano ">=2.6.1 <4" + loader-utils "~0.2.2" + lodash.camelcase "^3.0.1" + object-assign "^4.0.1" + postcss "^5.0.6" + postcss-modules-extract-imports "^1.0.0" + postcss-modules-local-by-default "^1.0.1" + postcss-modules-scope "^1.0.0" + postcss-modules-values "^1.1.0" + source-list-map "^0.1.4" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +"cssnano@>=2.6.1 <4": + version "3.8.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.8.0.tgz#bb90ac5292f42b679d9a05f6da0e9697556bb80d" + dependencies: + autoprefixer "^6.3.1" + decamelize "^1.1.2" + defined "^1.0.0" + has "^1.0.1" + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-calc "^5.2.0" + postcss-colormin "^2.1.8" + postcss-convert-values "^2.3.4" + postcss-discard-comments "^2.0.4" + postcss-discard-duplicates "^2.0.1" + postcss-discard-empty "^2.0.1" + postcss-discard-overridden "^0.1.1" + postcss-discard-unused "^2.2.1" + postcss-filter-plugins "^2.0.0" + postcss-merge-idents "^2.1.5" + postcss-merge-longhand "^2.0.1" + postcss-merge-rules "^2.0.3" + postcss-minify-font-values "^1.0.2" + postcss-minify-gradients "^1.0.1" + postcss-minify-params "^1.0.4" + postcss-minify-selectors "^2.0.4" + postcss-normalize-charset "^1.1.0" + postcss-normalize-url "^3.0.7" + postcss-ordered-values "^2.1.0" + postcss-reduce-idents "^2.2.2" + postcss-reduce-initial "^1.0.0" + postcss-reduce-transforms "^1.0.3" + postcss-svgo "^2.1.1" + postcss-unique-selectors "^2.0.2" + postcss-value-parser "^3.2.3" + postcss-zindex "^2.0.1" + +csso@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.2.1.tgz#51fbb5347e50e81e6ed51668a48490ae6fe2afe2" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +dashdash@^1.12.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.0.tgz#29e486c5418bf0f356034a993d51686a33e84141" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@^2.1.1, debug@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.0.tgz#3912dc55d7167fc3af17d2b85c13f93deaedaa43" + dependencies: + ms "0.7.2" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.0.0, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@^0.4.0, deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.0.tgz#4b43dd0d7403c34cb645424add397e80bfe85ca6" + dependencies: + no-case "^2.2.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ejs@^2.3.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.2.tgz#21444ba09386f0c65b6eafb96a3d51bcb3be80d1" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +enhanced-resolve@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +es6-promise@^3.0.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +es6-templates@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + dependencies: + recast "~0.11.12" + through "~2.3.6" + +escape-string-regexp@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.1.tgz#02dbcc5ac3ece81070377f99158ec742ab5dda06" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +exports-loader: + version "0.6.3" + resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.3.tgz#57dc78917f709b96f247fa91e69b554c855013c8" + dependencies: + loader-utils "0.2.x" + source-map "0.1.x" + +expose-loader: + version "0.7.1" + resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-0.7.1.tgz#411ee89443aa682f8ea9d9111accf41bfd7e94d9" + +extend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +file-loader: + version "0.9.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42" + dependencies: + loader-utils "~0.2.5" + +filename-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" + +for-own@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" + dependencies: + for-in "^0.1.5" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.0.15" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.15.tgz#fa63f590f3c2ad91275e4972a6cea545fb0aae44" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +gauge@~2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-color "^0.1.7" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +getpass@^0.1.1: + version "0.1.6" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.12.0.tgz#992ce90828c3a55fa8f16fada177adb64664cf9d" + +graceful-fs@^4.1.2: + version "4.1.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.10.tgz#f2d720c22092f743228775c75e3612632501f131" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-color@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7" + +header-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.0.tgz#d9e335909505d56051ec16a0106821889e910781" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + +highlight.js: + version "9.8.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.8.0.tgz#38eeef40cd45eaddbec8c9e5238fb7a783a3b685" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +html-comment-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +html-loader: + version "0.4.4" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.4.4.tgz#f2b5b9acd5e035ff3ab5fd369c13c97a7bb014da" + dependencies: + es6-templates "^0.2.2" + fastparse "^1.1.1" + html-minifier "^3.0.1" + loader-utils "^0.2.15" + object-assign "^4.1.0" + +html-minifier@^3.0.1, html-minifier@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.1.1.tgz#73bd0600fc9d68f536b13a788360245b6d76eb9c" + dependencies: + change-case "3.0.x" + clean-css "3.4.x" + commander "2.9.x" + he "1.1.x" + ncname "1.0.x" + relateurl "0.2.x" + uglify-js "2.7.x" + +html-webpack-plugin: + version "2.24.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.24.1.tgz#7f45fc678f66eac2d433f22336b4399da023b57e" + dependencies: + bluebird "^3.4.6" + html-minifier "^3.1.0" + loader-utils "^0.2.16" + lodash "^4.16.4" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-browserify@^1.3.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20" + dependencies: + Base64 "~0.2.0" + inherits "~2.0.1" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.0.tgz#b3ffdfe734b2a3d4a9efd58e8654c91fce86eafd" + +icss-replace-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +imports-loader: + version "0.6.5" + resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.6.5.tgz#ae74653031d59e37b3c2fb2544ac61aeae3530a6" + dependencies: + loader-utils "0.2.x" + source-map "0.1.x" + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +interpret@^0.6.4: + version "0.6.6" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" + +invariant@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54" + dependencies: + loose-envify "^1.0.0" + +is-absolute-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.0.0.tgz#9c4b20b0e5c0cbef9a479a367ede6f991679f359" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.0.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + dependencies: + lower-case "^1.1.0" + +is-my-json-valid@^2.12.4: + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-svg@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" + dependencies: + html-comment-regex "^1.1.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + dependencies: + upper-case "^1.1.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" + +js-yaml@~3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2" + +jsonpointer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5" + +jsprim@^1.2.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" + dependencies: + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +kind-of@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" + dependencies: + is-buffer "^1.0.2" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +loader-utils@0.2.x, loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5: + version "0.2.16" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +lodash._createcompounder@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075" + dependencies: + lodash.deburr "^3.0.0" + lodash.words "^3.0.0" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.camelcase@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298" + dependencies: + lodash._createcompounder "^3.0.0" + +lodash.deburr@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5" + dependencies: + lodash._root "^3.0.0" + +lodash.indexof@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/lodash.indexof/-/lodash.indexof-4.0.5.tgz#53714adc2cddd6ed87638f893aa9b6c24e31ef3c" + +lodash.words@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3" + dependencies: + lodash._root "^3.0.0" + +lodash@^4.16.4, lodash@^4.2.0: + version "4.16.6" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.0.tgz#6b26248c42f6d4fa4b0d8542f78edfcde35642a8" + dependencies: + js-tokens "^2.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb" + +macaddress@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +math-expression-evaluator@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.14.tgz#39511771ed9602405fba9affff17eb4d2a3843ab" + dependencies: + lodash.indexof "^4.0.5" + +mathjax: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-2.7.0.tgz#2c12cac72a7be2b8190f6b3344ca93801a0e5dff" + +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + +memory-fs@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +mime-db@~1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.12" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729" + dependencies: + mime-db "~1.24.0" + +mime@1.2.x: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +minimatch@^3.0.0, minimatch@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +nan@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +no-case@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.0.tgz#ca2825ccb76b18e6f79d573dcfbf1eace33dd164" + dependencies: + lower-case "^1.1.1" + +node-libs-browser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.6.0.tgz#244806d44d319e048bc8607b5cc4eaf9a29d2e3c" + dependencies: + assert "^1.1.1" + browserify-zlib "~0.1.4" + buffer "^4.9.0" + console-browserify "^1.1.0" + constants-browserify "0.0.1" + crypto-browserify "~3.2.6" + domain-browser "^1.1.1" + events "^1.0.0" + http-browserify "^1.3.2" + https-browserify "0.0.0" + os-browserify "~0.1.2" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "~0.2.0" + readable-stream "^1.1.13" + stream-browserify "^1.0.0" + string_decoder "~0.10.25" + timers-browserify "^1.0.1" + tty-browserify "0.0.0" + url "~0.10.1" + util "~0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.29: + version "0.6.31" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017" + dependencies: + mkdirp "~0.5.1" + nopt "~3.0.6" + npmlog "^4.0.0" + rc "~1.1.6" + request "^2.75.0" + rimraf "~2.5.4" + semver "~5.3.0" + tar "~2.2.1" + tar-pack "~3.3.0" + +node-uuid@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" + +nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@^1.4.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.8.0.tgz#a9550b079aa3523c85d78df24eef1959fce359ab" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npmlog@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.0.tgz#e094503961c70c1774eb76692080e8d578a9f88f" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.6.0" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +offline-plugin: + version "3.4.2" + resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-3.4.2.tgz#ddbb9eec3e8fd052ec51e03c56afdc33b0a331a2" + dependencies: + deep-extend "^0.4.0" + ejs "^2.3.4" + es6-promise "^3.0.2" + loader-utils "0.2.x" + minimatch "^3.0.2" + +once@^1.3.0, once@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +os-browserify@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.1.2.tgz#49ca0293e0b19590a5f5de10c7f265a617d8fe54" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +param-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a" + dependencies: + no-case "^2.2.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +pascal-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.0.tgz#39c248bde5a8dc02d5160696bdb01e044d016ee1" + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.0.tgz#5ac491de642936e5dfe0e18d16c461b8be8cf073" + dependencies: + no-case "^2.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +pbkdf2-compat@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +postcss-calc@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" + dependencies: + postcss "^5.0.2" + postcss-message-helpers "^2.0.0" + reduce-css-calc "^1.2.6" + +postcss-colormin@^2.1.8: + version "2.2.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.1.tgz#dc5421b6ae6f779ef6bfd47352b94abe59d0316b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.4.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.4.1.tgz#45dce4d4e33b7d967b97a4d937f270ea98d2fe7a" + dependencies: + postcss "^5.0.11" + postcss-value-parser "^3.1.2" + +postcss-discard-comments@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" + dependencies: + postcss "^5.0.14" + +postcss-discard-duplicates@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.1.tgz#5fae3f1a71df3e19cffb37309d1a7dba56c4589c" + dependencies: + postcss "^5.0.4" + +postcss-discard-empty@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" + dependencies: + postcss "^5.0.14" + +postcss-discard-overridden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" + dependencies: + postcss "^5.0.16" + +postcss-discard-unused@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.2.tgz#5d72f7d05d11de0a9589e001958067ccae1b4931" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c" + dependencies: + postcss "^5.0.4" + uniqid "^4.0.0" + +postcss-merge-idents@^2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" + dependencies: + has "^1.0.1" + postcss "^5.0.10" + postcss-value-parser "^3.1.1" + +postcss-merge-longhand@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz#ff59b5dec6d586ce2cea183138f55c5876fa9cdc" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.0.10" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.0.10.tgz#54b360be804e7e69a5c7222635247b92a3569e9b" + dependencies: + postcss "^5.0.4" + vendors "^1.0.0" + +postcss-message-helpers@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" + +postcss-minify-font-values@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-minify-gradients@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" + dependencies: + postcss "^5.0.12" + postcss-value-parser "^3.3.0" + +postcss-minify-params@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.0.5.tgz#82d602643b8616a61fb3634d7ede0289836d67f9" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.2" + postcss-value-parser "^3.0.2" + uniqs "^2.0.0" + +postcss-minify-selectors@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.0.6.tgz#044b1a85ee2f909fc9a1c540f6f74b0e7613f119" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +postcss-modules-extract-imports@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341" + dependencies: + postcss "^5.0.4" + +postcss-modules-local-by-default@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-scope@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29" + dependencies: + css-selector-tokenizer "^0.6.0" + postcss "^5.0.4" + +postcss-modules-values@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1" + dependencies: + icss-replace-symbols "^1.0.2" + postcss "^5.0.14" + +postcss-normalize-charset@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" + dependencies: + postcss "^5.0.5" + +postcss-normalize-url@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.7.tgz#6bd90d0a4bc5a1df22c26ea65c53257dc3829f4e" + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^1.4.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + +postcss-ordered-values@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.2.tgz#be8b511741fab2dac8e614a2302e9d10267b0771" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.3.1.tgz#024e8e219f52773313408573db9645ba62d2d2fe" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.0.tgz#8f739b938289ef2e48936d7101783e4741ca9bbb" + dependencies: + postcss "^5.0.4" + +postcss-reduce-transforms@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" + dependencies: + has "^1.0.1" + postcss "^5.0.8" + postcss-value-parser "^3.0.1" + +postcss-selector-parser@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.1.tgz#fdbf696103b12b0a64060e5610507f410491f7c8" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.5" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.5.tgz#46fc0363f01bab6a36a9abb01c229fcc45363094" + dependencies: + is-svg "^2.0.0" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + svgo "^0.7.0" + +postcss-unique-selectors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" + dependencies: + alphanum-sort "^1.0.1" + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss-zindex@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.1.1.tgz#ea3fbe656c9738aa8729e2ee96ec2a46089b720f" + dependencies: + postcss "^5.0.4" + uniqs "^2.0.0" + +postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.5.tgz#ec428c27dffc7fac65961340a9b022fa4af5f056" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.1.2" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-error@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23" + dependencies: + renderkid "~2.0.0" + utila "~0.4" + +private@^0.1.6, private@~0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0, process@~0.11.0: + version "0.11.9" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +qs@~6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" + +query-string@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822" + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@~0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +raw-loader, raw-loader@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + +rc@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~1.0.4" + +readable-stream@1.0: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^1.0.27-1, readable-stream@^1.1.13: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@~2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@~0.11.12: + version "0.11.17" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.17.tgz#67e829df49ef8ea822381cc516d305411e60bad8" + dependencies: + ast-types "0.9.2" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +reduce-css-calc@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" + dependencies: + balanced-match "^0.4.2" + math-expression-evaluator "^1.2.14" + reduce-function-call "^1.0.1" + +reduce-function-call@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.1.tgz#fa02e126e695824263cab91d3a5b0fdc1dd27a9a" + dependencies: + balanced-match "~0.1.0" + +regenerate@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.1.tgz#0300203a5d2fdcf89116dce84275d011f5903f33" + +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +renderkid@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@^2.75.0: + version "2.78.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + node-uuid "~1.4.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" + dependencies: + glob "^7.0.5" + +ripemd160@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce" + +sax@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + +script-loader: + version "0.7.0" + resolved "https://registry.yarnpkg.com/script-loader/-/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec" + dependencies: + raw-loader "~0.5.1" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +sentence-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.0.tgz#d592fbed457fd1a59e3af0ee17e99f6fd70d7efd" + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +sha.js@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba" + +signal-exit@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + dependencies: + no-case "^2.2.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^0.1.4, source-list-map@~0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.6.tgz#e1e6f94f0b40c4d28dcf8f5b8766e0e45636877f" + +source-map-support@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb" + dependencies: + source-map "^0.5.3" + +source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@0.4.x, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stream-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-1.0.0.tgz#bf9b4abfb42b274d751479e44e0ff2656b6f1193" + dependencies: + inherits "~2.0.1" + readable-stream "^1.0.27-1" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string_decoder@~0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-json-comments@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + +style-loader: + version "0.13.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9" + dependencies: + loader-utils "^0.2.7" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + +svgo@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.1.tgz#287320fed972cb097e72c2bb1685f96fe08f8034" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.2.1" + js-yaml "~3.6.1" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +tapable@^0.1.8, tapable@~0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + +tar-pack@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" + dependencies: + debug "~2.2.0" + fstream "~1.0.10" + fstream-ignore "~1.0.5" + once "~1.3.3" + readable-stream "~2.1.4" + rimraf "~2.5.1" + tar "~2.2.1" + uid-number "~0.0.6" + +tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +through@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timers-browserify@^1.0.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" + dependencies: + process "~0.11.0" + +title-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.0.tgz#c68ccb4232079ded64f94b91b4941ade91391979" + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +to-fast-properties@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" + +toposort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.0.tgz#b66cf385a1a8a8e68e45b8259e7f55875e8b06ef" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d" + +uglify-js@2.7.x, uglify-js@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@~0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqid@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.0.tgz#33d9679f65022f48988a03fd24e7dcaf8f109eca" + dependencies: + macaddress "^0.2.8" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-loader: + version "0.5.7" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.7.tgz#67e8779759f8000da74994906680c943a9b0925d" + dependencies: + loader-utils "0.2.x" + mime "1.2.x" + +url@~0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@~0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +vendors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +watchpack@^0.2.1: + version "0.2.9" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b" + dependencies: + async "^0.9.0" + chokidar "^1.0.0" + graceful-fs "^4.1.2" + +webpack: + version "1.13.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.13.3.tgz#e79c46fe5a37c5ca70084ba0894c595cdcb42815" + dependencies: + acorn "^3.0.0" + async "^1.3.0" + clone "^1.0.2" + enhanced-resolve "~0.9.0" + interpret "^0.6.4" + loader-utils "^0.2.11" + memory-fs "~0.3.0" + mkdirp "~0.5.0" + node-libs-browser "^0.6.0" + optimist "~0.6.0" + supports-color "^3.1.0" + tapable "~0.1.8" + uglify-js "~2.7.3" + watchpack "^0.2.1" + webpack-core "~0.6.0" + +webpack-core@~0.6.0: + version "0.6.8" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.8.tgz#edf9135de00a6a3c26dd0f14b208af0aa4af8d0a" + dependencies: + source-list-map "~0.1.0" + source-map "~0.4.1" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"