From 110ddab670cbf477488cceeea2842c980942d7b8 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 00:32:04 +0200 Subject: [PATCH 01/44] Add deno2 prototype from external repo. --- deno2/.gclient | 38 + deno2/.gitignore | 8 + deno2/.gn | 61 + deno2/BUILD.gn | 134 ++ deno2/README.md | 68 + deno2/build | 1 + deno2/deno.cc | 364 ++++ deno2/deno.h | 55 + deno2/deno_test.cc | 15 + deno2/js/main.ts | 7 + deno2/js/package.json | 6 + deno2/js/run_node.py | 14 + deno2/js/yarn.lock | 3535 ++++++++++++++++++++++++++++++++++ deno2/main.cc | 33 + deno2/msg.proto | 102 + deno2/snapshot_creator.cc | 145 ++ deno2/testing | 1 + deno2/third_party/googletest | 1 + deno2/third_party/jinja2 | 1 + deno2/third_party/llvm-build | 1 + deno2/third_party/markupsafe | 1 + deno2/tools/build.py | 67 + deno2/tools/format.sh | 6 + deno2/tools/lint.sh | 4 + 24 files changed, 4668 insertions(+) create mode 100644 deno2/.gclient create mode 100644 deno2/.gitignore create mode 100644 deno2/.gn create mode 100644 deno2/BUILD.gn create mode 100644 deno2/README.md create mode 120000 deno2/build create mode 100644 deno2/deno.cc create mode 100644 deno2/deno.h create mode 100644 deno2/deno_test.cc create mode 100644 deno2/js/main.ts create mode 100644 deno2/js/package.json create mode 100755 deno2/js/run_node.py create mode 100644 deno2/js/yarn.lock create mode 100644 deno2/main.cc create mode 100644 deno2/msg.proto create mode 100644 deno2/snapshot_creator.cc create mode 120000 deno2/testing create mode 120000 deno2/third_party/googletest create mode 120000 deno2/third_party/jinja2 create mode 120000 deno2/third_party/llvm-build create mode 120000 deno2/third_party/markupsafe create mode 100755 deno2/tools/build.py create mode 100755 deno2/tools/format.sh create mode 100755 deno2/tools/lint.sh diff --git a/deno2/.gclient b/deno2/.gclient new file mode 100644 index 0000000000..0e138e7a5f --- /dev/null +++ b/deno2/.gclient @@ -0,0 +1,38 @@ +solutions = [{ + 'url': 'https://chromium.googlesource.com/v8/v8.git', + 'custom_vars': { + 'build_for_node': True + }, + 'name': 'v8', + 'deps_file': 'DEPS', + 'custom_deps': { + 'v8/third_party/catapult': None, + 'v8/third_party/colorama/src': None, + 'v8/testing/gmock': None, + 'v8/tools/swarming_client': None, + 'v8/third_party/instrumented_libraries': None, + 'v8/tools/gyp': None, + 'v8/third_party/android_tools': None, + 'v8/test/wasm-js': None, + 'v8/test/benchmarks/data': None, + 'v8/test/mozilla/data': None, + 'v8/third_party/icu': None, + 'v8/test/test262/data': None, + 'v8/test/test262/harness': None, + 'v8/tools/luci-go': None + } +}, { + 'url': 'https://github.com/ry/protobuf_chromium.git', + 'name': 'third_party/protobuf', + 'deps_file': 'DEPS' +}, { + 'url': + 'https://chromium.googlesource.com/chromium/src/tools/protoc_wrapper', + 'name': + 'tools/protoc_wrapper' +}, { + 'url': + 'https://chromium.googlesource.com/chromium/src/third_party/zlib', + 'name': + 'third_party/zlib' +}] diff --git a/deno2/.gitignore b/deno2/.gitignore new file mode 100644 index 0000000000..73d348f528 --- /dev/null +++ b/deno2/.gitignore @@ -0,0 +1,8 @@ +out/ +js/.cache/ +js/node_modules/ +v8/ +tools/protoc_wrapper/ +third_party/protobuf/ +third_party/zlib/ +.gclient_entries diff --git a/deno2/.gn b/deno2/.gn new file mode 100644 index 0000000000..4360b42275 --- /dev/null +++ b/deno2/.gn @@ -0,0 +1,61 @@ +# This file is used by the GN meta build system to find the root of the source +# tree and to set startup options. For documentation on the values set in this +# file, run "gn help dotfile" at the command line. + +import("//v8/build/dotfile_settings.gni") + +# The location of the build configuration file. +buildconfig = "//v8/build/config/BUILDCONFIG.gn" + +# The secondary source root is a parallel directory tree where +# GN build files are placed when they can not be placed directly +# in the source tree, e.g. for third party source trees. +secondary_source = "//v8/" + +# These are the targets to check headers for by default. The files in targets +# matching these patterns (see "gn help label_pattern" for format) will have +# their includes checked for proper dependencies when you run either +# "gn check" or "gn gen --check". +check_targets = [] + +# These are the list of GN files that run exec_script. This whitelist exists +# to force additional review for new uses of exec_script, which is strongly +# discouraged except for gypi_to_gn calls. +exec_script_whitelist = build_dotfile_settings.exec_script_whitelist + [] + +default_args = { + # Default to release builds for this project. + is_component_build = false + is_debug = false + libcpp_is_static = false + symbol_level = 1 + treat_warnings_as_errors = false + use_custom_libcxx = false + use_sysroot = false + v8_deprecation_warnings = false + + #v8_embedder_string = "" + v8_enable_gdbjit = false + v8_enable_i18n_support = false + v8_enable_test_features = false + v8_experimental_extra_library_files = [] + v8_extra_library_files = [] + v8_imminent_deprecation_warnings = false + v8_monolithic = false + v8_static_library = false + v8_target_cpu = "x64" + v8_untrusted_code_mitigations = false + + # This tells V8 to write out/Default/gen/v8/snapshot.bin + # Which we can use to build our own snapshot. + v8_use_external_startup_data = true + v8_use_snapshot = true + + # Snapshot the dist/main.js bundle into V8. + # Is ".gn" really the most appropriate place to specify this important + # value? This is how they do it in Chrome. + # https://cs.chromium.org/chromium/src/.gn?l=37&rcl=f1c8c3cf8bd4a63da6433ee67e2ff5ecbbdb4316 + + # "$target_gen_dir/main.js" + #] +} diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn new file mode 100644 index 0000000000..777a299025 --- /dev/null +++ b/deno2/BUILD.gn @@ -0,0 +1,134 @@ +import("//third_party/protobuf/proto_library.gni") +import("//v8/gni/v8.gni") +import("//v8/snapshot_toolchain.gni") + +proto_library("msg_proto") { + sources = [ + "msg.proto", + ] +} + +action("run_parcel") { + sources = [ + "js/main.ts", + ] + outputs = [ + "$target_gen_dir/main.js", + "$target_gen_dir/main.map", + ] + + # Our script imports this Python file so we want to rebuild if it changes. + # inputs = [ "helper_library.py" ] + + # Note that we have to manually pass the sources to our script if the + # script needs them as inputs. + script = "js/run_node.py" + root = root_build_dir + "/../../js" + args = [ + "./node_modules/.bin/parcel", + "build", + "--log-level=1", + "--no-minify", + "--out-dir=" + rebase_path(target_gen_dir, root), + ] + rebase_path(sources, root) +} + +# Template to generate different V8 snapshots based on different runtime flags. +# Can be invoked with run_mksnapshot(). The target will resolve to +# run_mksnapshot_. If is "default", no file suffixes will be used. +# Otherwise files are suffixed, e.g. embedded_.cc and +# snapshot_blob_.bin. +# +# The template exposes the variables: +# args: additional flags for mksnapshots +# embedded_suffix: a camel case suffix for method names in the embedded +# snapshot. +template("create_snapshot") { + name = target_name + suffix = "_$name" + action("create_snapshot_" + name) { + visibility = [ ":*" ] # Only targets in this file can depend on this. + deps = [ ":snapshot_creator" ] + invoker.deps + script = "v8/tools/run.py" + data = [] + exe = rebase_path(get_label_info(":snapshot_creator", "root_out_dir") + + "/snapshot_creator") + natives_in_bin = "$root_out_dir/natives_blob.bin" + snapshot_in_bin = "$root_out_dir/snapshot_blob.bin" + natives_out_cc = "$target_gen_dir/natives${suffix}.cc" + snapshot_out_cc = "$target_gen_dir/snapshot${suffix}.cc" + sources = [ + invoker.js, + ] + outputs = [ + natives_out_cc, + snapshot_out_cc, + ] + args = [ + exe, + rebase_path(invoker.js, root_build_dir), + rebase_path(natives_in_bin, root_build_dir), + rebase_path(snapshot_in_bin, root_build_dir), + rebase_path(natives_out_cc, root_build_dir), + rebase_path(snapshot_out_cc, root_build_dir), + ] + data = [ + invoker.js, + ] + } +} + +# Generates $target_gen_dir/snapshot_bundle.cc +create_snapshot("deno") { + js = "$target_gen_dir/main.js" + deps = [ + ":run_parcel", + ] +} + +v8_executable("snapshot_creator") { + sources = [ + "deno.cc", + "deno.h", + "snapshot_creator.cc", + ] + configs = [ "v8:libplatform_config" ] + deps = [ + "v8:v8", + "v8:v8_libbase", + "v8:v8_libplatform", + "v8:v8_libsampler", + "//build/config:exe_and_shlib_deps", + "//build/win:default_exe_manifest", + ] +} + +v8_executable("deno") { + sources = [ + "deno.cc", + "deno.h", + "main.cc", + ] + include_dirs = [ target_gen_dir ] + configs = [ "v8:libplatform_config" ] + deps = [ + ":create_snapshot_deno", + ":msg_proto", + "v8:v8", + "v8:v8_libbase", + "v8:v8_libplatform", + "v8:v8_libsampler", + "//build/config:exe_and_shlib_deps", + "//build/win:default_exe_manifest", + ] +} + +executable("deno_test") { + testonly = true + sources = [ + "deno_test.cc", + ] + deps = [ + "//testing/gtest:gtest", + ] +} diff --git a/deno2/README.md b/deno2/README.md new file mode 100644 index 0000000000..4e4eb7fe7f --- /dev/null +++ b/deno2/README.md @@ -0,0 +1,68 @@ +# Deno Prototype 2 + +## Status + +This code is a rewrite of the unprivileged parts of Deno. It will soon become +the root of the project. + +There are several goals: + +* Use the gn build system for fast builds, sane configuration, and easy + linking into Chrome. + +* Use V8 snapshots to improve startup time. + +* Remove Golang. Although it has been working nicely, I am concerned the + double GC will become a problem sometime down the road. + +* Distribute a C++ library called libdeno, containing the snapshotted + typescript runtime. + +* Test the message passing and other functionality at that layer before + involving higher level languages. + +The contenders for building the unprivileged part of Deno are Rust and C++. +Thanks to Chrome and gn, using C++ to link into high level libraries is not +untenable. However, there's a lot of interest in Rust in the JS community and +it seems like a reasonable choice. TBD. + +There are many people exploring the project, so care will be taken to keep the +original code functional while this is developed. However, once it's ready this +the code in this deno2/ directory will be moved to the root. + + +## Prerequisites + +Get Depot Tools and make sure it's in your path. +http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up + +For linux you need these prereqs: + + sudo apt-get install libgtk-3-dev pkg-config ccache + + +## Build + +First install the javascript deps. + + cd js; yarn install + +TODO(ry) Remove the above step by a deps submodule. + +Wrapper around the gclient/gn/ninja for end users. Try this first: + + ./tools/build.py --use_ccache --debug + +If that doesn't work, or you need more control, try calling gn manually: + + gn gen out/Debug --args='cc_wrapper="ccache" is_debug=true ' + +Then build with ninja: + + ninja -C out/Debug/ deno + + +Other useful commands: + + gn args out/Debug/ --list # List build args + gn args out/Debug/ # Modify args in $EDITOR diff --git a/deno2/build b/deno2/build new file mode 120000 index 0000000000..3a238b5086 --- /dev/null +++ b/deno2/build @@ -0,0 +1 @@ +v8/build \ No newline at end of file diff --git a/deno2/deno.cc b/deno2/deno.cc new file mode 100644 index 0000000000..db7abb1165 --- /dev/null +++ b/deno2/deno.cc @@ -0,0 +1,364 @@ +/* +Copyright 2018 Ryan Dahl . All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +*/ +#include +#include +#include +#include +#include + +#include "v8/include/libplatform/libplatform.h" +#include "v8/include/v8.h" + +#include "./deno.h" + +#define CHECK(x) assert(x) // TODO(ry) use V8's CHECK. + +// Extracts a C string from a v8::V8 Utf8Value. +const char* ToCString(const v8::String::Utf8Value& value) { + return *value ? *value : ""; +} + +static inline v8::Local v8_str(const char* x) { + return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), x, + v8::NewStringType::kNormal) + .ToLocalChecked(); +} + +// Exits the process. +void HandleException(Deno* d, v8::Local exception) { + v8::HandleScope handle_scope(d->isolate); + auto context = d->context.Get(d->isolate); + v8::Context::Scope context_scope(context); + + auto message = v8::Exception::CreateMessage(d->isolate, exception); + auto onerrorStr = v8::String::NewFromUtf8(d->isolate, "onerror"); + auto onerror = context->Global()->Get(onerrorStr); + + if (onerror->IsFunction()) { + auto func = v8::Local::Cast(onerror); + v8::Local args[5]; + auto origin = message->GetScriptOrigin(); + args[0] = exception->ToString(); + args[1] = message->GetScriptResourceName(); + args[2] = origin.ResourceLineOffset(); + args[3] = origin.ResourceColumnOffset(); + args[4] = exception; + func->Call(context->Global(), 5, args); + /* message, source, lineno, colno, error */ + } else { + v8::String::Utf8Value exceptionStr(d->isolate, exception); + printf("Unhandled Exception %s\n", ToCString(exceptionStr)); + message->PrintCurrentStackTrace(d->isolate, stdout); + } + + exit(1); +} + +/* +bool AbortOnUncaughtExceptionCallback(v8::Isolate* isolate) { + return true; +} + +void MessageCallback2(Local message, v8::Local data) { + printf("MessageCallback2\n\n"); +} + +void FatalErrorCallback2(const char* location, const char* message) { + printf("FatalErrorCallback2\n"); +} +*/ + +void ExitOnPromiseRejectCallback( + v8::PromiseRejectMessage promise_reject_message) { + auto* isolate = v8::Isolate::GetCurrent(); + Deno* d = static_cast(isolate->GetData(0)); + assert(d->isolate == isolate); + v8::HandleScope handle_scope(d->isolate); + auto exception = promise_reject_message.GetValue(); + HandleException(d, exception); +} + +void Print(const v8::FunctionCallbackInfo& args) { + bool first = true; + auto* isolate = args.GetIsolate(); + for (int i = 0; i < args.Length(); i++) { + v8::HandleScope handle_scope(isolate); + if (first) { + first = false; + } else { + printf(" "); + } + v8::String::Utf8Value str(isolate, args[i]); + const char* cstr = ToCString(str); + printf("%s", cstr); + } + printf("\n"); + fflush(stdout); +} + +// Sets the recv callback. +void Recv(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + Deno* d = reinterpret_cast(isolate->GetData(0)); + assert(d->isolate == isolate); + + v8::HandleScope handle_scope(isolate); + + v8::Local v = args[0]; + assert(v->IsFunction()); + v8::Local func = v8::Local::Cast(v); + + d->recv.Reset(isolate, func); +} + +// Called from JavaScript, routes message to golang. +void Send(const v8::FunctionCallbackInfo& args) { + v8::Isolate* isolate = args.GetIsolate(); + Deno* d = static_cast(isolate->GetData(0)); + assert(d->isolate == isolate); + + v8::Locker locker(d->isolate); + v8::EscapableHandleScope handle_scope(isolate); + + v8::Local v = args[0]; + assert(v->IsArrayBuffer()); + + auto ab = v8::Local::Cast(v); + auto contents = ab->GetContents(); + + void* buf = contents.Data(); + int buflen = static_cast(contents.ByteLength()); + + auto retbuf = d->cb(d, DenoBuf{buf, buflen}); + if (retbuf.data) { + auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.data, retbuf.len, + v8::ArrayBufferCreationMode::kInternalized); + /* + // I'm slightly worried the above v8::ArrayBuffer construction leaks memory + // the following might be a safer way to do it. + auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.len); + auto contents = ab->GetContents(); + memcpy(contents.Data(), retbuf.data, retbuf.len); + free(retbuf.data); + */ + args.GetReturnValue().Set(handle_scope.Escape(ab)); + } +} + +intptr_t external_references[] = {reinterpret_cast(Print), + reinterpret_cast(Recv), + reinterpret_cast(Send), 0}; + +const char* v8_version() { return v8::V8::GetVersion(); } + +void v8_set_flags(int* argc, char** argv) { + v8::V8::SetFlagsFromCommandLine(argc, argv, true); +} + +const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } + +int deno_load(Deno* d, const char* name_s, const char* source_s) { + v8::Locker locker(d->isolate); + v8::Isolate::Scope isolate_scope(d->isolate); + v8::HandleScope handle_scope(d->isolate); + + auto context = d->context.Get(d->isolate); + v8::Context::Scope context_scope(context); + + v8::TryCatch try_catch(d->isolate); + + auto name = v8_str(name_s); + auto source = v8_str(source_s); + + v8::ScriptOrigin origin(name); + + auto script = v8::Script::Compile(context, source, &origin); + + if (script.IsEmpty()) { + assert(try_catch.HasCaught()); + HandleException(d, try_catch.Exception()); + assert(false); + return 1; + } + + auto result = script.ToLocalChecked()->Run(context); + + if (result.IsEmpty()) { + assert(try_catch.HasCaught()); + HandleException(d, try_catch.Exception()); + assert(false); + return 2; + } + + return 0; +} + +// Called from golang. Must route message to javascript lang. +// non-zero return value indicates error. check deno_last_exception(). +int deno_send(Deno* d, DenoBuf buf) { + v8::Locker locker(d->isolate); + v8::Isolate::Scope isolate_scope(d->isolate); + v8::HandleScope handle_scope(d->isolate); + + auto context = d->context.Get(d->isolate); + v8::Context::Scope context_scope(context); + + v8::TryCatch try_catch(d->isolate); + + v8::Local recv = + v8::Local::New(d->isolate, d->recv); + if (recv.IsEmpty()) { + d->last_exception = "V8Deno2.recv has not been called."; + return 1; + } + + v8::Local args[1]; + args[0] = v8::ArrayBuffer::New(d->isolate, buf.data, buf.len, + v8::ArrayBufferCreationMode::kInternalized); + assert(!args[0].IsEmpty()); + assert(!try_catch.HasCaught()); + + recv->Call(context->Global(), 1, args); + + if (try_catch.HasCaught()) { + HandleException(d, try_catch.Exception()); + return 2; + } + + return 0; +} + +void v8_init() { + // v8::V8::InitializeICUDefaultLocation(argv[0]); + // v8::V8::InitializeExternalStartupData(argv[0]); + auto p = v8::platform::CreateDefaultPlatform(); + v8::V8::InitializePlatform(p); + v8::V8::Initialize(); +} + +Deno* deno_new(void* data, RecvCallback cb) { + Deno* d = new Deno; + d->cb = cb; + d->data = data; + v8::Isolate::CreateParams params; + params.array_buffer_allocator = + v8::ArrayBuffer::Allocator::NewDefaultAllocator(); + v8::Isolate* isolate = v8::Isolate::New(params); + deno_add_isolate(d, isolate); + return d; +} + +Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb) { + Deno* d = new Deno; + d->cb = cb; + d->data = data; + v8::Isolate::CreateParams params; + params.snapshot_blob = blob; + params.array_buffer_allocator = + v8::ArrayBuffer::Allocator::NewDefaultAllocator(); + params.external_references = external_references; + v8::Isolate* isolate = v8::Isolate::New(params); + deno_add_isolate(d, isolate); + + v8::Isolate::Scope isolate_scope(isolate); + { + v8::HandleScope handle_scope(isolate); + auto context = v8::Context::New(isolate); + d->context.Reset(d->isolate, context); + } + + return d; +} + +void deno_add_isolate(Deno* d, v8::Isolate* isolate) { + d->isolate = isolate; + // Leaving this code here because it will probably be useful later on, but + // disabling it now as I haven't got tests for the desired behavior. + // d->isolate->SetCaptureStackTraceForUncaughtExceptions(true); + // d->isolate->SetAbortOnUncaughtExceptionCallback(AbortOnUncaughtExceptionCallback); + // d->isolate->AddMessageListener(MessageCallback2); + // d->isolate->SetFatalErrorHandler(FatalErrorCallback2); + d->isolate->SetPromiseRejectCallback(ExitOnPromiseRejectCallback); + d->isolate->SetData(0, d); +} + +v8::StartupData SerializeInternalField(v8::Local holder, int index, + void* data) { + printf("SerializeInternalField %d\n", index); + v8::StartupData sd; + sd.data = "a"; + sd.raw_size = 1; + return sd; +} + +v8::StartupData deno_make_snapshot(const char* js_filename, + const char* js_source) { + auto creator = new v8::SnapshotCreator(external_references); + auto* isolate = creator->GetIsolate(); + + Deno* d = new Deno; + deno_add_isolate(d, isolate); + + v8::Isolate::Scope isolate_scope(isolate); + { + v8::HandleScope handle_scope(isolate); + + v8::Local context = v8::Context::New(d->isolate); + v8::Context::Scope context_scope(context); + + d->context.Reset(d->isolate, context); + + auto global = context->Global(); + + auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); + auto print_val = print_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, v8_str("deno_print"), print_val).FromJust()); + + auto recv_tmpl = v8::FunctionTemplate::New(isolate, Recv); + auto recv_val = recv_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, v8_str("deno_recv"), recv_val).FromJust()); + + auto send_tmpl = v8::FunctionTemplate::New(isolate, Send); + auto send_val = send_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, v8_str("deno_send"), send_val).FromJust()); + + creator->SetDefaultContext(context); + } + + int r = deno_load(d, js_filename, js_source); + assert(r == 0); + + d->context.Reset(); // Delete persistant handles. + d->recv.Reset(); // Delete persistant handles. + + auto snapshot_blob = + creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); + + return snapshot_blob; +} + +void deno_dispose(Deno* d) { + d->isolate->Dispose(); + delete (d); +} + +void deno_terminate_execution(Deno* d) { d->isolate->TerminateExecution(); } diff --git a/deno2/deno.h b/deno2/deno.h new file mode 100644 index 0000000000..f2a9e7294d --- /dev/null +++ b/deno2/deno.h @@ -0,0 +1,55 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#ifndef DENO_H_ +#define DENO_H_ + +#include +#include "v8/include/v8.h" + +// Data that gets transmitted. +struct buf_s { + void* data; + size_t len; +}; +typedef struct buf_s DenoBuf; +// Deno = Wrapped Isolate. +struct deno_s; +typedef struct deno_s Deno; +// The callback from V8 when data is sent. +typedef DenoBuf (*RecvCallback)(Deno* d, DenoBuf buf); +struct deno_s { + v8::Isolate* isolate; + std::string last_exception; + v8::Persistent recv; + v8::Persistent context; + RecvCallback cb; + void* data; +}; + +void v8_init(); +const char* v8_version(); +void v8_set_flags(int* argc, char** argv); + +// Constructors: +Deno* deno_new(void* data, RecvCallback cb); +Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb); + +v8::StartupData deno_make_snapshot(const char* js_filename, + const char* js_source); + +void deno_add_isolate(Deno* d, v8::Isolate* isolate); +void* deno_get_data(); + +// Returns nonzero on error. +// Get error text with deno_last_exception(). +int deno_load(Deno* d, const char* name_s, const char* source_s); + +// Returns nonzero on error. +int deno_send(Deno* d, DenoBuf buf); + +const char* deno_last_exception(Deno* d); + +void deno_dispose(Deno* d); +void deno_terminate_execution(Deno* d); + +#endif // DENO_H_ diff --git a/deno2/deno_test.cc b/deno2/deno_test.cc new file mode 100644 index 0000000000..3656e1d1f3 --- /dev/null +++ b/deno2/deno_test.cc @@ -0,0 +1,15 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#include "testing/gtest/include/gtest/gtest.h" + +#include "./deno.h" + +TEST(SnapshotTest, InitializesCorrectly) { + EXPECT_TRUE(true); + // TODO(ry) add actual tests +} + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/deno2/js/main.ts b/deno2/js/main.ts new file mode 100644 index 0000000000..a41a7dfee3 --- /dev/null +++ b/deno2/js/main.ts @@ -0,0 +1,7 @@ +const globalEval = eval; +const window = globalEval("this"); +window['foo'] = () => { + deno_print("Hello world from foo"); + return "foo"; +} + diff --git a/deno2/js/package.json b/deno2/js/package.json new file mode 100644 index 0000000000..08259fbe63 --- /dev/null +++ b/deno2/js/package.json @@ -0,0 +1,6 @@ +{ + "devDependencies": { + "parcel-bundler": "^1.8.1", + "typescript": "^2.9.1" + } +} diff --git a/deno2/js/run_node.py b/deno2/js/run_node.py new file mode 100755 index 0000000000..1cf74e6920 --- /dev/null +++ b/deno2/js/run_node.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +""" +gn can only run python scripts. +Also Node programs except to be run with cwd = $root_dir/js so it can resolve +node_modules. +""" +import subprocess +import sys +import os + +js_path = os.path.dirname(os.path.realpath(__file__)) +os.chdir(js_path) +args = ["node"] + sys.argv[1:] +sys.exit(subprocess.call(args)) diff --git a/deno2/js/yarn.lock b/deno2/js/yarn.lock new file mode 100644 index 0000000000..24427c3002 --- /dev/null +++ b/deno2/js/yarn.lock @@ -0,0 +1,3535 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +acorn@^5.0.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.0.tgz#572bedb377a1c61b7a289e72b8c5cfeb7baaf0bf" + +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" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +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" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + +atob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.25.0, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.25.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.15.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon-walk@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce" + dependencies: + babel-runtime "^6.11.6" + babel-types "^6.15.0" + lodash.clone "^4.5.0" + +babylon@^6.17.4, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +bindings@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" + +bluebird@^3.0.5: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brfs@^1.2.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + dependencies: + quote-stream "^1.0.1" + resolve "^1.1.5" + static-module "^2.2.0" + through2 "^2.0.0" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.1.tgz#3343124db6d7ad53e26a8826318712bdc8450f9c" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + +buffer-from@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.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" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000847" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000847.tgz#ff4072a5468809fec0ae9ac3b4035ef891e5b144" + +caniuse-lite@^1.0.30000844: + version "1.0.30000847" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz#be77f439be29bbc57ae08004b1e470b653b1ec1d" + +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" + +chalk@^2.1.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + dependencies: + chalk "^1.1.3" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +clones@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/clones/-/clones-1.1.0.tgz#87e904132d6140c5c0b72006c08c0d05bd7b63b3" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +coa@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" + 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" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.0.0, color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +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" + +command-exists@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.6.tgz#577f8e5feb0cb0f159cd557a51a9be1bdd76e09e" + +commander@^2.11.0, commander@^2.9.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@~1.1.5: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +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" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +convert-source-map@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + +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" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +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-select-base-adapter@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990" + +css-select@~1.3.0-rc0: + version "1.3.0-rc0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.3.0-rc0.tgz#6f93196aaae737666ea1036a8cb14a8fcb7a9231" + dependencies: + boolbase "^1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "^1.0.1" + +css-tree@1.0.0-alpha.27: + version "1.0.0-alpha.27" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.27.tgz#f211526909c7dc940843d83b9376ed98ddb8de47" + dependencies: + mdn-data "^1.0.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha25: + version "1.0.0-alpha25" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha25.tgz#1bbfabfbf6eeef4f01d9108ff2edd0be2fe35597" + dependencies: + mdn-data "^1.0.0" + source-map "^0.5.3" + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssnano@^3.10.0, cssnano@^3.4.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + 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@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.0.tgz#acdbba5719e2c87bc801eadc032764b2e4b9d4e7" + dependencies: + css-tree "1.0.0-alpha.27" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +deasync@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea" + dependencies: + bindings "~1.2.1" + nan "^2.0.7" + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +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" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +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.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +domelementtype@1, domelementtype@^1.3.0: + 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.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + 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" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + dependencies: + dom-serializer "0" + domelementtype "1" + +dotenv@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +editorconfig@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" + dependencies: + bluebird "^3.0.5" + commander "^2.9.0" + lru-cache "^3.2.0" + semver "^5.1.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47: + version "1.3.48" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +es-abstract@^1.5.1, es-abstract@^1.6.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.8.1, escodegen@~1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +falafel@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" + dependencies: + acorn "^5.0.0" + foreach "^2.0.5" + isarray "0.0.1" + object-keys "^1.0.6" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +filesize@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +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.1.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + 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" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +grapheme-breaker@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac" + dependencies: + brfs "^1.2.0" + unicode-trie "^0.3.1" + +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-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +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" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +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" + +htmlnano@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.9.tgz#e6137aea84d20311a3875c42eb2799a1ff352627" + dependencies: + cssnano "^3.4.0" + object-assign "^4.0.1" + posthtml "^0.11.3" + posthtml-render "^1.1.3" + svgo "^1.0.5" + uglify-es "^3.3.9" + +htmlparser2@^3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +iconv-lite@^0.4.4: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.11" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +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.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + 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.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +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.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.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-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +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-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +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-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +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-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-url@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +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" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0, isobject@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +js-base64@^2.1.9: + version "2.4.5" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" + +js-beautify@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919" + dependencies: + config-chain "~1.1.5" + editorconfig "^0.13.2" + mkdirp "~0.5.0" + nopt "~3.0.1" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +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" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + dependencies: + minimist "^1.2.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^4.17.4: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + dependencies: + pseudomap "^1.0.1" + +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + dependencies: + vlq "^0.2.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +mdn-data@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.3.tgz#d0929cdf73db32b0afd6d3ab8ef3da2b29b6f76b" + +merge-source-map@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + dependencies: + source-map "^0.5.6" + +micromatch@^3.0.4, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +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@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nan@^2.0.7, nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + +node-forge@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +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.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + 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" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + +object-keys@^1.0.6, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +object.values@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +opn@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +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.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parcel-bundler@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.8.1.tgz#ac62d0690786f51d7f309694bab6856f685a6986" + dependencies: + babel-code-frame "^6.26.0" + babel-core "^6.25.0" + babel-generator "^6.25.0" + babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-preset-env "^1.6.1" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.17.4" + babylon-walk "^1.0.2" + browserslist "^3.2.6" + chalk "^2.1.0" + chokidar "^2.0.3" + command-exists "^1.2.6" + commander "^2.11.0" + cross-spawn "^6.0.4" + cssnano "^3.10.0" + deasync "^0.1.12" + dotenv "^5.0.0" + filesize "^3.6.0" + get-port "^3.2.0" + glob "^7.1.2" + grapheme-breaker "^0.3.2" + htmlnano "^0.1.9" + is-url "^1.2.2" + js-yaml "^3.10.0" + json5 "^1.0.1" + micromatch "^3.0.4" + mkdirp "^0.5.1" + node-forge "^0.7.1" + node-libs-browser "^2.0.0" + opn "^5.1.0" + physical-cpu-count "^2.0.0" + postcss "^6.0.19" + postcss-value-parser "^3.3.0" + posthtml "^0.11.2" + posthtml-parser "^0.4.0" + posthtml-render "^1.1.3" + resolve "^1.4.0" + semver "^5.4.1" + serialize-to-js "^1.1.1" + serve-static "^1.12.4" + source-map "0.6.1" + strip-ansi "^4.0.0" + toml "^2.3.3" + tomlify-j0.4 "^3.0.0" + uglify-es "^3.2.1" + v8-compile-cache "^2.0.0" + ws "^5.1.1" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +pbkdf2@^3.0.3: + version "3.0.16" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +physical-cpu-count@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +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.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + 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.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + 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.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" + dependencies: + postcss "^5.0.4" + +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.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + 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.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + 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.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +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.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + 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.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + 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, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + 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.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + 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.8, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.19: + version "6.0.22" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3" + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +posthtml-parser@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz#3fe986fca9f00c0f109d731ba590b192f26e776d" + dependencies: + htmlparser2 "^3.9.2" + isobject "^2.1.0" + object-assign "^4.1.1" + +posthtml-parser@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.1.tgz#95b78fef766fbbe0a6f861b6e95582bc3d1ff933" + dependencies: + htmlparser2 "^3.9.2" + object-assign "^4.1.1" + +posthtml-render@^1.1.0, posthtml-render@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" + +posthtml@^0.11.2, posthtml@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz#17ea2921b0555b7455f33c977bd16d8b8cb74f27" + dependencies: + object-assign "^4.1.1" + posthtml-parser "^0.3.3" + posthtml-render "^1.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + 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" + +quote-stream@^1.0.1, quote-stream@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + dependencies: + buffer-equal "0.0.1" + minimist "^1.1.3" + through2 "^2.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +rc@^1.1.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + 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" + +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.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +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" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +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.6.1: + 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" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.5, resolve@^1.4.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +safer-eval@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/safer-eval/-/safer-eval-1.2.3.tgz#73ba74a34bc8a07d6a44135c815fd18a8eebe7a0" + dependencies: + clones "^1.1.0" + +sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-to-js@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-1.2.1.tgz#2e87f61f938826d24c463a7cbd0dd2929ec38008" + dependencies: + js-beautify "^1.7.5" + safer-eval "^1.2.3" + +serve-static@^1.12.4: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.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" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-copy@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +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-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@0.6.1, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +stable@~0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + +static-eval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864" + dependencies: + escodegen "^1.8.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +static-module@^2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" + dependencies: + concat-stream "~1.6.0" + convert-source-map "^1.5.1" + duplexer2 "~0.1.4" + escodegen "~1.9.0" + falafel "^2.1.0" + has "^1.0.1" + magic-string "^0.22.4" + merge-source-map "1.0.4" + object-inspect "~1.4.0" + quote-stream "~1.0.2" + readable-stream "~2.3.3" + shallow-copy "~0.0.1" + static-eval "^2.0.0" + through2 "~2.0.3" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.7.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +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-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +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-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +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.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +svgo@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.0.5.tgz#7040364c062a0538abacff4401cea6a26a7a389a" + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "~1.3.0-rc0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha25" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "~3.10.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tar@^4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +through2@^2.0.0, through2@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + dependencies: + setimmediate "^1.0.4" + +tiny-inflate@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toml@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" + +tomlify-j0.4@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@^2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" + +uglify-es@^3.2.1, uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +unicode-trie@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +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" + +v8-compile-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" + +vendors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + +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" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +ws@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.0.tgz#9fd95e3ac7c76f6ae8bcc868a0e3f11f1290c33e" + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" diff --git a/deno2/main.cc b/deno2/main.cc new file mode 100644 index 0000000000..b5c703b55c --- /dev/null +++ b/deno2/main.cc @@ -0,0 +1,33 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#include +#include + +#include "v8/include/v8.h" + +#include "./deno.h" +#include "natives_deno.cc" +#include "snapshot_deno.cc" + +int main(int argc, char** argv) { + v8_init(); + + auto natives_blob = *StartupBlob_natives(); + printf("natives_blob %d bytes\n", natives_blob.raw_size); + + auto snapshot_blob = *StartupBlob_snapshot(); + printf("snapshot_blob %d bytes\n", snapshot_blob.raw_size); + + v8::V8::SetNativesDataBlob(&natives_blob); + v8::V8::SetSnapshotDataBlob(&snapshot_blob); + + Deno* d = deno_from_snapshot(&snapshot_blob, NULL, NULL); + int r = deno_load(d, "main2.js", "foo();"); + if (r != 0) { + printf("Error! %s\n", deno_last_exception(d)); + exit(1); + } + + const char* v = v8::V8::GetVersion(); + printf("Hello World. V8 version %s\n", v); +} diff --git a/deno2/msg.proto b/deno2/msg.proto new file mode 100644 index 0000000000..755d22e535 --- /dev/null +++ b/deno2/msg.proto @@ -0,0 +1,102 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +syntax = "proto3"; +package main; +option go_package = "deno"; + +message BaseMsg { + string channel = 1; + bytes payload = 2; +} + +message Msg { + enum Command { + ERROR = 0; + START = 1; + CODE_FETCH = 2; + CODE_FETCH_RES = 3; + CODE_CACHE = 4; + EXIT = 5; + TIMER_START = 6; + TIMER_READY = 7; + TIMER_CLEAR = 8; + FETCH_REQ = 9; + FETCH_RES = 10; + READ_FILE_SYNC = 11; + READ_FILE_SYNC_RES = 12; + WRITE_FILE_SYNC = 13; + } + Command command = 1; + + // We avoid creating a message for each command (and use oneof or any types) + // In order to reduce code in the size of the generated javascript + // "msg.pb.js". It seems that each new message adds 20k and we want to + // potentially add many hundreds of commands. Therefore we just prefix command + // arguments by their name. + + // ERROR + string error = 2; + + // START + string start_cwd = 10; + repeated string start_argv = 11; + bool start_debug_flag = 12; + string start_main_js = 13; // The contents of dist/main.js + string start_main_map = 14; // The contents of dist/main.map + + // CODE_FETCH + string code_fetch_module_specifier = 20; + string code_fetch_containing_file = 21; + + // CODE_FETCH_RES + // If it's a non-http module, moduleName and filename will be the same. + // For http modules, moduleName is its resolved http URL, and filename + // is the location of the locally downloaded source code. + string code_fetch_res_module_name = 30; + string code_fetch_res_filename = 31; + string code_fetch_res_source_code = 32; + string code_fetch_res_output_code = 33; // Non-empty only if cached. + + // CODE_CACHE + string code_cache_filename = 41; + string code_cache_source_code = 42; + string code_cache_output_code = 43; + + // EXIT + int32 exit_code = 50; + + // TIMER_START + int32 timer_start_id = 60; + bool timer_start_interval = 61; + int32 timer_start_duration = 62; // In milliseconds. + + // TIMER_READY + int32 timer_ready_id = 70; + bool timer_ready_done = 71; + + // TIMER_CLEAR + int32 timer_clear_id = 80; + + // FETCH_REQ + int32 fetch_req_id = 90; + string fetch_req_url = 91; + // repeated string fetch_req_header_line = 91 + + // FETCH_RES + int32 fetch_res_id = 100; + int32 fetch_res_status = 101; + repeated string fetch_res_header_line = 102; + bytes fetch_res_body = 103; + + // READ_FILE_SYNC + string read_file_sync_filename = 110; + + // READ_FILE_SYNC_RES + bytes read_file_sync_data = 120; + + // WRITE_FILE_SYNC + string write_file_sync_filename = 130; + bytes write_file_sync_data = 131; + uint32 write_file_sync_perm = 132; + // write_file_sync_perm specified by https://godoc.org/os#FileMode +} diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc new file mode 100644 index 0000000000..4001abe6e4 --- /dev/null +++ b/deno2/snapshot_creator.cc @@ -0,0 +1,145 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#include +#include +#include +#include +#include +#include + +#include "v8/include/v8.h" + +#include "./deno.h" + +class StartupDataCppWriter { + public: + StartupDataCppWriter(const char* name, const char* filename, + v8::StartupData sd) + : name_(name), + filename_(filename), + sd_(sd), + file_(filename_, std::ios::binary) {} + + void Write() { + WritePrefix(); + WriteData(); + WriteSuffix(); + + file_.close(); + if (file_.bad()) { + printf("Unable to open file \"%s\" for writing.\n", filename_); + exit(1); + } + printf("Wrote %s %d %s \n", name_, sd_.raw_size, filename_); + } + + private: + void WritePrefix() { + file_ << "// Autogenerated snapshot file. Do not edit.\n\n"; + file_ << "#include \"v8/include/v8.h\"\n\n"; + } + + void WriteSuffix() { + char buffer[500]; + snprintf(buffer, sizeof(buffer), + "const v8::StartupData* StartupBlob_%s() {\n", name_); + file_ << buffer; + snprintf(buffer, sizeof(buffer), " return &%s_blob;\n", name_); + file_ << buffer; + file_ << "}\n\n"; + } + + void WriteBinaryContentsAsCArray() { + char buffer[5]; + for (int i = 0; i < sd_.raw_size; i++) { + if ((i & 0x1F) == 0x1F) file_ << "\n"; + if (i > 0) file_ << ","; + snprintf(buffer, sizeof(buffer), "%u", + static_cast(sd_.data[i])); + file_ << buffer; + } + file_ << "\n"; + } + + void WriteData() { + char buffer[500]; + snprintf(buffer, sizeof(buffer), "static const char %s_blob_data[] = {\n", + name_); + file_ << buffer; + WriteBinaryContentsAsCArray(); + file_ << "};\n"; + snprintf(buffer, sizeof(buffer), "static const int %s_blob_size = %d;\n", + name_, sd_.raw_size); + file_ << buffer; + snprintf(buffer, sizeof(buffer), "static const v8::StartupData %s_blob =\n", + name_); + file_ << buffer; + snprintf(buffer, sizeof(buffer), + "{ (const char*) %s_blob_data, %s_blob_size };\n", name_, name_); + file_ << buffer; + } + + const char* name_; + const char* filename_; + v8::StartupData sd_; + std::ofstream file_; +}; + +// Caller must free returned value. +static v8::StartupData ReadFile(const char* fn) { + std::ifstream input(fn, std::ios::binary); + if (input.bad()) { + printf("Error reading %s\n", fn); + exit(1); + } + // Note the allocated buffer is intentionally not freed in this program. + // It may show up as a memory leak some day, but other than that it's + // harmless. + auto* buffer = new std::vector((std::istreambuf_iterator(input)), + (std::istreambuf_iterator())); + v8::StartupData sd; + sd.data = buffer->data(); + sd.raw_size = static_cast(buffer->size()); + if (input.bad()) { + printf("Error reading %s\n", fn); + exit(1); + } + return sd; +} + +void WriteFile(const char* fn, v8::StartupData startup_data) { + std::ofstream output(fn, std::ios::binary); + output.write(startup_data.data, startup_data.raw_size); + output.close(); + if (output.bad()) { + printf("Error writing %s\n", fn); + exit(1); + } +} + +int main(int argc, char** argv) { + // The only documentation for this programs arguments is right here. + const char* js_fn = argv[1]; + const char* natives_in_bin = argv[2]; + const char* snapshot_in_bin = argv[3]; + const char* natives_out_cc = argv[4]; + const char* snapshot_out_cc = argv[5]; + + v8_init(); + + auto js_data = ReadFile(js_fn); + auto natives_blob = ReadFile(natives_in_bin); + auto snapshot_in_blob = ReadFile(snapshot_in_bin); + + v8::V8::SetNativesDataBlob(&natives_blob); + v8::V8::SetSnapshotDataBlob(&snapshot_in_blob); + + auto snapshot_blob = deno_make_snapshot(js_fn, js_data.data); + + StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob); + nativesWriter.Write(); + + StartupDataCppWriter snapshotWriter("snapshot", snapshot_out_cc, + snapshot_blob); + snapshotWriter.Write(); +} diff --git a/deno2/testing b/deno2/testing new file mode 120000 index 0000000000..ed34f4824a --- /dev/null +++ b/deno2/testing @@ -0,0 +1 @@ +v8/testing \ No newline at end of file diff --git a/deno2/third_party/googletest b/deno2/third_party/googletest new file mode 120000 index 0000000000..21e82410ce --- /dev/null +++ b/deno2/third_party/googletest @@ -0,0 +1 @@ +../v8/third_party/googletest/ \ No newline at end of file diff --git a/deno2/third_party/jinja2 b/deno2/third_party/jinja2 new file mode 120000 index 0000000000..36528ba754 --- /dev/null +++ b/deno2/third_party/jinja2 @@ -0,0 +1 @@ +../v8/third_party/jinja2/ \ No newline at end of file diff --git a/deno2/third_party/llvm-build b/deno2/third_party/llvm-build new file mode 120000 index 0000000000..7aebd33827 --- /dev/null +++ b/deno2/third_party/llvm-build @@ -0,0 +1 @@ +../v8/third_party/llvm-build/ \ No newline at end of file diff --git a/deno2/third_party/markupsafe b/deno2/third_party/markupsafe new file mode 120000 index 0000000000..b0960604b0 --- /dev/null +++ b/deno2/third_party/markupsafe @@ -0,0 +1 @@ +../v8/third_party/markupsafe/ \ No newline at end of file diff --git a/deno2/tools/build.py b/deno2/tools/build.py new file mode 100755 index 0000000000..25f30f4f8f --- /dev/null +++ b/deno2/tools/build.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# Get Depot Tools and make sure it's in your path. +# http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up +# Use .gclient to modify the deps. +import os +import sys +import subprocess +import argparse + +TARGET = "deno" + +parser = argparse.ArgumentParser(description="build.py") +parser.add_argument('--debug', dest='debug', action='store_true') +parser.add_argument('--use_ccache', dest='use_ccache', action='store_true') +parser.add_argument('--sync', dest='sync', action='store_true') +parser.set_defaults(debug=False, use_ccache=False, sync=False) +args = parser.parse_args() + +root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) + + +def main(): + os.chdir(root_path) + buildName = "Debug" if args.debug else "Default" + buildDir = os.path.join(root_path, "out", buildName) + # Run sync if any of the dep dirs don't exist. + # Or the user supplied the --sync flag. + if args.sync or dirsMissing(): + run(["gclient", "sync", "--no-history"]) + + # Run gn gen out/Default if out doesn't exist. + if not os.path.exists(buildDir): + gn_gen = ["gn", "gen", buildDir] + gn_args = [] + if args.debug: + gn_args.append("is_debug=true") + if args.use_ccache: + gn_args.append("cc_wrapper=\"ccache\"") + if len(gn_args) > 0: + gn_gen += ["--args=%s" % " ".join(gn_args)] + run(gn_gen) + + # Always run ninja. + run(["ninja", "-C", buildDir, TARGET]) + + +def run(args): + print " ".join(args) + env = os.environ.copy() + subprocess.check_call(args, env=env) + + +def dirsMissing(): + dirsToLoad = [ + "v8", + "third_party/protobuf", + "tools/protoc_wrapper", + "third_party/zlib", + ] + for d in dirsToLoad: + if not os.path.exists(d): + return True + return False + + +if '__main__' == __name__: + main() diff --git a/deno2/tools/format.sh b/deno2/tools/format.sh new file mode 100755 index 0000000000..e4fe09f82c --- /dev/null +++ b/deno2/tools/format.sh @@ -0,0 +1,6 @@ +#!/bin/sh +cd `dirname "$0"`/.. +clang-format -i -style Google *.cc *.h +gn format BUILD.gn +gn format .gn +yapf -i tools/*.py diff --git a/deno2/tools/lint.sh b/deno2/tools/lint.sh new file mode 100755 index 0000000000..8049ff6e09 --- /dev/null +++ b/deno2/tools/lint.sh @@ -0,0 +1,4 @@ +#!/bin/sh +cd `dirname "$0"`/.. +set -e +cpplint *.cc *.h From 4dbb6328b9d614a5713eb7591ef4aa858871bb3d Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 01:34:24 +0200 Subject: [PATCH 02/44] deno2 readme adjustments --- deno2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deno2/README.md b/deno2/README.md index 4e4eb7fe7f..77d5d0b59f 100644 --- a/deno2/README.md +++ b/deno2/README.md @@ -27,7 +27,7 @@ untenable. However, there's a lot of interest in Rust in the JS community and it seems like a reasonable choice. TBD. There are many people exploring the project, so care will be taken to keep the -original code functional while this is developed. However, once it's ready this +original code functional while this is developed. However, once it's ready the code in this deno2/ directory will be moved to the root. @@ -45,7 +45,7 @@ For linux you need these prereqs: First install the javascript deps. - cd js; yarn install + cd js; yarn install TODO(ry) Remove the above step by a deps submodule. From f7e99424ee2b422989eee18bf825e2a6f59c2625 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 02:02:10 +0200 Subject: [PATCH 03/44] deno2: Fix lint --- deno2/tools/lint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deno2/tools/lint.sh b/deno2/tools/lint.sh index 8049ff6e09..c307d67d01 100755 --- a/deno2/tools/lint.sh +++ b/deno2/tools/lint.sh @@ -1,4 +1,4 @@ #!/bin/sh cd `dirname "$0"`/.. -set -e -cpplint *.cc *.h +set -e -v +cpplint --repository=. *.cc *.h From 9df9cdae07048564a9d81e9ea67159d49196a1df Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 02:02:40 +0200 Subject: [PATCH 04/44] deno2 Simplify Print binding. --- deno2/deno.cc | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index db7abb1165..d428797807 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -98,20 +98,12 @@ void ExitOnPromiseRejectCallback( } void Print(const v8::FunctionCallbackInfo& args) { - bool first = true; + assert(args.Length() == 1); auto* isolate = args.GetIsolate(); - for (int i = 0; i < args.Length(); i++) { - v8::HandleScope handle_scope(isolate); - if (first) { - first = false; - } else { - printf(" "); - } - v8::String::Utf8Value str(isolate, args[i]); - const char* cstr = ToCString(str); - printf("%s", cstr); - } - printf("\n"); + v8::HandleScope handle_scope(isolate); + v8::String::Utf8Value str(isolate, args[0]); + const char* cstr = ToCString(str); + printf("%s\n", cstr); fflush(stdout); } From 092ec213818c1c3f94e4750f80bf1186703944d9 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 02:24:34 +0200 Subject: [PATCH 05/44] Wrap deno library in a namespace. --- deno2/deno.cc | 4 ++++ deno2/deno.h | 4 ++++ deno2/main.cc | 8 ++++---- deno2/snapshot_creator.cc | 4 ++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index d428797807..8ef673449b 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -32,6 +32,8 @@ IN THE SOFTWARE. #define CHECK(x) assert(x) // TODO(ry) use V8's CHECK. +namespace deno { + // Extracts a C string from a v8::V8 Utf8Value. const char* ToCString(const v8::String::Utf8Value& value) { return *value ? *value : ""; @@ -354,3 +356,5 @@ void deno_dispose(Deno* d) { } void deno_terminate_execution(Deno* d) { d->isolate->TerminateExecution(); } + +} // namespace deno diff --git a/deno2/deno.h b/deno2/deno.h index f2a9e7294d..2fadfd983b 100644 --- a/deno2/deno.h +++ b/deno2/deno.h @@ -6,6 +6,8 @@ #include #include "v8/include/v8.h" +namespace deno { + // Data that gets transmitted. struct buf_s { void* data; @@ -52,4 +54,6 @@ const char* deno_last_exception(Deno* d); void deno_dispose(Deno* d); void deno_terminate_execution(Deno* d); +} // namespace deno + #endif // DENO_H_ diff --git a/deno2/main.cc b/deno2/main.cc index b5c703b55c..5d8263d28c 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -10,7 +10,7 @@ #include "snapshot_deno.cc" int main(int argc, char** argv) { - v8_init(); + deno::v8_init(); auto natives_blob = *StartupBlob_natives(); printf("natives_blob %d bytes\n", natives_blob.raw_size); @@ -21,10 +21,10 @@ int main(int argc, char** argv) { v8::V8::SetNativesDataBlob(&natives_blob); v8::V8::SetSnapshotDataBlob(&snapshot_blob); - Deno* d = deno_from_snapshot(&snapshot_blob, NULL, NULL); - int r = deno_load(d, "main2.js", "foo();"); + deno::Deno* d = deno::deno_from_snapshot(&snapshot_blob, NULL, NULL); + int r = deno::deno_load(d, "main2.js", "foo();"); if (r != 0) { - printf("Error! %s\n", deno_last_exception(d)); + printf("Error! %s\n", deno::deno_last_exception(d)); exit(1); } diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index 4001abe6e4..1aaa958d01 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -125,7 +125,7 @@ int main(int argc, char** argv) { const char* natives_out_cc = argv[4]; const char* snapshot_out_cc = argv[5]; - v8_init(); + deno::v8_init(); auto js_data = ReadFile(js_fn); auto natives_blob = ReadFile(natives_in_bin); @@ -134,7 +134,7 @@ int main(int argc, char** argv) { v8::V8::SetNativesDataBlob(&natives_blob); v8::V8::SetSnapshotDataBlob(&snapshot_in_blob); - auto snapshot_blob = deno_make_snapshot(js_fn, js_data.data); + auto snapshot_blob = deno::deno_make_snapshot(js_fn, js_data.data); StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob); nativesWriter.Write(); From 7c7178598172bdca67b004b928be7ad35568cf61 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 03:44:56 +0200 Subject: [PATCH 06/44] deno.cc clean up --- deno2/deno.cc | 33 ++++++++++++--------------------- deno2/deno.h | 13 ++----------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 8ef673449b..1513262705 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -34,6 +34,18 @@ IN THE SOFTWARE. namespace deno { +// deno_s = Wrapped Isolate. +struct deno_s { + v8::Isolate* isolate; + std::string last_exception; + v8::Persistent recv; + v8::Persistent context; + RecvCallback cb; + void* data; +}; + +void deno_add_isolate(Deno* d, v8::Isolate* isolate); + // Extracts a C string from a v8::V8 Utf8Value. const char* ToCString(const v8::String::Utf8Value& value) { return *value ? *value : ""; @@ -249,18 +261,6 @@ void v8_init() { v8::V8::Initialize(); } -Deno* deno_new(void* data, RecvCallback cb) { - Deno* d = new Deno; - d->cb = cb; - d->data = data; - v8::Isolate::CreateParams params; - params.array_buffer_allocator = - v8::ArrayBuffer::Allocator::NewDefaultAllocator(); - v8::Isolate* isolate = v8::Isolate::New(params); - deno_add_isolate(d, isolate); - return d; -} - Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb) { Deno* d = new Deno; d->cb = cb; @@ -295,15 +295,6 @@ void deno_add_isolate(Deno* d, v8::Isolate* isolate) { d->isolate->SetData(0, d); } -v8::StartupData SerializeInternalField(v8::Local holder, int index, - void* data) { - printf("SerializeInternalField %d\n", index); - v8::StartupData sd; - sd.data = "a"; - sd.raw_size = 1; - return sd; -} - v8::StartupData deno_make_snapshot(const char* js_filename, const char* js_source) { auto creator = new v8::SnapshotCreator(external_references); diff --git a/deno2/deno.h b/deno2/deno.h index 2fadfd983b..00e4cc5026 100644 --- a/deno2/deno.h +++ b/deno2/deno.h @@ -14,32 +14,23 @@ struct buf_s { size_t len; }; typedef struct buf_s DenoBuf; -// Deno = Wrapped Isolate. + struct deno_s; typedef struct deno_s Deno; + // The callback from V8 when data is sent. typedef DenoBuf (*RecvCallback)(Deno* d, DenoBuf buf); -struct deno_s { - v8::Isolate* isolate; - std::string last_exception; - v8::Persistent recv; - v8::Persistent context; - RecvCallback cb; - void* data; -}; void v8_init(); const char* v8_version(); void v8_set_flags(int* argc, char** argv); // Constructors: -Deno* deno_new(void* data, RecvCallback cb); Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb); v8::StartupData deno_make_snapshot(const char* js_filename, const char* js_source); -void deno_add_isolate(Deno* d, v8::Isolate* isolate); void* deno_get_data(); // Returns nonzero on error. From aa857984b04511e62296b6d3ad9a451f81d71f71 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 04:11:02 +0200 Subject: [PATCH 07/44] Simplify c api --- deno2/deno.cc | 8 ++++++-- deno2/deno.h | 5 +++-- deno2/snapshot_creator.cc | 9 +++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 1513262705..bf5dcc89f8 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -295,8 +295,12 @@ void deno_add_isolate(Deno* d, v8::Isolate* isolate) { d->isolate->SetData(0, d); } -v8::StartupData deno_make_snapshot(const char* js_filename, - const char* js_source) { +v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, + v8::StartupData* prev_snapshot_blob, + const char* js_filename, const char* js_source) { + v8::V8::SetNativesDataBlob(prev_natives_blob); + v8::V8::SetSnapshotDataBlob(prev_snapshot_blob); + auto creator = new v8::SnapshotCreator(external_references); auto* isolate = creator->GetIsolate(); diff --git a/deno2/deno.h b/deno2/deno.h index 00e4cc5026..007c708846 100644 --- a/deno2/deno.h +++ b/deno2/deno.h @@ -28,8 +28,9 @@ void v8_set_flags(int* argc, char** argv); // Constructors: Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb); -v8::StartupData deno_make_snapshot(const char* js_filename, - const char* js_source); +v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, + v8::StartupData* prev_snapshot_blob, + const char* js_filename, const char* js_source); void* deno_get_data(); diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index 1aaa958d01..9ecfff11c9 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -125,16 +125,13 @@ int main(int argc, char** argv) { const char* natives_out_cc = argv[4]; const char* snapshot_out_cc = argv[5]; - deno::v8_init(); - auto js_data = ReadFile(js_fn); auto natives_blob = ReadFile(natives_in_bin); auto snapshot_in_blob = ReadFile(snapshot_in_bin); - v8::V8::SetNativesDataBlob(&natives_blob); - v8::V8::SetSnapshotDataBlob(&snapshot_in_blob); - - auto snapshot_blob = deno::deno_make_snapshot(js_fn, js_data.data); + deno::v8_init(); + auto snapshot_blob = deno::make_snapshot(&natives_blob, &snapshot_in_blob, + js_fn, js_data.data); StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob); nativesWriter.Write(); From 3062039ffe5563cab1f80b2d7da2d9c7e468c462 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 04:55:31 +0200 Subject: [PATCH 08/44] First pass at libdeno. --- deno2/BUILD.gn | 24 ++++++++++++++---------- deno2/deno.cc | 2 +- deno2/deno_test.cc | 2 +- deno2/{ => include}/deno.h | 6 +++--- deno2/main.cc | 2 +- deno2/snapshot_creator.cc | 2 +- deno2/tools/lint.sh | 2 +- 7 files changed, 22 insertions(+), 18 deletions(-) rename deno2/{ => include}/deno.h (93%) diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index 777a299025..e044b29a08 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -88,31 +88,34 @@ create_snapshot("deno") { v8_executable("snapshot_creator") { sources = [ - "deno.cc", - "deno.h", "snapshot_creator.cc", ] configs = [ "v8:libplatform_config" ] deps = [ - "v8:v8", - "v8:v8_libbase", - "v8:v8_libplatform", - "v8:v8_libsampler", - "//build/config:exe_and_shlib_deps", - "//build/win:default_exe_manifest", + ":libdeno", ] } v8_executable("deno") { sources = [ - "deno.cc", - "deno.h", "main.cc", ] include_dirs = [ target_gen_dir ] configs = [ "v8:libplatform_config" ] deps = [ ":create_snapshot_deno", + ":libdeno", + ] +} + +v8_component("libdeno") { + sources = [ + "deno.cc", + "include/deno.h", + ] + include_dirs = [ "include/" ] + configs = [ "v8:libplatform_config" ] + deps = [ ":msg_proto", "v8:v8", "v8:v8_libbase", @@ -129,6 +132,7 @@ executable("deno_test") { "deno_test.cc", ] deps = [ + ":libdeno", "//testing/gtest:gtest", ] } diff --git a/deno2/deno.cc b/deno2/deno.cc index bf5dcc89f8..4618b54806 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -28,7 +28,7 @@ IN THE SOFTWARE. #include "v8/include/libplatform/libplatform.h" #include "v8/include/v8.h" -#include "./deno.h" +#include "include/deno.h" #define CHECK(x) assert(x) // TODO(ry) use V8's CHECK. diff --git a/deno2/deno_test.cc b/deno2/deno_test.cc index 3656e1d1f3..4d3d20d949 100644 --- a/deno2/deno_test.cc +++ b/deno2/deno_test.cc @@ -2,7 +2,7 @@ // All rights reserved. MIT License. #include "testing/gtest/include/gtest/gtest.h" -#include "./deno.h" +#include "include/deno.h" TEST(SnapshotTest, InitializesCorrectly) { EXPECT_TRUE(true); diff --git a/deno2/deno.h b/deno2/include/deno.h similarity index 93% rename from deno2/deno.h rename to deno2/include/deno.h index 007c708846..9c6a22d2ef 100644 --- a/deno2/deno.h +++ b/deno2/include/deno.h @@ -1,7 +1,7 @@ // Copyright 2018 Ryan Dahl // All rights reserved. MIT License. -#ifndef DENO_H_ -#define DENO_H_ +#ifndef INCLUDE_DENO_H_ +#define INCLUDE_DENO_H_ #include #include "v8/include/v8.h" @@ -48,4 +48,4 @@ void deno_terminate_execution(Deno* d); } // namespace deno -#endif // DENO_H_ +#endif // INCLUDE_DENO_H_ diff --git a/deno2/main.cc b/deno2/main.cc index 5d8263d28c..5139e01bea 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -5,7 +5,7 @@ #include "v8/include/v8.h" -#include "./deno.h" +#include "include/deno.h" #include "natives_deno.cc" #include "snapshot_deno.cc" diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index 9ecfff11c9..f1bbfb0ed4 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -9,7 +9,7 @@ #include "v8/include/v8.h" -#include "./deno.h" +#include "include/deno.h" class StartupDataCppWriter { public: diff --git a/deno2/tools/lint.sh b/deno2/tools/lint.sh index c307d67d01..ed7831e297 100755 --- a/deno2/tools/lint.sh +++ b/deno2/tools/lint.sh @@ -1,4 +1,4 @@ #!/bin/sh cd `dirname "$0"`/.. set -e -v -cpplint --repository=. *.cc *.h +cpplint --repository=. *.cc *.h include/*.h From ff48eca5403140b134a3e6a772ffb6f8905fae3e Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 05:34:03 +0200 Subject: [PATCH 09/44] Expose deno::from_snapshot() constructor --- deno2/BUILD.gn | 26 +++++++++++++++++----- deno2/deno.cc | 39 +------------------------------- deno2/deno_internal.h | 32 +++++++++++++++++++++++++++ deno2/from_snapshot.cc | 50 ++++++++++++++++++++++++++++++++++++++++++ deno2/include/deno.h | 2 +- deno2/main.cc | 18 +-------------- 6 files changed, 106 insertions(+), 61 deletions(-) create mode 100644 deno2/deno_internal.h create mode 100644 deno2/from_snapshot.cc diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index e044b29a08..a7a414ad0b 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -92,7 +92,7 @@ v8_executable("snapshot_creator") { ] configs = [ "v8:libplatform_config" ] deps = [ - ":libdeno", + ":deno_nosnapshot", ] } @@ -100,17 +100,23 @@ v8_executable("deno") { sources = [ "main.cc", ] - include_dirs = [ target_gen_dir ] configs = [ "v8:libplatform_config" ] deps = [ - ":create_snapshot_deno", ":libdeno", ] } v8_component("libdeno") { + configs = [ "v8:libplatform_config" ] + deps = [ + ":deno_snapshot", + ] +} + +v8_source_set("deno_nosnapshot") { sources = [ "deno.cc", + "deno_internal.h", "include/deno.h", ] include_dirs = [ "include/" ] @@ -121,11 +127,21 @@ v8_component("libdeno") { "v8:v8_libbase", "v8:v8_libplatform", "v8:v8_libsampler", - "//build/config:exe_and_shlib_deps", - "//build/win:default_exe_manifest", ] } +v8_source_set("deno_snapshot") { + sources = [ + "from_snapshot.cc", + ] + deps = [ + ":create_snapshot_deno", + ":deno_nosnapshot", + ] + include_dirs = [ target_gen_dir ] + configs = [ "v8:libplatform_config" ] +} + executable("deno_test") { testonly = true sources = [ diff --git a/deno2/deno.cc b/deno2/deno.cc index 4618b54806..eb9b05a7fa 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -28,24 +28,13 @@ IN THE SOFTWARE. #include "v8/include/libplatform/libplatform.h" #include "v8/include/v8.h" +#include "deno_internal.h" #include "include/deno.h" #define CHECK(x) assert(x) // TODO(ry) use V8's CHECK. namespace deno { -// deno_s = Wrapped Isolate. -struct deno_s { - v8::Isolate* isolate; - std::string last_exception; - v8::Persistent recv; - v8::Persistent context; - RecvCallback cb; - void* data; -}; - -void deno_add_isolate(Deno* d, v8::Isolate* isolate); - // Extracts a C string from a v8::V8 Utf8Value. const char* ToCString(const v8::String::Utf8Value& value) { return *value ? *value : ""; @@ -170,10 +159,6 @@ void Send(const v8::FunctionCallbackInfo& args) { } } -intptr_t external_references[] = {reinterpret_cast(Print), - reinterpret_cast(Recv), - reinterpret_cast(Send), 0}; - const char* v8_version() { return v8::V8::GetVersion(); } void v8_set_flags(int* argc, char** argv) { @@ -261,28 +246,6 @@ void v8_init() { v8::V8::Initialize(); } -Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb) { - Deno* d = new Deno; - d->cb = cb; - d->data = data; - v8::Isolate::CreateParams params; - params.snapshot_blob = blob; - params.array_buffer_allocator = - v8::ArrayBuffer::Allocator::NewDefaultAllocator(); - params.external_references = external_references; - v8::Isolate* isolate = v8::Isolate::New(params); - deno_add_isolate(d, isolate); - - v8::Isolate::Scope isolate_scope(isolate); - { - v8::HandleScope handle_scope(isolate); - auto context = v8::Context::New(isolate); - d->context.Reset(d->isolate, context); - } - - return d; -} - void deno_add_isolate(Deno* d, v8::Isolate* isolate) { d->isolate = isolate; // Leaving this code here because it will probably be useful later on, but diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h new file mode 100644 index 0000000000..d125f39b15 --- /dev/null +++ b/deno2/deno_internal.h @@ -0,0 +1,32 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#ifndef DENO_INTERNAL_H_ +#define DENO_INTERNAL_H_ + +#include +#include "include/deno.h" +#include "v8/include/v8.h" + +namespace deno { + +void Print(const v8::FunctionCallbackInfo& args); +void Recv(const v8::FunctionCallbackInfo& args); +void Send(const v8::FunctionCallbackInfo& args); +static intptr_t external_references[] = {reinterpret_cast(Print), + reinterpret_cast(Recv), + reinterpret_cast(Send), 0}; + +// deno_s = Wrapped Isolate. +struct deno_s { + v8::Isolate* isolate; + std::string last_exception; + v8::Persistent recv; + v8::Persistent context; + RecvCallback cb; + void* data; +}; + +void deno_add_isolate(Deno* d, v8::Isolate* isolate); + +} // namespace deno +#endif // DENO_INTERNAL_H_ diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc new file mode 100644 index 0000000000..b743b441fb --- /dev/null +++ b/deno2/from_snapshot.cc @@ -0,0 +1,50 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#include +#include +#include +#include +#include + +#include "v8/include/libplatform/libplatform.h" +#include "v8/include/v8.h" + +#include "./deno_internal.h" +#include "include/deno.h" + +namespace deno { + +#include "natives_deno.cc" +#include "snapshot_deno.cc" + +Deno* from_snapshot(void* data, RecvCallback cb) { + auto natives_blob = *StartupBlob_natives(); + printf("natives_blob %d bytes\n", natives_blob.raw_size); + + auto snapshot_blob = *StartupBlob_snapshot(); + printf("snapshot_blob %d bytes\n", snapshot_blob.raw_size); + + v8::V8::SetNativesDataBlob(&natives_blob); + v8::V8::SetSnapshotDataBlob(&snapshot_blob); + + Deno* d = new Deno; + d->cb = cb; + d->data = data; + v8::Isolate::CreateParams params; + params.array_buffer_allocator = + v8::ArrayBuffer::Allocator::NewDefaultAllocator(); + params.external_references = external_references; + v8::Isolate* isolate = v8::Isolate::New(params); + deno_add_isolate(d, isolate); + + v8::Isolate::Scope isolate_scope(isolate); + { + v8::HandleScope handle_scope(isolate); + auto context = v8::Context::New(isolate); + d->context.Reset(d->isolate, context); + } + + return d; +} + +} // namespace deno diff --git a/deno2/include/deno.h b/deno2/include/deno.h index 9c6a22d2ef..e5a25f2405 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -26,7 +26,7 @@ const char* v8_version(); void v8_set_flags(int* argc, char** argv); // Constructors: -Deno* deno_from_snapshot(v8::StartupData* blob, void* data, RecvCallback cb); +Deno* from_snapshot(void* data, RecvCallback cb); v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, v8::StartupData* prev_snapshot_blob, diff --git a/deno2/main.cc b/deno2/main.cc index 5139e01bea..29aacc4e62 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -3,31 +3,15 @@ #include #include -#include "v8/include/v8.h" - #include "include/deno.h" -#include "natives_deno.cc" -#include "snapshot_deno.cc" int main(int argc, char** argv) { deno::v8_init(); - auto natives_blob = *StartupBlob_natives(); - printf("natives_blob %d bytes\n", natives_blob.raw_size); - - auto snapshot_blob = *StartupBlob_snapshot(); - printf("snapshot_blob %d bytes\n", snapshot_blob.raw_size); - - v8::V8::SetNativesDataBlob(&natives_blob); - v8::V8::SetSnapshotDataBlob(&snapshot_blob); - - deno::Deno* d = deno::deno_from_snapshot(&snapshot_blob, NULL, NULL); + deno::Deno* d = deno::from_snapshot(NULL, NULL); int r = deno::deno_load(d, "main2.js", "foo();"); if (r != 0) { printf("Error! %s\n", deno::deno_last_exception(d)); exit(1); } - - const char* v = v8::V8::GetVersion(); - printf("Hello World. V8 version %s\n", v); } From 12cded8af624bf15ce46bd82c6ae576daf0f0aad Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 06:13:48 +0200 Subject: [PATCH 10/44] make_snapshot shouldn't depend on Deno object --- deno2/deno.cc | 69 ++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index eb9b05a7fa..feb081489d 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -47,13 +47,14 @@ static inline v8::Local v8_str(const char* x) { } // Exits the process. -void HandleException(Deno* d, v8::Local exception) { - v8::HandleScope handle_scope(d->isolate); - auto context = d->context.Get(d->isolate); +void HandleException(v8::Local context, + v8::Local exception) { + auto isolate = context->GetIsolate(); + v8::HandleScope handle_scope(isolate); v8::Context::Scope context_scope(context); - auto message = v8::Exception::CreateMessage(d->isolate, exception); - auto onerrorStr = v8::String::NewFromUtf8(d->isolate, "onerror"); + auto message = v8::Exception::CreateMessage(isolate, exception); + auto onerrorStr = v8::String::NewFromUtf8(isolate, "onerror"); auto onerror = context->Global()->Get(onerrorStr); if (onerror->IsFunction()) { @@ -68,9 +69,9 @@ void HandleException(Deno* d, v8::Local exception) { func->Call(context->Global(), 5, args); /* message, source, lineno, colno, error */ } else { - v8::String::Utf8Value exceptionStr(d->isolate, exception); + v8::String::Utf8Value exceptionStr(isolate, exception); printf("Unhandled Exception %s\n", ToCString(exceptionStr)); - message->PrintCurrentStackTrace(d->isolate, stdout); + message->PrintCurrentStackTrace(isolate, stdout); } exit(1); @@ -97,7 +98,8 @@ void ExitOnPromiseRejectCallback( assert(d->isolate == isolate); v8::HandleScope handle_scope(d->isolate); auto exception = promise_reject_message.GetValue(); - HandleException(d, exception); + auto context = d->context.Get(d->isolate); + HandleException(context, exception); } void Print(const v8::FunctionCallbackInfo& args) { @@ -167,15 +169,15 @@ void v8_set_flags(int* argc, char** argv) { const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } -int deno_load(Deno* d, const char* name_s, const char* source_s) { - v8::Locker locker(d->isolate); - v8::Isolate::Scope isolate_scope(d->isolate); - v8::HandleScope handle_scope(d->isolate); +bool load(v8::Local context, const char* name_s, + const char* source_s) { + auto isolate = context->GetIsolate(); + v8::Isolate::Scope isolate_scope(isolate); + v8::HandleScope handle_scope(isolate); - auto context = d->context.Get(d->isolate); v8::Context::Scope context_scope(context); - v8::TryCatch try_catch(d->isolate); + v8::TryCatch try_catch(isolate); auto name = v8_str(name_s); auto source = v8_str(source_s); @@ -186,21 +188,30 @@ int deno_load(Deno* d, const char* name_s, const char* source_s) { if (script.IsEmpty()) { assert(try_catch.HasCaught()); - HandleException(d, try_catch.Exception()); + HandleException(context, try_catch.Exception()); assert(false); - return 1; + return false; } auto result = script.ToLocalChecked()->Run(context); if (result.IsEmpty()) { assert(try_catch.HasCaught()); - HandleException(d, try_catch.Exception()); + HandleException(context, try_catch.Exception()); assert(false); - return 2; + return false; } - return 0; + return true; +} + +int deno_load(Deno* d, const char* name_s, const char* source_s) { + auto isolate = d->isolate; + v8::Locker locker(isolate); + v8::Isolate::Scope isolate_scope(isolate); + v8::HandleScope handle_scope(isolate); + auto context = d->context.Get(d->isolate); + return load(context, name_s, source_s) ? 0 : 1; } // Called from golang. Must route message to javascript lang. @@ -231,7 +242,7 @@ int deno_send(Deno* d, DenoBuf buf) { recv->Call(context->Global(), 1, args); if (try_catch.HasCaught()) { - HandleException(d, try_catch.Exception()); + HandleException(context, try_catch.Exception()); return 2; } @@ -266,19 +277,12 @@ v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, auto creator = new v8::SnapshotCreator(external_references); auto* isolate = creator->GetIsolate(); - - Deno* d = new Deno; - deno_add_isolate(d, isolate); - v8::Isolate::Scope isolate_scope(isolate); { v8::HandleScope handle_scope(isolate); - - v8::Local context = v8::Context::New(d->isolate); + auto context = v8::Context::New(isolate); v8::Context::Scope context_scope(context); - d->context.Reset(d->isolate, context); - auto global = context->Global(); auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); @@ -293,15 +297,12 @@ v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, auto send_val = send_tmpl->GetFunction(context).ToLocalChecked(); CHECK(global->Set(context, v8_str("deno_send"), send_val).FromJust()); + bool r = load(context, js_filename, js_source); + assert(r); + creator->SetDefaultContext(context); } - int r = deno_load(d, js_filename, js_source); - assert(r == 0); - - d->context.Reset(); // Delete persistant handles. - d->recv.Reset(); // Delete persistant handles. - auto snapshot_blob = creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); From a6880dad6534ee9e1637c5098698cf32a4f1527e Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 13:17:04 +0200 Subject: [PATCH 11/44] make_snapshot should be private Now deno.h doesn't export v8.h and is self contained. --- deno2/deno_internal.h | 4 ++++ deno2/include/deno.h | 7 ------- deno2/snapshot_creator.cc | 1 + deno2/tools/format.sh | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h index d125f39b15..35a20bdc0b 100644 --- a/deno2/deno_internal.h +++ b/deno2/deno_internal.h @@ -16,6 +16,10 @@ static intptr_t external_references[] = {reinterpret_cast(Print), reinterpret_cast(Recv), reinterpret_cast(Send), 0}; +v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, + v8::StartupData* prev_snapshot_blob, + const char* js_filename, const char* js_source); + // deno_s = Wrapped Isolate. struct deno_s { v8::Isolate* isolate; diff --git a/deno2/include/deno.h b/deno2/include/deno.h index e5a25f2405..d2bdca9002 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -3,9 +3,6 @@ #ifndef INCLUDE_DENO_H_ #define INCLUDE_DENO_H_ -#include -#include "v8/include/v8.h" - namespace deno { // Data that gets transmitted. @@ -28,10 +25,6 @@ void v8_set_flags(int* argc, char** argv); // Constructors: Deno* from_snapshot(void* data, RecvCallback cb); -v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, - v8::StartupData* prev_snapshot_blob, - const char* js_filename, const char* js_source); - void* deno_get_data(); // Returns nonzero on error. diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index f1bbfb0ed4..f904e6679e 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -10,6 +10,7 @@ #include "v8/include/v8.h" #include "include/deno.h" +#include "./deno_internal.h" class StartupDataCppWriter { public: diff --git a/deno2/tools/format.sh b/deno2/tools/format.sh index e4fe09f82c..25c9f4a892 100755 --- a/deno2/tools/format.sh +++ b/deno2/tools/format.sh @@ -1,6 +1,6 @@ #!/bin/sh cd `dirname "$0"`/.. -clang-format -i -style Google *.cc *.h +clang-format -i -style Google *.cc *.h include/*.h gn format BUILD.gn gn format .gn yapf -i tools/*.py From 9296b21b87eec3f01bee465fcb2b64c4ea14514b Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 14:18:15 +0200 Subject: [PATCH 12/44] Use C linkage in deno.h --- deno2/deno.cc | 155 ++++++++++++++++++++------------------ deno2/deno_internal.h | 31 ++++---- deno2/from_snapshot.cc | 11 ++- deno2/include/deno.h | 27 ++++--- deno2/main.cc | 8 +- deno2/snapshot_creator.cc | 8 +- 6 files changed, 130 insertions(+), 110 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index feb081489d..0afda5e908 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -28,7 +28,7 @@ IN THE SOFTWARE. #include "v8/include/libplatform/libplatform.h" #include "v8/include/v8.h" -#include "deno_internal.h" +#include "./deno_internal.h" #include "include/deno.h" #define CHECK(x) assert(x) // TODO(ry) use V8's CHECK. @@ -145,7 +145,7 @@ void Send(const v8::FunctionCallbackInfo& args) { void* buf = contents.Data(); int buflen = static_cast(contents.ByteLength()); - auto retbuf = d->cb(d, DenoBuf{buf, buflen}); + auto retbuf = d->cb(d, deno_buf{buf, buflen}); if (retbuf.data) { auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.data, retbuf.len, v8::ArrayBufferCreationMode::kInternalized); @@ -161,15 +161,7 @@ void Send(const v8::FunctionCallbackInfo& args) { } } -const char* v8_version() { return v8::V8::GetVersion(); } - -void v8_set_flags(int* argc, char** argv) { - v8::V8::SetFlagsFromCommandLine(argc, argv, true); -} - -const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } - -bool load(v8::Local context, const char* name_s, +bool Load(v8::Local context, const char* name_s, const char* source_s) { auto isolate = context->GetIsolate(); v8::Isolate::Scope isolate_scope(isolate); @@ -205,18 +197,91 @@ bool load(v8::Local context, const char* name_s, return true; } +v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, + v8::StartupData* prev_snapshot_blob, + const char* js_filename, const char* js_source) { + v8::V8::SetNativesDataBlob(prev_natives_blob); + v8::V8::SetSnapshotDataBlob(prev_snapshot_blob); + + auto creator = new v8::SnapshotCreator(external_references); + auto* isolate = creator->GetIsolate(); + v8::Isolate::Scope isolate_scope(isolate); + { + v8::HandleScope handle_scope(isolate); + auto context = v8::Context::New(isolate); + v8::Context::Scope context_scope(context); + + auto global = context->Global(); + + auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); + auto print_val = print_tmpl->GetFunction(context).ToLocalChecked(); + CHECK( + global->Set(context, deno::v8_str("deno_print"), print_val).FromJust()); + + auto recv_tmpl = v8::FunctionTemplate::New(isolate, Recv); + auto recv_val = recv_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, deno::v8_str("deno_recv"), recv_val).FromJust()); + + auto send_tmpl = v8::FunctionTemplate::New(isolate, Send); + auto send_val = send_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, deno::v8_str("deno_send"), send_val).FromJust()); + + bool r = Load(context, js_filename, js_source); + assert(r); + + creator->SetDefaultContext(context); + } + + auto snapshot_blob = + creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); + + return snapshot_blob; +} + +void AddIsolate(Deno* d, v8::Isolate* isolate) { + d->isolate = isolate; + // Leaving this code here because it will probably be useful later on, but + // disabling it now as I haven't got tests for the desired behavior. + // d->isolate->SetCaptureStackTraceForUncaughtExceptions(true); + // d->isolate->SetAbortOnUncaughtExceptionCallback(AbortOnUncaughtExceptionCallback); + // d->isolate->AddMessageListener(MessageCallback2); + // d->isolate->SetFatalErrorHandler(FatalErrorCallback2); + d->isolate->SetPromiseRejectCallback(deno::ExitOnPromiseRejectCallback); + d->isolate->SetData(0, d); +} + +} // namespace deno + +extern "C" { + +void deno_init() { + // v8::V8::InitializeICUDefaultLocation(argv[0]); + // v8::V8::InitializeExternalStartupData(argv[0]); + auto p = v8::platform::CreateDefaultPlatform(); + v8::V8::InitializePlatform(p); + v8::V8::Initialize(); +} + +const char* v8_version() { return v8::V8::GetVersion(); } + +void v8_set_flags(int* argc, char** argv) { + v8::V8::SetFlagsFromCommandLine(argc, argv, true); +} + +const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } + int deno_load(Deno* d, const char* name_s, const char* source_s) { auto isolate = d->isolate; v8::Locker locker(isolate); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); auto context = d->context.Get(d->isolate); - return load(context, name_s, source_s) ? 0 : 1; + return deno::Load(context, name_s, source_s) ? 0 : 1; } // Called from golang. Must route message to javascript lang. // non-zero return value indicates error. check deno_last_exception(). -int deno_send(Deno* d, DenoBuf buf) { +int deno_send(Deno* d, deno_buf buf) { v8::Locker locker(d->isolate); v8::Isolate::Scope isolate_scope(d->isolate); v8::HandleScope handle_scope(d->isolate); @@ -242,73 +307,13 @@ int deno_send(Deno* d, DenoBuf buf) { recv->Call(context->Global(), 1, args); if (try_catch.HasCaught()) { - HandleException(context, try_catch.Exception()); + deno::HandleException(context, try_catch.Exception()); return 2; } return 0; } -void v8_init() { - // v8::V8::InitializeICUDefaultLocation(argv[0]); - // v8::V8::InitializeExternalStartupData(argv[0]); - auto p = v8::platform::CreateDefaultPlatform(); - v8::V8::InitializePlatform(p); - v8::V8::Initialize(); -} - -void deno_add_isolate(Deno* d, v8::Isolate* isolate) { - d->isolate = isolate; - // Leaving this code here because it will probably be useful later on, but - // disabling it now as I haven't got tests for the desired behavior. - // d->isolate->SetCaptureStackTraceForUncaughtExceptions(true); - // d->isolate->SetAbortOnUncaughtExceptionCallback(AbortOnUncaughtExceptionCallback); - // d->isolate->AddMessageListener(MessageCallback2); - // d->isolate->SetFatalErrorHandler(FatalErrorCallback2); - d->isolate->SetPromiseRejectCallback(ExitOnPromiseRejectCallback); - d->isolate->SetData(0, d); -} - -v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, - v8::StartupData* prev_snapshot_blob, - const char* js_filename, const char* js_source) { - v8::V8::SetNativesDataBlob(prev_natives_blob); - v8::V8::SetSnapshotDataBlob(prev_snapshot_blob); - - auto creator = new v8::SnapshotCreator(external_references); - auto* isolate = creator->GetIsolate(); - v8::Isolate::Scope isolate_scope(isolate); - { - v8::HandleScope handle_scope(isolate); - auto context = v8::Context::New(isolate); - v8::Context::Scope context_scope(context); - - auto global = context->Global(); - - auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); - auto print_val = print_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, v8_str("deno_print"), print_val).FromJust()); - - auto recv_tmpl = v8::FunctionTemplate::New(isolate, Recv); - auto recv_val = recv_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, v8_str("deno_recv"), recv_val).FromJust()); - - auto send_tmpl = v8::FunctionTemplate::New(isolate, Send); - auto send_val = send_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, v8_str("deno_send"), send_val).FromJust()); - - bool r = load(context, js_filename, js_source); - assert(r); - - creator->SetDefaultContext(context); - } - - auto snapshot_blob = - creator->CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kKeep); - - return snapshot_blob; -} - void deno_dispose(Deno* d) { d->isolate->Dispose(); delete (d); @@ -316,4 +321,4 @@ void deno_dispose(Deno* d) { void deno_terminate_execution(Deno* d) { d->isolate->TerminateExecution(); } -} // namespace deno +} // extern "C" diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h index 35a20bdc0b..92f891af38 100644 --- a/deno2/deno_internal.h +++ b/deno2/deno_internal.h @@ -7,18 +7,7 @@ #include "include/deno.h" #include "v8/include/v8.h" -namespace deno { - -void Print(const v8::FunctionCallbackInfo& args); -void Recv(const v8::FunctionCallbackInfo& args); -void Send(const v8::FunctionCallbackInfo& args); -static intptr_t external_references[] = {reinterpret_cast(Print), - reinterpret_cast(Recv), - reinterpret_cast(Send), 0}; - -v8::StartupData make_snapshot(v8::StartupData* prev_natives_blob, - v8::StartupData* prev_snapshot_blob, - const char* js_filename, const char* js_source); +extern "C" { // deno_s = Wrapped Isolate. struct deno_s { @@ -29,8 +18,24 @@ struct deno_s { RecvCallback cb; void* data; }; +} -void deno_add_isolate(Deno* d, v8::Isolate* isolate); +namespace deno { + +void Print(const v8::FunctionCallbackInfo& args); +void Recv(const v8::FunctionCallbackInfo& args); +void Send(const v8::FunctionCallbackInfo& args); +static intptr_t external_references[] = {reinterpret_cast(Print), + reinterpret_cast(Recv), + reinterpret_cast(Send), 0}; + +Deno* NewFromSnapshot(void* data, RecvCallback cb); + +v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, + v8::StartupData* prev_snapshot_blob, + const char* js_filename, const char* js_source); + +void AddIsolate(Deno* d, v8::Isolate* isolate); } // namespace deno #endif // DENO_INTERNAL_H_ diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index b743b441fb..6702aa4197 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -17,7 +17,7 @@ namespace deno { #include "natives_deno.cc" #include "snapshot_deno.cc" -Deno* from_snapshot(void* data, RecvCallback cb) { +Deno* NewFromSnapshot(void* data, RecvCallback cb) { auto natives_blob = *StartupBlob_natives(); printf("natives_blob %d bytes\n", natives_blob.raw_size); @@ -35,7 +35,7 @@ Deno* from_snapshot(void* data, RecvCallback cb) { v8::ArrayBuffer::Allocator::NewDefaultAllocator(); params.external_references = external_references; v8::Isolate* isolate = v8::Isolate::New(params); - deno_add_isolate(d, isolate); + AddIsolate(d, isolate); v8::Isolate::Scope isolate_scope(isolate); { @@ -48,3 +48,10 @@ Deno* from_snapshot(void* data, RecvCallback cb) { } } // namespace deno + +extern "C" { + +Deno* deno_new(void* data, RecvCallback cb) { + return deno::NewFromSnapshot(data, cb); +} +} diff --git a/deno2/include/deno.h b/deno2/include/deno.h index d2bdca9002..5dd4e68536 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -2,28 +2,30 @@ // All rights reserved. MIT License. #ifndef INCLUDE_DENO_H_ #define INCLUDE_DENO_H_ - -namespace deno { +// Neither Rust nor Go support calling directly into C++ functions, therefore +// the public interface to libdeno is done in C. +#ifdef __cplusplus +extern "C" { +#endif // Data that gets transmitted. -struct buf_s { +typedef struct { void* data; size_t len; -}; -typedef struct buf_s DenoBuf; +} deno_buf; struct deno_s; typedef struct deno_s Deno; // The callback from V8 when data is sent. -typedef DenoBuf (*RecvCallback)(Deno* d, DenoBuf buf); +typedef deno_buf (*RecvCallback)(Deno* d, deno_buf buf); -void v8_init(); +void deno_init(); const char* v8_version(); void v8_set_flags(int* argc, char** argv); -// Constructors: -Deno* from_snapshot(void* data, RecvCallback cb); +// Constructor +Deno* deno_new(void* data, RecvCallback cb); void* deno_get_data(); @@ -32,13 +34,14 @@ void* deno_get_data(); int deno_load(Deno* d, const char* name_s, const char* source_s); // Returns nonzero on error. -int deno_send(Deno* d, DenoBuf buf); +int deno_send(Deno* d, deno_buf buf); const char* deno_last_exception(Deno* d); void deno_dispose(Deno* d); void deno_terminate_execution(Deno* d); -} // namespace deno - +#ifdef __cplusplus +} // extern "C" +#endif #endif // INCLUDE_DENO_H_ diff --git a/deno2/main.cc b/deno2/main.cc index 29aacc4e62..d16dd44ba8 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -6,12 +6,12 @@ #include "include/deno.h" int main(int argc, char** argv) { - deno::v8_init(); + deno_init(); - deno::Deno* d = deno::from_snapshot(NULL, NULL); - int r = deno::deno_load(d, "main2.js", "foo();"); + Deno* d = deno_new(NULL, NULL); + int r = deno_load(d, "main2.js", "foo();"); if (r != 0) { - printf("Error! %s\n", deno::deno_last_exception(d)); + printf("Error! %s\n", deno_last_exception(d)); exit(1); } } diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index f904e6679e..fc43783e25 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -9,8 +9,8 @@ #include "v8/include/v8.h" -#include "include/deno.h" #include "./deno_internal.h" +#include "include/deno.h" class StartupDataCppWriter { public: @@ -130,9 +130,9 @@ int main(int argc, char** argv) { auto natives_blob = ReadFile(natives_in_bin); auto snapshot_in_blob = ReadFile(snapshot_in_bin); - deno::v8_init(); - auto snapshot_blob = deno::make_snapshot(&natives_blob, &snapshot_in_blob, - js_fn, js_data.data); + deno_init(); + auto snapshot_blob = + deno::MakeSnapshot(&natives_blob, &snapshot_in_blob, js_fn, js_data.data); StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob); nativesWriter.Write(); From c0401a4096b55cfacf0aa848df1ba74d48a05e3d Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 14:24:39 +0200 Subject: [PATCH 13/44] Organize BUILD.gn --- deno2/BUILD.gn | 129 ++++++++++++++++++++--------------------- deno2/deno.cc | 10 ++-- deno2/from_snapshot.cc | 1 - 3 files changed, 67 insertions(+), 73 deletions(-) diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index a7a414ad0b..16b1114c54 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -2,6 +2,68 @@ import("//third_party/protobuf/proto_library.gni") import("//v8/gni/v8.gni") import("//v8/snapshot_toolchain.gni") +executable("deno") { + sources = [ + "main.cc", + ] + deps = [ + ":libdeno", + ] +} + +executable("deno_test") { + testonly = true + sources = [ + "deno_test.cc", + ] + deps = [ + ":libdeno", + "//testing/gtest:gtest", + ] +} + +component("libdeno") { + deps = [ + ":deno_snapshot", + ] +} + +source_set("deno_nosnapshot") { + sources = [ + "deno.cc", + "deno_internal.h", + "include/deno.h", + ] + include_dirs = [ "include/" ] + deps = [ + ":msg_proto", + "v8:v8", + "v8:v8_libbase", + "v8:v8_libplatform", + "v8:v8_libsampler", + ] +} + +source_set("deno_snapshot") { + sources = [ + "from_snapshot.cc", + ] + deps = [ + ":create_snapshot_deno", + ":deno_nosnapshot", + ] + include_dirs = [ target_gen_dir ] +} + +executable("snapshot_creator") { + sources = [ + "snapshot_creator.cc", + ] + deps = [ + ":deno_nosnapshot", + ] +} + proto_library("msg_proto") { sources = [ "msg.proto", @@ -85,70 +147,3 @@ create_snapshot("deno") { ":run_parcel", ] } - -v8_executable("snapshot_creator") { - sources = [ - "snapshot_creator.cc", - ] - configs = [ "v8:libplatform_config" ] - deps = [ - ":deno_nosnapshot", - ] -} - -v8_executable("deno") { - sources = [ - "main.cc", - ] - configs = [ "v8:libplatform_config" ] - deps = [ - ":libdeno", - ] -} - -v8_component("libdeno") { - configs = [ "v8:libplatform_config" ] - deps = [ - ":deno_snapshot", - ] -} - -v8_source_set("deno_nosnapshot") { - sources = [ - "deno.cc", - "deno_internal.h", - "include/deno.h", - ] - include_dirs = [ "include/" ] - configs = [ "v8:libplatform_config" ] - deps = [ - ":msg_proto", - "v8:v8", - "v8:v8_libbase", - "v8:v8_libplatform", - "v8:v8_libsampler", - ] -} - -v8_source_set("deno_snapshot") { - sources = [ - "from_snapshot.cc", - ] - deps = [ - ":create_snapshot_deno", - ":deno_nosnapshot", - ] - include_dirs = [ target_gen_dir ] - configs = [ "v8:libplatform_config" ] -} - -executable("deno_test") { - testonly = true - sources = [ - "deno_test.cc", - ] - deps = [ - ":libdeno", - "//testing/gtest:gtest", - ] -} diff --git a/deno2/deno.cc b/deno2/deno.cc index 0afda5e908..6b26077be0 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -49,7 +49,7 @@ static inline v8::Local v8_str(const char* x) { // Exits the process. void HandleException(v8::Local context, v8::Local exception) { - auto isolate = context->GetIsolate(); + auto* isolate = context->GetIsolate(); v8::HandleScope handle_scope(isolate); v8::Context::Scope context_scope(context); @@ -163,7 +163,7 @@ void Send(const v8::FunctionCallbackInfo& args) { bool Load(v8::Local context, const char* name_s, const char* source_s) { - auto isolate = context->GetIsolate(); + auto* isolate = context->GetIsolate(); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); @@ -203,7 +203,7 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, v8::V8::SetNativesDataBlob(prev_natives_blob); v8::V8::SetSnapshotDataBlob(prev_snapshot_blob); - auto creator = new v8::SnapshotCreator(external_references); + auto* creator = new v8::SnapshotCreator(external_references); auto* isolate = creator->GetIsolate(); v8::Isolate::Scope isolate_scope(isolate); { @@ -257,7 +257,7 @@ extern "C" { void deno_init() { // v8::V8::InitializeICUDefaultLocation(argv[0]); // v8::V8::InitializeExternalStartupData(argv[0]); - auto p = v8::platform::CreateDefaultPlatform(); + auto* p = v8::platform::CreateDefaultPlatform(); v8::V8::InitializePlatform(p); v8::V8::Initialize(); } @@ -271,7 +271,7 @@ void v8_set_flags(int* argc, char** argv) { const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } int deno_load(Deno* d, const char* name_s, const char* source_s) { - auto isolate = d->isolate; + auto* isolate = d->isolate; v8::Locker locker(isolate); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index 6702aa4197..1a55a1ef06 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -6,7 +6,6 @@ #include #include -#include "v8/include/libplatform/libplatform.h" #include "v8/include/v8.h" #include "./deno_internal.h" From 44e419065a6f44eded3402434d9f180ac46e6988 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 14:28:40 +0200 Subject: [PATCH 14/44] deno_test.cc actually calls into deno now. --- deno2/deno_test.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deno2/deno_test.cc b/deno2/deno_test.cc index 4d3d20d949..0b570a4b52 100644 --- a/deno2/deno_test.cc +++ b/deno2/deno_test.cc @@ -4,9 +4,11 @@ #include "include/deno.h" -TEST(SnapshotTest, InitializesCorrectly) { - EXPECT_TRUE(true); - // TODO(ry) add actual tests +TEST(DenoTest, InitializesCorrectly) { + deno_init(); + Deno* d = deno_new(NULL, NULL); + int r = deno_load(d, "a.js", "1 + 2"); + EXPECT_EQ(r, 0); } int main(int argc, char** argv) { From 041e503838d1f030faca08d93de4aaadf0bc4b98 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sun, 10 Jun 2018 14:34:59 +0200 Subject: [PATCH 15/44] Minor libdeno clean ups. --- deno2/deno.cc | 4 ++-- deno2/from_snapshot.cc | 3 --- deno2/include/deno.h | 6 ++---- deno2/snapshot_creator.cc | 2 +- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 6b26077be0..60ee5cae5f 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -262,9 +262,9 @@ void deno_init() { v8::V8::Initialize(); } -const char* v8_version() { return v8::V8::GetVersion(); } +const char* deno_v8_version() { return v8::V8::GetVersion(); } -void v8_set_flags(int* argc, char** argv) { +void deno_set_flags(int* argc, char** argv) { v8::V8::SetFlagsFromCommandLine(argc, argv, true); } diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index 1a55a1ef06..bec29d2dca 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -18,10 +18,7 @@ namespace deno { Deno* NewFromSnapshot(void* data, RecvCallback cb) { auto natives_blob = *StartupBlob_natives(); - printf("natives_blob %d bytes\n", natives_blob.raw_size); - auto snapshot_blob = *StartupBlob_snapshot(); - printf("snapshot_blob %d bytes\n", snapshot_blob.raw_size); v8::V8::SetNativesDataBlob(&natives_blob); v8::V8::SetSnapshotDataBlob(&snapshot_blob); diff --git a/deno2/include/deno.h b/deno2/include/deno.h index 5dd4e68536..caf6ee9746 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -21,14 +21,12 @@ typedef struct deno_s Deno; typedef deno_buf (*RecvCallback)(Deno* d, deno_buf buf); void deno_init(); -const char* v8_version(); -void v8_set_flags(int* argc, char** argv); +const char* deno_v8_version(); +void deno_set_flags(int* argc, char** argv); // Constructor Deno* deno_new(void* data, RecvCallback cb); -void* deno_get_data(); - // Returns nonzero on error. // Get error text with deno_last_exception(). int deno_load(Deno* d, const char* name_s, const char* source_s); diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index fc43783e25..bf377535af 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -31,7 +31,7 @@ class StartupDataCppWriter { printf("Unable to open file \"%s\" for writing.\n", filename_); exit(1); } - printf("Wrote %s %d %s \n", name_, sd_.raw_size, filename_); + // printf("Wrote %s %d %s \n", name_, sd_.raw_size, filename_); } private: From 2791a49ecff8f1ec0f83e4df8167dd545173b916 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 16:48:21 +0200 Subject: [PATCH 16/44] s/RecvCallback/deno_recv_cb/g --- deno2/deno_internal.h | 5 ++--- deno2/from_snapshot.cc | 5 ++--- deno2/include/deno.h | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h index 92f891af38..8472f4264f 100644 --- a/deno2/deno_internal.h +++ b/deno2/deno_internal.h @@ -8,14 +8,13 @@ #include "v8/include/v8.h" extern "C" { - // deno_s = Wrapped Isolate. struct deno_s { v8::Isolate* isolate; std::string last_exception; v8::Persistent recv; v8::Persistent context; - RecvCallback cb; + deno_recv_cb cb; void* data; }; } @@ -29,7 +28,7 @@ static intptr_t external_references[] = {reinterpret_cast(Print), reinterpret_cast(Recv), reinterpret_cast(Send), 0}; -Deno* NewFromSnapshot(void* data, RecvCallback cb); +Deno* NewFromSnapshot(void* data, deno_recv_cb cb); v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, v8::StartupData* prev_snapshot_blob, diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index bec29d2dca..db5b0fc8e9 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -16,7 +16,7 @@ namespace deno { #include "natives_deno.cc" #include "snapshot_deno.cc" -Deno* NewFromSnapshot(void* data, RecvCallback cb) { +Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { auto natives_blob = *StartupBlob_natives(); auto snapshot_blob = *StartupBlob_snapshot(); @@ -46,8 +46,7 @@ Deno* NewFromSnapshot(void* data, RecvCallback cb) { } // namespace deno extern "C" { - -Deno* deno_new(void* data, RecvCallback cb) { +Deno* deno_new(void* data, deno_recv_cb cb) { return deno::NewFromSnapshot(data, cb); } } diff --git a/deno2/include/deno.h b/deno2/include/deno.h index caf6ee9746..fb00385492 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -18,14 +18,14 @@ struct deno_s; typedef struct deno_s Deno; // The callback from V8 when data is sent. -typedef deno_buf (*RecvCallback)(Deno* d, deno_buf buf); +typedef deno_buf (*deno_recv_cb)(Deno* d, deno_buf buf); void deno_init(); const char* deno_v8_version(); void deno_set_flags(int* argc, char** argv); // Constructor -Deno* deno_new(void* data, RecvCallback cb); +Deno* deno_new(void* data, deno_recv_cb cb); // Returns nonzero on error. // Get error text with deno_last_exception(). From e4735884c085b717a1c973f083a1277da2b0858f Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 17:01:12 +0200 Subject: [PATCH 17/44] Link msg.proto to root dir --- deno2/msg.proto | 103 +----------------------------------------------- 1 file changed, 1 insertion(+), 102 deletions(-) mode change 100644 => 120000 deno2/msg.proto diff --git a/deno2/msg.proto b/deno2/msg.proto deleted file mode 100644 index 755d22e535..0000000000 --- a/deno2/msg.proto +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2018 Ryan Dahl -// All rights reserved. MIT License. -syntax = "proto3"; -package main; -option go_package = "deno"; - -message BaseMsg { - string channel = 1; - bytes payload = 2; -} - -message Msg { - enum Command { - ERROR = 0; - START = 1; - CODE_FETCH = 2; - CODE_FETCH_RES = 3; - CODE_CACHE = 4; - EXIT = 5; - TIMER_START = 6; - TIMER_READY = 7; - TIMER_CLEAR = 8; - FETCH_REQ = 9; - FETCH_RES = 10; - READ_FILE_SYNC = 11; - READ_FILE_SYNC_RES = 12; - WRITE_FILE_SYNC = 13; - } - Command command = 1; - - // We avoid creating a message for each command (and use oneof or any types) - // In order to reduce code in the size of the generated javascript - // "msg.pb.js". It seems that each new message adds 20k and we want to - // potentially add many hundreds of commands. Therefore we just prefix command - // arguments by their name. - - // ERROR - string error = 2; - - // START - string start_cwd = 10; - repeated string start_argv = 11; - bool start_debug_flag = 12; - string start_main_js = 13; // The contents of dist/main.js - string start_main_map = 14; // The contents of dist/main.map - - // CODE_FETCH - string code_fetch_module_specifier = 20; - string code_fetch_containing_file = 21; - - // CODE_FETCH_RES - // If it's a non-http module, moduleName and filename will be the same. - // For http modules, moduleName is its resolved http URL, and filename - // is the location of the locally downloaded source code. - string code_fetch_res_module_name = 30; - string code_fetch_res_filename = 31; - string code_fetch_res_source_code = 32; - string code_fetch_res_output_code = 33; // Non-empty only if cached. - - // CODE_CACHE - string code_cache_filename = 41; - string code_cache_source_code = 42; - string code_cache_output_code = 43; - - // EXIT - int32 exit_code = 50; - - // TIMER_START - int32 timer_start_id = 60; - bool timer_start_interval = 61; - int32 timer_start_duration = 62; // In milliseconds. - - // TIMER_READY - int32 timer_ready_id = 70; - bool timer_ready_done = 71; - - // TIMER_CLEAR - int32 timer_clear_id = 80; - - // FETCH_REQ - int32 fetch_req_id = 90; - string fetch_req_url = 91; - // repeated string fetch_req_header_line = 91 - - // FETCH_RES - int32 fetch_res_id = 100; - int32 fetch_res_status = 101; - repeated string fetch_res_header_line = 102; - bytes fetch_res_body = 103; - - // READ_FILE_SYNC - string read_file_sync_filename = 110; - - // READ_FILE_SYNC_RES - bytes read_file_sync_data = 120; - - // WRITE_FILE_SYNC - string write_file_sync_filename = 130; - bytes write_file_sync_data = 131; - uint32 write_file_sync_perm = 132; - // write_file_sync_perm specified by https://godoc.org/os#FileMode -} diff --git a/deno2/msg.proto b/deno2/msg.proto new file mode 120000 index 0000000000..e0ce41a3af --- /dev/null +++ b/deno2/msg.proto @@ -0,0 +1 @@ +../msg.proto \ No newline at end of file From 05ff9c85a14d981b79295c74892b48105410ac63 Mon Sep 17 00:00:00 2001 From: kizerkizer Date: Sun, 10 Jun 2018 18:31:24 -0500 Subject: [PATCH 18/44] Use template literals instead of string concatenation (#176) --- globals.ts | 4 ++-- runtime.ts | 2 +- util.ts | 2 +- v8_source_maps.ts | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/globals.ts b/globals.ts index b8944b4beb..896c2a0eb3 100644 --- a/globals.ts +++ b/globals.ts @@ -31,13 +31,13 @@ _global["console"] = { // tslint:disable-next-line:no-any error(...args: any[]): void { - print("ERROR: " + stringifyArgs(args)); + print(`ERROR: ${stringifyArgs(args)}`); }, // tslint:disable-next-line:no-any assert(condition: boolean, ...args: any[]): void { if (!condition) { - throw new Error("Assertion failed: " + stringifyArgs(args)); + throw new Error(`Assertion failed: ${stringifyArgs(args)}`); } } }; diff --git a/runtime.ts b/runtime.ts index 8929b7112c..46538c80fa 100644 --- a/runtime.ts +++ b/runtime.ts @@ -181,7 +181,7 @@ function resolveModuleName( function execute(fileName: string, outputCode: string): void { util.assert(outputCode && outputCode.length > 0); _global["define"] = makeDefine(fileName); - outputCode += "\n//# sourceURL=" + fileName; + outputCode += `\n//# sourceURL=${fileName}`; globalEval(outputCode); _global["define"] = null; } diff --git a/util.ts b/util.ts index 7ac7b155ca..70cb79a554 100644 --- a/util.ts +++ b/util.ts @@ -14,7 +14,7 @@ export function log(...args: any[]): void { export function assert(cond: boolean, msg = "") { if (!cond) { - throw Error("Assert fail. " + msg); + throw Error(`Assert fail. ${msg}`); } } diff --git a/v8_source_maps.ts b/v8_source_maps.ts index 7209e192c4..0b7fc4e862 100644 --- a/v8_source_maps.ts +++ b/v8_source_maps.ts @@ -53,7 +53,7 @@ export function prepareStackTraceWrapper( export function prepareStackTrace(error: Error, stack: CallSite[]): string { const frames = stack.map( - (frame: CallSite) => "\n at " + wrapCallSite(frame).toString() + (frame: CallSite) => `\n at ${wrapCallSite(frame).toString()}` ); return error.toString() + frames.join(""); } @@ -162,7 +162,7 @@ function CallSiteToString(frame: CallSite): string { functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1 ) { - line += " [as " + methodName + "]"; + line += ` [as ${ methodName} ]`; } } else { line += typeName + "." + (methodName || ""); @@ -176,7 +176,7 @@ function CallSiteToString(frame: CallSite): string { addSuffix = false; } if (addSuffix) { - line += " (" + fileLocation + ")"; + line += ` (${fileLocation})`; } return line; } @@ -265,7 +265,7 @@ function mapEvalOrigin(origin: string): string { // Parse nested eval() calls using recursion match = /^eval at ([^(]+) \((.+)\)$/.exec(origin); if (match) { - return "eval at " + match[1] + " (" + mapEvalOrigin(match[2]) + ")"; + return `eval at ${match[1]} (${mapEvalOrigin(match[2])})`; } // Make sure we still return useful information if we didn't find anything From 9800339439d7ecffc8aa6e746643b75d4e23ea17 Mon Sep 17 00:00:00 2001 From: chainhelen Date: Wed, 6 Jun 2018 12:28:36 +0800 Subject: [PATCH 19/44] fetch:Avoid duplicate import about util --- fetch.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fetch.ts b/fetch.ts index 42acfa22f0..1a722031e3 100644 --- a/fetch.ts +++ b/fetch.ts @@ -1,7 +1,12 @@ // Copyright 2018 Ryan Dahl // All rights reserved. MIT License. -import { assert, log, createResolvable, Resolvable } from "./util"; -import * as util from "./util"; +import { + assert, + log, + createResolvable, + Resolvable, + typedArrayToArrayBuffer +} from "./util"; import { pubInternal, sub } from "./dispatch"; import { main as pb } from "./msg.pb"; @@ -84,7 +89,7 @@ class FetchResponse implements Response { this.onHeader(this); } else { // Body message. Assuming it all comes in one message now. - const ab = util.typedArrayToArrayBuffer(msg.fetchResBody); + const ab = typedArrayToArrayBuffer(msg.fetchResBody); this.bodyWaiter.resolve(ab); } } From cc29542ad87fba6d605e65f468f1943bf8e200cb Mon Sep 17 00:00:00 2001 From: "Kevin (Kun) \"Kassimo\" Qian" Date: Tue, 5 Jun 2018 01:22:39 -0700 Subject: [PATCH 20/44] Improve console and stringify. --- Makefile | 1 + console.ts | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++ globals.ts | 35 +-------------- tests.ts | 71 +++++++++++++++++++++++++++++++ 4 files changed, 197 insertions(+), 33 deletions(-) create mode 100644 console.ts diff --git a/Makefile b/Makefile index 6fa145e226..d01d4bf132 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ TS_FILES = \ + console.ts \ deno.d.ts \ deno.ts \ dispatch.ts \ diff --git a/console.ts b/console.ts new file mode 100644 index 0000000000..0d1585bc89 --- /dev/null +++ b/console.ts @@ -0,0 +1,123 @@ +const print = V8Worker2.print; + +// tslint:disable-next-line:no-any +type ConsoleContext = Set; + +// tslint:disable-next-line:no-any +function getClassInstanceName(instance: any): string { + if (typeof instance !== "object") { + return ""; + } + if (instance && instance.__proto__ && instance.__proto__.constructor) { + return instance.__proto__.constructor.name; // could be "Object" or "Array" + } + return ""; +} + +// tslint:disable-next-line:no-any +function stringify(ctx: ConsoleContext, value: any): string { + switch (typeof value) { + case "string": + return value; + case "number": + case "boolean": + case "undefined": + case "symbol": + return String(value); + case "function": + if (value.name && value.name !== "anonymous") { // from MDN spec + return `[Function: ${value.name}]`; + } + return "[Function]"; + case "object": + if (value === null) { + return "null"; + } + + if (ctx.has(value)) { + return "[Circular]"; + } + + ctx.add(value); + const entries: string[] = []; + + if (Array.isArray(value)) { + for (const el of value) { + entries.push(stringify(ctx, el)); + } + + ctx.delete(value); + + if (entries.length === 0) { + return "[]"; + } + return `[ ${entries.join(", ")} ]`; + } else { + let baseString = ""; + + const className = getClassInstanceName(value); + let shouldShowClassName = false; + if (className && className !== "Object" && className !== "anonymous") { + shouldShowClassName = true; + } + + for (const key of Object.keys(value)) { + entries.push(`${key}: ${stringify(ctx, value[key])}`); + } + + ctx.delete(value); + + if (entries.length === 0) { + baseString = "{}"; + } else { + baseString = `{ ${entries.join(", ")} }`; + } + + if (shouldShowClassName) { + baseString = `${className} ${baseString}`; + } + + return baseString; + } + default: + return "[Not Implemented]"; + } +} + +// tslint:disable-next-line:no-any +function stringifyArgs(args: any[]): string { + const out: string[] = []; + for (const a of args) { + if (typeof a === "string") { + out.push(a); + } else { + // tslint:disable-next-line:no-any + out.push(stringify(new Set(), a)); + } + } + return out.join(" "); +} + +export class Console { + // tslint:disable-next-line:no-any + log(...args: any[]): void { + print(stringifyArgs(args)); + } + + debug = this.log; + info = this.log; + + // tslint:disable-next-line:no-any + warn(...args: any[]): void { + print(`ERROR: ${stringifyArgs(args)}`); + } + + error = this.warn; + + // tslint:disable-next-line:no-any + assert(condition: boolean, ...args: any[]): void { + if (!condition) { + throw new Error(`Assertion failed: ${stringifyArgs(args)}`); + } + } +} diff --git a/globals.ts b/globals.ts index 896c2a0eb3..cca72d172d 100644 --- a/globals.ts +++ b/globals.ts @@ -21,39 +21,8 @@ _global["setInterval"] = timer.setInterval; _global["clearTimeout"] = timer.clearTimer; _global["clearInterval"] = timer.clearTimer; -const print = V8Worker2.print; - -_global["console"] = { - // tslint:disable-next-line:no-any - log(...args: any[]): void { - print(stringifyArgs(args)); - }, - - // tslint:disable-next-line:no-any - error(...args: any[]): void { - print(`ERROR: ${stringifyArgs(args)}`); - }, - - // tslint:disable-next-line:no-any - assert(condition: boolean, ...args: any[]): void { - if (!condition) { - throw new Error(`Assertion failed: ${stringifyArgs(args)}`); - } - } -}; - -// tslint:disable-next-line:no-any -function stringifyArgs(args: any[]): string { - const out: string[] = []; - for (const a of args) { - if (typeof a === "string") { - out.push(a); - } else { - out.push(JSON.stringify(a)); - } - } - return out.join(" "); -} +import { Console } from "./console"; +_global["console"] = new Console(); import { fetch } from "./fetch"; _global["fetch"] = fetch; diff --git a/tests.ts b/tests.ts index 406ac76e86..f1412e1527 100644 --- a/tests.ts +++ b/tests.ts @@ -55,3 +55,74 @@ test(async function tests_writeFileSync() { const actual = dec.decode(dataRead); assertEqual("Hello", actual); }); + +test(function tests_console_assert() { + console.assert(true); + + let hasThrown = false; + try { + console.assert(false); + } catch { + hasThrown = true; + } + assertEqual(hasThrown, true); +}); + +test(function tests_console_stringify_circular() { + class Base { + a = 1; + m1() {} + } + + class Extended extends Base { + b = 2; + m2() {} + } + + // tslint:disable-next-line:no-any + const nestedObj: any = { + num: 1, + bool: true, + str: "a", + method() {}, + un: undefined, + nu: null, + arrowFunc: () => {}, + extendedClass: new Extended(), + nFunc: new Function(), + extendedCstr: Extended, + }; + + const circularObj = { + num: 2, + bool: false, + str: "b", + method() {}, + un: undefined, + nu: null, + nested: nestedObj, + emptyObj: {}, + arr: [1, "s", false, null, nestedObj], + baseClass: new Base(), + }; + + nestedObj.o = circularObj; + + try { + console.log(1); + console.log("s"); + console.log(false); + console.log(Symbol(1)); + console.log(null); + console.log(undefined); + console.log(new Extended()); + console.log(function f() {}); + console.log(nestedObj); + console.log(JSON); + console.log(console); + } catch { + throw new Error( + "Expected no crash on circular object" + ); + } +}); From b042c7c071827fd516bf7b5b52f2aed0473691e1 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 13:16:14 +0200 Subject: [PATCH 21/44] Run 'make fmt' --- console.ts | 3 ++- fetch.ts | 10 +++++----- tests.ts | 8 +++----- v8_source_maps.ts | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/console.ts b/console.ts index 0d1585bc89..af92c88711 100644 --- a/console.ts +++ b/console.ts @@ -25,7 +25,8 @@ function stringify(ctx: ConsoleContext, value: any): string { case "symbol": return String(value); case "function": - if (value.name && value.name !== "anonymous") { // from MDN spec + if (value.name && value.name !== "anonymous") { + // from MDN spec return `[Function: ${value.name}]`; } return "[Function]"; diff --git a/fetch.ts b/fetch.ts index 1a722031e3..a7782af98b 100644 --- a/fetch.ts +++ b/fetch.ts @@ -1,11 +1,11 @@ // Copyright 2018 Ryan Dahl // All rights reserved. MIT License. import { - assert, - log, - createResolvable, - Resolvable, - typedArrayToArrayBuffer + assert, + log, + createResolvable, + Resolvable, + typedArrayToArrayBuffer } from "./util"; import { pubInternal, sub } from "./dispatch"; import { main as pb } from "./msg.pb"; diff --git a/tests.ts b/tests.ts index f1412e1527..22bf77a6c9 100644 --- a/tests.ts +++ b/tests.ts @@ -90,7 +90,7 @@ test(function tests_console_stringify_circular() { arrowFunc: () => {}, extendedClass: new Extended(), nFunc: new Function(), - extendedCstr: Extended, + extendedCstr: Extended }; const circularObj = { @@ -103,7 +103,7 @@ test(function tests_console_stringify_circular() { nested: nestedObj, emptyObj: {}, arr: [1, "s", false, null, nestedObj], - baseClass: new Base(), + baseClass: new Base() }; nestedObj.o = circularObj; @@ -121,8 +121,6 @@ test(function tests_console_stringify_circular() { console.log(JSON); console.log(console); } catch { - throw new Error( - "Expected no crash on circular object" - ); + throw new Error("Expected no crash on circular object"); } }); diff --git a/v8_source_maps.ts b/v8_source_maps.ts index 0b7fc4e862..2384f34dc8 100644 --- a/v8_source_maps.ts +++ b/v8_source_maps.ts @@ -162,7 +162,7 @@ function CallSiteToString(frame: CallSite): string { functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1 ) { - line += ` [as ${ methodName} ]`; + line += ` [as ${methodName} ]`; } } else { line += typeName + "." + (methodName || ""); From 0e07e16dd63992f5f989dc99c891d53d930a2d5b Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 17:01:35 +0200 Subject: [PATCH 22/44] Add mock_runtime_test. --- deno2/BUILD.gn | 46 +++++++++++++++++++++++--------------- deno2/deno.cc | 9 ++------ deno2/deno_test.cc | 17 -------------- deno2/from_snapshot.cc | 6 +++++ deno2/include/deno.h | 4 ++-- deno2/js/mock_runtime.js | 9 ++++++++ deno2/mock_runtime_test.cc | 26 +++++++++++++++++++++ 7 files changed, 73 insertions(+), 44 deletions(-) delete mode 100644 deno2/deno_test.cc create mode 100644 deno2/js/mock_runtime.js create mode 100644 deno2/mock_runtime_test.cc diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index 16b1114c54..ef81a94d9d 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -11,21 +11,30 @@ executable("deno") { ] } -executable("deno_test") { +executable("mock_runtime_test") { testonly = true sources = [ - "deno_test.cc", + "from_snapshot.cc", + "mock_runtime_test.cc", ] deps = [ - ":libdeno", + ":create_snapshot_mock_runtime", + ":deno_nosnapshot", "//testing/gtest:gtest", ] + include_dirs = [ target_gen_dir ] + defines = [ "DENO_MOCK_RUNTIME" ] } component("libdeno") { - deps = [ - ":deno_snapshot", + sources = [ + "from_snapshot.cc", ] + deps = [ + ":create_snapshot_deno", + ":deno_nosnapshot", + ] + include_dirs = [ target_gen_dir ] } source_set("deno_nosnapshot") { @@ -44,17 +53,6 @@ source_set("deno_nosnapshot") { ] } -source_set("deno_snapshot") { - sources = [ - "from_snapshot.cc", - ] - deps = [ - ":create_snapshot_deno", - ":deno_nosnapshot", - ] - include_dirs = [ target_gen_dir ] -} - executable("snapshot_creator") { sources = [ "snapshot_creator.cc", @@ -109,8 +107,13 @@ template("create_snapshot") { name = target_name suffix = "_$name" action("create_snapshot_" + name) { + forward_variables_from(invoker, + [ + "testonly", + "deps", + ]) visibility = [ ":*" ] # Only targets in this file can depend on this. - deps = [ ":snapshot_creator" ] + invoker.deps + deps += [ ":snapshot_creator" ] script = "v8/tools/run.py" data = [] exe = rebase_path(get_label_info(":snapshot_creator", "root_out_dir") + @@ -140,10 +143,17 @@ template("create_snapshot") { } } -# Generates $target_gen_dir/snapshot_bundle.cc +# Generates $target_gen_dir/snapshot_deno.cc create_snapshot("deno") { js = "$target_gen_dir/main.js" deps = [ ":run_parcel", ] } + +# Generates $target_gen_dir/snapshot_mock_runtime.cc +create_snapshot("mock_runtime") { + testonly = true + js = "js/mock_runtime.js" + deps = [] +} diff --git a/deno2/deno.cc b/deno2/deno.cc index 60ee5cae5f..7bca590a70 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -46,7 +46,6 @@ static inline v8::Local v8_str(const char* x) { .ToLocalChecked(); } -// Exits the process. void HandleException(v8::Local context, v8::Local exception) { auto* isolate = context->GetIsolate(); @@ -73,8 +72,6 @@ void HandleException(v8::Local context, printf("Unhandled Exception %s\n", ToCString(exceptionStr)); message->PrintCurrentStackTrace(isolate, stdout); } - - exit(1); } /* @@ -181,7 +178,6 @@ bool Load(v8::Local context, const char* name_s, if (script.IsEmpty()) { assert(try_catch.HasCaught()); HandleException(context, try_catch.Exception()); - assert(false); return false; } @@ -190,7 +186,6 @@ bool Load(v8::Local context, const char* name_s, if (result.IsEmpty()) { assert(try_catch.HasCaught()); HandleException(context, try_catch.Exception()); - assert(false); return false; } @@ -270,13 +265,13 @@ void deno_set_flags(int* argc, char** argv) { const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } -int deno_load(Deno* d, const char* name_s, const char* source_s) { +bool deno_load(Deno* d, const char* name_s, const char* source_s) { auto* isolate = d->isolate; v8::Locker locker(isolate); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); auto context = d->context.Get(d->isolate); - return deno::Load(context, name_s, source_s) ? 0 : 1; + return deno::Load(context, name_s, source_s); } // Called from golang. Must route message to javascript lang. diff --git a/deno2/deno_test.cc b/deno2/deno_test.cc deleted file mode 100644 index 0b570a4b52..0000000000 --- a/deno2/deno_test.cc +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Ryan Dahl -// All rights reserved. MIT License. -#include "testing/gtest/include/gtest/gtest.h" - -#include "include/deno.h" - -TEST(DenoTest, InitializesCorrectly) { - deno_init(); - Deno* d = deno_new(NULL, NULL); - int r = deno_load(d, "a.js", "1 + 2"); - EXPECT_EQ(r, 0); -} - -int main(int argc, char** argv) { - testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index db5b0fc8e9..3c15cdc77d 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -13,8 +13,13 @@ namespace deno { +#ifdef DENO_MOCK_RUNTIME +#include "natives_mock_runtime.cc" +#include "snapshot_mock_runtime.cc" +#else #include "natives_deno.cc" #include "snapshot_deno.cc" +#endif Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { auto natives_blob = *StartupBlob_natives(); @@ -33,6 +38,7 @@ Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { v8::Isolate* isolate = v8::Isolate::New(params); AddIsolate(d, isolate); + v8::Locker locker(isolate); v8::Isolate::Scope isolate_scope(isolate); { v8::HandleScope handle_scope(isolate); diff --git a/deno2/include/deno.h b/deno2/include/deno.h index fb00385492..1a42ec2b1e 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -27,9 +27,9 @@ void deno_set_flags(int* argc, char** argv); // Constructor Deno* deno_new(void* data, deno_recv_cb cb); -// Returns nonzero on error. +// Returns false on error. // Get error text with deno_last_exception(). -int deno_load(Deno* d, const char* name_s, const char* source_s); +bool deno_load(Deno* d, const char* name_s, const char* source_s); // Returns nonzero on error. int deno_send(Deno* d, deno_buf buf); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js new file mode 100644 index 0000000000..a91546f859 --- /dev/null +++ b/deno2/js/mock_runtime.js @@ -0,0 +1,9 @@ +// A simple runtime that doesn't involve typescript or protobufs to test +// libdeno. +const globalEval = eval; +const window = globalEval("this"); +window['foo'] = () => { + deno_print("Hello world from foo"); + return "foo"; +} + diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc new file mode 100644 index 0000000000..951710fb92 --- /dev/null +++ b/deno2/mock_runtime_test.cc @@ -0,0 +1,26 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +#include "testing/gtest/include/gtest/gtest.h" + +#include "include/deno.h" + +TEST(MockRuntimeTest, InitializesCorrectly) { + Deno* d = deno_new(NULL, NULL); + EXPECT_TRUE(deno_load(d, "a.js", "1 + 2")); +} + +TEST(MockRuntimeTest, CanCallFoo) { + Deno* d = deno_new(NULL, NULL); + EXPECT_TRUE(deno_load(d, "a.js", "if (foo() != 'foo') throw Error();")); +} + +TEST(MockRuntimeTest, ErrorsCorrectly) { + Deno* d = deno_new(NULL, NULL); + EXPECT_FALSE(deno_load(d, "a.js", "throw Error()")); +} + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + deno_init(); + return RUN_ALL_TESTS(); +} From cbbe8ad9992765bc0883759e4075cf7a4a1918ff Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 18:17:28 +0200 Subject: [PATCH 23/44] Add deno_send tests. --- deno2/deno.cc | 15 ++++++++------- deno2/include/deno.h | 5 +++-- deno2/js/mock_runtime.js | 10 ++++++++++ deno2/mock_runtime_test.cc | 24 ++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 9 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 7bca590a70..4fa5b21018 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -274,9 +274,10 @@ bool deno_load(Deno* d, const char* name_s, const char* source_s) { return deno::Load(context, name_s, source_s); } -// Called from golang. Must route message to javascript lang. -// non-zero return value indicates error. check deno_last_exception(). -int deno_send(Deno* d, deno_buf buf) { +// Routes message to the javascript callback set with deno_recv(). +// False return value indicates error. Check deno_last_exception() for exception +// text. +bool deno_send(Deno* d, deno_buf buf) { v8::Locker locker(d->isolate); v8::Isolate::Scope isolate_scope(d->isolate); v8::HandleScope handle_scope(d->isolate); @@ -289,8 +290,8 @@ int deno_send(Deno* d, deno_buf buf) { v8::Local recv = v8::Local::New(d->isolate, d->recv); if (recv.IsEmpty()) { - d->last_exception = "V8Deno2.recv has not been called."; - return 1; + d->last_exception = "deno_recv has not been called."; + return false; } v8::Local args[1]; @@ -303,10 +304,10 @@ int deno_send(Deno* d, deno_buf buf) { if (try_catch.HasCaught()) { deno::HandleException(context, try_catch.Exception()); - return 2; + return false; } - return 0; + return true; } void deno_dispose(Deno* d) { diff --git a/deno2/include/deno.h b/deno2/include/deno.h index 1a42ec2b1e..f67a7cf51d 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -31,8 +31,9 @@ Deno* deno_new(void* data, deno_recv_cb cb); // Get error text with deno_last_exception(). bool deno_load(Deno* d, const char* name_s, const char* source_s); -// Returns nonzero on error. -int deno_send(Deno* d, deno_buf buf); +// Returns false on error. +// Get error text with deno_last_exception(). +bool deno_send(Deno* d, deno_buf buf); const char* deno_last_exception(Deno* d); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index a91546f859..cd97666851 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -7,3 +7,13 @@ window['foo'] = () => { return "foo"; } +function assert(cond) { + if (!cond) throw Error("assert failed"); +} + +function recvabc() { + deno_recv((msg) => { + assert(msg instanceof ArrayBuffer); + assert(msg.byteLength === 3); + }); +} diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 951710fb92..00651f68ee 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -19,6 +19,30 @@ TEST(MockRuntimeTest, ErrorsCorrectly) { EXPECT_FALSE(deno_load(d, "a.js", "throw Error()")); } +deno_buf strbuf(const char* str) { + void* d = reinterpret_cast(const_cast(str)); + return deno_buf{d, strlen(str)}; +} + +TEST(MockRuntimeTest, SendSuccess) { + Deno* d = deno_new(NULL, NULL); + EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); + EXPECT_TRUE(deno_send(d, strbuf("abc"))); +} + +TEST(MockRuntimeTest, SendByteLength) { + Deno* d = deno_new(NULL, NULL); + EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); + // We send the wrong sized message, it should throw. + EXPECT_FALSE(deno_send(d, strbuf("abcd"))); +} + +TEST(MockRuntimeTest, SendNoCallback) { + Deno* d = deno_new(NULL, NULL); + // We didn't call deno_recv(), sending should fail. + EXPECT_FALSE(deno_send(d, strbuf("abc"))); +} + int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); deno_init(); From 9590c87c623ba9654f332e26ba10370915e7ade9 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 19:05:27 +0200 Subject: [PATCH 24/44] Add deno_dispose to tests. And fix ArrayBuffer memory problem. --- deno2/deno.cc | 12 +++++++----- deno2/js/mock_runtime.js | 5 ++--- deno2/mock_runtime_test.cc | 6 ++++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 4fa5b21018..0c9bbd9185 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -276,7 +276,7 @@ bool deno_load(Deno* d, const char* name_s, const char* source_s) { // Routes message to the javascript callback set with deno_recv(). // False return value indicates error. Check deno_last_exception() for exception -// text. +// text. Caller owns buf. bool deno_send(Deno* d, deno_buf buf) { v8::Locker locker(d->isolate); v8::Isolate::Scope isolate_scope(d->isolate); @@ -287,16 +287,18 @@ bool deno_send(Deno* d, deno_buf buf) { v8::TryCatch try_catch(d->isolate); - v8::Local recv = - v8::Local::New(d->isolate, d->recv); + auto recv = d->recv.Get(d->isolate); if (recv.IsEmpty()) { d->last_exception = "deno_recv has not been called."; return false; } + // TODO(ry) support zero copy. + auto ab = v8::ArrayBuffer::New(d->isolate, buf.len); + memcpy(ab->GetContents().Data(), buf.data, buf.len); + v8::Local args[1]; - args[0] = v8::ArrayBuffer::New(d->isolate, buf.data, buf.len, - v8::ArrayBufferCreationMode::kInternalized); + args[0] = ab; assert(!args[0].IsEmpty()); assert(!try_catch.HasCaught()); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index cd97666851..cdb6031e31 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -1,14 +1,13 @@ // A simple runtime that doesn't involve typescript or protobufs to test // libdeno. -const globalEval = eval; -const window = globalEval("this"); +const window = eval("this"); window['foo'] = () => { deno_print("Hello world from foo"); return "foo"; } function assert(cond) { - if (!cond) throw Error("assert failed"); + if (!cond) throw Error("mock_runtime.js assert failed"); } function recvabc() { diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 00651f68ee..22b5962753 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -7,16 +7,19 @@ TEST(MockRuntimeTest, InitializesCorrectly) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_load(d, "a.js", "1 + 2")); + deno_dispose(d); } TEST(MockRuntimeTest, CanCallFoo) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_load(d, "a.js", "if (foo() != 'foo') throw Error();")); + deno_dispose(d); } TEST(MockRuntimeTest, ErrorsCorrectly) { Deno* d = deno_new(NULL, NULL); EXPECT_FALSE(deno_load(d, "a.js", "throw Error()")); + deno_dispose(d); } deno_buf strbuf(const char* str) { @@ -28,6 +31,7 @@ TEST(MockRuntimeTest, SendSuccess) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); EXPECT_TRUE(deno_send(d, strbuf("abc"))); + deno_dispose(d); } TEST(MockRuntimeTest, SendByteLength) { @@ -35,12 +39,14 @@ TEST(MockRuntimeTest, SendByteLength) { EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); // We send the wrong sized message, it should throw. EXPECT_FALSE(deno_send(d, strbuf("abcd"))); + deno_dispose(d); } TEST(MockRuntimeTest, SendNoCallback) { Deno* d = deno_new(NULL, NULL); // We didn't call deno_recv(), sending should fail. EXPECT_FALSE(deno_send(d, strbuf("abc"))); + deno_dispose(d); } int main(int argc, char** argv) { From 2443f7efee9c04f9331743a5e7ca5c71396f2004 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 19:18:53 +0200 Subject: [PATCH 25/44] Use pub/sub instead of send/recv --- deno2/deno.cc | 32 ++++++++++++++++---------------- deno2/deno_internal.h | 14 +++++++------- deno2/from_snapshot.cc | 4 ++-- deno2/include/deno.h | 6 +++--- deno2/js/mock_runtime.js | 4 ++-- deno2/mock_runtime_test.cc | 20 ++++++++++---------- 6 files changed, 40 insertions(+), 40 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 0c9bbd9185..e158a0e9a3 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -109,8 +109,8 @@ void Print(const v8::FunctionCallbackInfo& args) { fflush(stdout); } -// Sets the recv callback. -void Recv(const v8::FunctionCallbackInfo& args) { +// Sets the sub callback. +void Sub(const v8::FunctionCallbackInfo& args) { v8::Isolate* isolate = args.GetIsolate(); Deno* d = reinterpret_cast(isolate->GetData(0)); assert(d->isolate == isolate); @@ -121,11 +121,11 @@ void Recv(const v8::FunctionCallbackInfo& args) { assert(v->IsFunction()); v8::Local func = v8::Local::Cast(v); - d->recv.Reset(isolate, func); + d->sub.Reset(isolate, func); } // Called from JavaScript, routes message to golang. -void Send(const v8::FunctionCallbackInfo& args) { +void Pub(const v8::FunctionCallbackInfo& args) { v8::Isolate* isolate = args.GetIsolate(); Deno* d = static_cast(isolate->GetData(0)); assert(d->isolate == isolate); @@ -213,13 +213,13 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, CHECK( global->Set(context, deno::v8_str("deno_print"), print_val).FromJust()); - auto recv_tmpl = v8::FunctionTemplate::New(isolate, Recv); - auto recv_val = recv_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, deno::v8_str("deno_recv"), recv_val).FromJust()); + auto sub_tmpl = v8::FunctionTemplate::New(isolate, Sub); + auto sub_val = sub_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, deno::v8_str("deno_sub"), sub_val).FromJust()); - auto send_tmpl = v8::FunctionTemplate::New(isolate, Send); - auto send_val = send_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, deno::v8_str("deno_send"), send_val).FromJust()); + auto pub_tmpl = v8::FunctionTemplate::New(isolate, Pub); + auto pub_val = pub_tmpl->GetFunction(context).ToLocalChecked(); + CHECK(global->Set(context, deno::v8_str("deno_pub"), pub_val).FromJust()); bool r = Load(context, js_filename, js_source); assert(r); @@ -274,10 +274,10 @@ bool deno_load(Deno* d, const char* name_s, const char* source_s) { return deno::Load(context, name_s, source_s); } -// Routes message to the javascript callback set with deno_recv(). +// Routes message to the javascript callback set with deno_sub(). // False return value indicates error. Check deno_last_exception() for exception // text. Caller owns buf. -bool deno_send(Deno* d, deno_buf buf) { +bool deno_pub(Deno* d, deno_buf buf) { v8::Locker locker(d->isolate); v8::Isolate::Scope isolate_scope(d->isolate); v8::HandleScope handle_scope(d->isolate); @@ -287,9 +287,9 @@ bool deno_send(Deno* d, deno_buf buf) { v8::TryCatch try_catch(d->isolate); - auto recv = d->recv.Get(d->isolate); - if (recv.IsEmpty()) { - d->last_exception = "deno_recv has not been called."; + auto sub = d->sub.Get(d->isolate); + if (sub.IsEmpty()) { + d->last_exception = "deno_sub has not been called."; return false; } @@ -302,7 +302,7 @@ bool deno_send(Deno* d, deno_buf buf) { assert(!args[0].IsEmpty()); assert(!try_catch.HasCaught()); - recv->Call(context->Global(), 1, args); + sub->Call(context->Global(), 1, args); if (try_catch.HasCaught()) { deno::HandleException(context, try_catch.Exception()); diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h index 8472f4264f..52c1770f69 100644 --- a/deno2/deno_internal.h +++ b/deno2/deno_internal.h @@ -12,9 +12,9 @@ extern "C" { struct deno_s { v8::Isolate* isolate; std::string last_exception; - v8::Persistent recv; + v8::Persistent sub; v8::Persistent context; - deno_recv_cb cb; + deno_sub_cb cb; void* data; }; } @@ -22,13 +22,13 @@ struct deno_s { namespace deno { void Print(const v8::FunctionCallbackInfo& args); -void Recv(const v8::FunctionCallbackInfo& args); -void Send(const v8::FunctionCallbackInfo& args); +void Sub(const v8::FunctionCallbackInfo& args); +void Pub(const v8::FunctionCallbackInfo& args); static intptr_t external_references[] = {reinterpret_cast(Print), - reinterpret_cast(Recv), - reinterpret_cast(Send), 0}; + reinterpret_cast(Sub), + reinterpret_cast(Pub), 0}; -Deno* NewFromSnapshot(void* data, deno_recv_cb cb); +Deno* NewFromSnapshot(void* data, deno_sub_cb cb); v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, v8::StartupData* prev_snapshot_blob, diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index 3c15cdc77d..adb404bf0e 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -21,7 +21,7 @@ namespace deno { #include "snapshot_deno.cc" #endif -Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { +Deno* NewFromSnapshot(void* data, deno_sub_cb cb) { auto natives_blob = *StartupBlob_natives(); auto snapshot_blob = *StartupBlob_snapshot(); @@ -52,7 +52,7 @@ Deno* NewFromSnapshot(void* data, deno_recv_cb cb) { } // namespace deno extern "C" { -Deno* deno_new(void* data, deno_recv_cb cb) { +Deno* deno_new(void* data, deno_sub_cb cb) { return deno::NewFromSnapshot(data, cb); } } diff --git a/deno2/include/deno.h b/deno2/include/deno.h index f67a7cf51d..c6bc82e265 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -18,14 +18,14 @@ struct deno_s; typedef struct deno_s Deno; // The callback from V8 when data is sent. -typedef deno_buf (*deno_recv_cb)(Deno* d, deno_buf buf); +typedef deno_buf (*deno_sub_cb)(Deno* d, deno_buf buf); void deno_init(); const char* deno_v8_version(); void deno_set_flags(int* argc, char** argv); // Constructor -Deno* deno_new(void* data, deno_recv_cb cb); +Deno* deno_new(void* data, deno_sub_cb cb); // Returns false on error. // Get error text with deno_last_exception(). @@ -33,7 +33,7 @@ bool deno_load(Deno* d, const char* name_s, const char* source_s); // Returns false on error. // Get error text with deno_last_exception(). -bool deno_send(Deno* d, deno_buf buf); +bool deno_pub(Deno* d, deno_buf buf); const char* deno_last_exception(Deno* d); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index cdb6031e31..b3ec7f0348 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -10,8 +10,8 @@ function assert(cond) { if (!cond) throw Error("mock_runtime.js assert failed"); } -function recvabc() { - deno_recv((msg) => { +function subabc() { + deno_sub((msg) => { assert(msg instanceof ArrayBuffer); assert(msg.byteLength === 3); }); diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 22b5962753..1d8a654574 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -27,25 +27,25 @@ deno_buf strbuf(const char* str) { return deno_buf{d, strlen(str)}; } -TEST(MockRuntimeTest, SendSuccess) { +TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); - EXPECT_TRUE(deno_send(d, strbuf("abc"))); + EXPECT_TRUE(deno_load(d, "a.js", "subabc();")); + EXPECT_TRUE(deno_pub(d, strbuf("abc"))); deno_dispose(d); } -TEST(MockRuntimeTest, SendByteLength) { +TEST(MockRuntimeTest, PubByteLength) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "recvabc();")); - // We send the wrong sized message, it should throw. - EXPECT_FALSE(deno_send(d, strbuf("abcd"))); + EXPECT_TRUE(deno_load(d, "a.js", "subabc();")); + // We pub the wrong sized message, it should throw. + EXPECT_FALSE(deno_pub(d, strbuf("abcd"))); deno_dispose(d); } -TEST(MockRuntimeTest, SendNoCallback) { +TEST(MockRuntimeTest, PubNoCallback) { Deno* d = deno_new(NULL, NULL); - // We didn't call deno_recv(), sending should fail. - EXPECT_FALSE(deno_send(d, strbuf("abc"))); + // We didn't call deno_sub(), pubing should fail. + EXPECT_FALSE(deno_pub(d, strbuf("abc"))); deno_dispose(d); } From 482fc3a2ce6ef6c3064486b2a8c3ddc51950a4c5 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 20:18:56 +0200 Subject: [PATCH 26/44] Add tests for deno_sub_cb. --- deno2/deno.cc | 16 ++++++---------- deno2/js/mock_runtime.js | 30 +++++++++++++++++++++++++++--- deno2/mock_runtime_test.cc | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 13 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index e158a0e9a3..c21dc43c02 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -144,17 +144,12 @@ void Pub(const v8::FunctionCallbackInfo& args) { auto retbuf = d->cb(d, deno_buf{buf, buflen}); if (retbuf.data) { - auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.data, retbuf.len, - v8::ArrayBufferCreationMode::kInternalized); - /* - // I'm slightly worried the above v8::ArrayBuffer construction leaks memory - // the following might be a safer way to do it. + // TODO(ry) Support zero-copy. auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.len); - auto contents = ab->GetContents(); - memcpy(contents.Data(), retbuf.data, retbuf.len); - free(retbuf.data); - */ + memcpy(ab->GetContents().Data(), retbuf.data, retbuf.len); args.GetReturnValue().Set(handle_scope.Escape(ab)); + } else { + args.GetReturnValue().Set(v8::Null(d->isolate)); } } @@ -207,7 +202,8 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, v8::Context::Scope context_scope(context); auto global = context->Global(); - + // TODO(ry) Add a global namespace object "deno" and move print, sub, and + // pub inside that object. auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); auto print_val = print_tmpl->GetFunction(context).ToLocalChecked(); CHECK( diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index b3ec7f0348..97688a08d9 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -1,18 +1,42 @@ // A simple runtime that doesn't involve typescript or protobufs to test // libdeno. const window = eval("this"); -window['foo'] = () => { +window["foo"] = () => { deno_print("Hello world from foo"); return "foo"; -} +}; function assert(cond) { if (!cond) throw Error("mock_runtime.js assert failed"); } function subabc() { - deno_sub((msg) => { + deno_sub(msg => { assert(msg instanceof ArrayBuffer); assert(msg.byteLength === 3); }); } + +function typedArrayToArrayBuffer(ta) { + return ta.buffer.slice(ta.byteOffset, ta.byteOffset + ta.byteLength); +} + +function pubReturnEmpty() { + const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); + const ab = typedArrayToArrayBuffer(ui8); + let r = deno_pub(ab); + assert(r == null); + r = deno_pub(ab); + assert(r == null); +} + +function pubReturnBar() { + const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); + const ab = typedArrayToArrayBuffer(ui8); + const r = deno_pub(ab); + assert(r instanceof ArrayBuffer); + assert(r.byteLength === 3); + const rui8 = new Uint8Array(r); + const rstr = String.fromCharCode(...rui8); + assert(rstr === "bar"); +} diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 1d8a654574..6f6688f48e 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -49,6 +49,40 @@ TEST(MockRuntimeTest, PubNoCallback) { deno_dispose(d); } +TEST(MockRuntimeTest, SubReturnEmpty) { + static int count = 0; + Deno* d = deno_new(NULL, [](Deno* _, deno_buf buf) { + count++; + EXPECT_EQ(static_cast(3), buf.len); + // TODO(ry) buf.data should just be a char*. + char* data = reinterpret_cast(buf.data); + EXPECT_EQ(data[0], 'a'); + EXPECT_EQ(data[1], 'b'); + EXPECT_EQ(data[2], 'c'); + return deno_buf{nullptr, 0}; + }); + EXPECT_TRUE(deno_load(d, "a.js", "pubReturnEmpty()")); + EXPECT_EQ(count, 2); + deno_dispose(d); +} + +TEST(MockRuntimeTest, SubReturnBar) { + static int count = 0; + Deno* d = deno_new(NULL, [](Deno* _, deno_buf buf) { + count++; + EXPECT_EQ(static_cast(3), buf.len); + // TODO(ry) buf.data should just be a char*. + char* data = reinterpret_cast(buf.data); + EXPECT_EQ(data[0], 'a'); + EXPECT_EQ(data[1], 'b'); + EXPECT_EQ(data[2], 'c'); + return strbuf("bar"); + }); + EXPECT_TRUE(deno_load(d, "a.js", "pubReturnBar()")); + EXPECT_EQ(count, 1); + deno_dispose(d); +} + int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); deno_init(); From 56c3ac464eb5f9287b9bae0dad4dfabfb3534a1c Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 20:49:57 +0200 Subject: [PATCH 27/44] Rename deno_load to deno_execute. --- deno2/deno.cc | 14 +++++++------- deno2/include/deno.h | 2 +- deno2/mock_runtime_test.cc | 14 +++++++------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index c21dc43c02..de03ed426c 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -153,8 +153,8 @@ void Pub(const v8::FunctionCallbackInfo& args) { } } -bool Load(v8::Local context, const char* name_s, - const char* source_s) { +bool Execute(v8::Local context, const char* js_filename, + const char* js_source) { auto* isolate = context->GetIsolate(); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); @@ -163,8 +163,8 @@ bool Load(v8::Local context, const char* name_s, v8::TryCatch try_catch(isolate); - auto name = v8_str(name_s); - auto source = v8_str(source_s); + auto name = v8_str(js_filename); + auto source = v8_str(js_source); v8::ScriptOrigin origin(name); @@ -217,7 +217,7 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, auto pub_val = pub_tmpl->GetFunction(context).ToLocalChecked(); CHECK(global->Set(context, deno::v8_str("deno_pub"), pub_val).FromJust()); - bool r = Load(context, js_filename, js_source); + bool r = Execute(context, js_filename, js_source); assert(r); creator->SetDefaultContext(context); @@ -261,13 +261,13 @@ void deno_set_flags(int* argc, char** argv) { const char* deno_last_exception(Deno* d) { return d->last_exception.c_str(); } -bool deno_load(Deno* d, const char* name_s, const char* source_s) { +bool deno_execute(Deno* d, const char* js_filename, const char* js_source) { auto* isolate = d->isolate; v8::Locker locker(isolate); v8::Isolate::Scope isolate_scope(isolate); v8::HandleScope handle_scope(isolate); auto context = d->context.Get(d->isolate); - return deno::Load(context, name_s, source_s); + return deno::Execute(context, js_filename, js_source); } // Routes message to the javascript callback set with deno_sub(). diff --git a/deno2/include/deno.h b/deno2/include/deno.h index c6bc82e265..4678a94afe 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -29,7 +29,7 @@ Deno* deno_new(void* data, deno_sub_cb cb); // Returns false on error. // Get error text with deno_last_exception(). -bool deno_load(Deno* d, const char* name_s, const char* source_s); +bool deno_execute(Deno* d, const char* js_filename, const char* js_source); // Returns false on error. // Get error text with deno_last_exception(). diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 6f6688f48e..0b2966b697 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -6,19 +6,19 @@ TEST(MockRuntimeTest, InitializesCorrectly) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "1 + 2")); + EXPECT_TRUE(deno_execute(d, "a.js", "1 + 2")); deno_dispose(d); } TEST(MockRuntimeTest, CanCallFoo) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "if (foo() != 'foo') throw Error();")); + EXPECT_TRUE(deno_execute(d, "a.js", "if (foo() != 'foo') throw Error();")); deno_dispose(d); } TEST(MockRuntimeTest, ErrorsCorrectly) { Deno* d = deno_new(NULL, NULL); - EXPECT_FALSE(deno_load(d, "a.js", "throw Error()")); + EXPECT_FALSE(deno_execute(d, "a.js", "throw Error()")); deno_dispose(d); } @@ -29,14 +29,14 @@ deno_buf strbuf(const char* str) { TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "subabc();")); + EXPECT_TRUE(deno_execute(d, "a.js", "subabc();")); EXPECT_TRUE(deno_pub(d, strbuf("abc"))); deno_dispose(d); } TEST(MockRuntimeTest, PubByteLength) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_load(d, "a.js", "subabc();")); + EXPECT_TRUE(deno_execute(d, "a.js", "subabc();")); // We pub the wrong sized message, it should throw. EXPECT_FALSE(deno_pub(d, strbuf("abcd"))); deno_dispose(d); @@ -61,7 +61,7 @@ TEST(MockRuntimeTest, SubReturnEmpty) { EXPECT_EQ(data[2], 'c'); return deno_buf{nullptr, 0}; }); - EXPECT_TRUE(deno_load(d, "a.js", "pubReturnEmpty()")); + EXPECT_TRUE(deno_execute(d, "a.js", "pubReturnEmpty()")); EXPECT_EQ(count, 2); deno_dispose(d); } @@ -78,7 +78,7 @@ TEST(MockRuntimeTest, SubReturnBar) { EXPECT_EQ(data[2], 'c'); return strbuf("bar"); }); - EXPECT_TRUE(deno_load(d, "a.js", "pubReturnBar()")); + EXPECT_TRUE(deno_execute(d, "a.js", "pubReturnBar()")); EXPECT_EQ(count, 1); deno_dispose(d); } From 314f08672157a0977d7c3eeb72010eb0f717d889 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 21:30:58 +0200 Subject: [PATCH 28/44] Better function names in mock_runtime.js --- deno2/js/mock_runtime.js | 35 +++++++++++++++++++++-------------- deno2/mock_runtime_test.cc | 13 +++++++------ 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index 97688a08d9..538174f79a 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -1,27 +1,34 @@ // A simple runtime that doesn't involve typescript or protobufs to test -// libdeno. +// libdeno. Invoked by mock_runtime_test.cc const window = eval("this"); -window["foo"] = () => { - deno_print("Hello world from foo"); - return "foo"; -}; function assert(cond) { if (!cond) throw Error("mock_runtime.js assert failed"); } -function subabc() { - deno_sub(msg => { - assert(msg instanceof ArrayBuffer); - assert(msg.byteLength === 3); - }); -} - function typedArrayToArrayBuffer(ta) { return ta.buffer.slice(ta.byteOffset, ta.byteOffset + ta.byteLength); } -function pubReturnEmpty() { +function CanCallFunction() { + deno_print("Hello world from foo"); + return "foo"; +} + +function PubSuccess() { + deno_sub(msg => { + deno_print("PubSuccess: ok"); + }); +} + +function PubByteLength() { + deno_sub(msg => { + assert(msg instanceof ArrayBuffer); + assert(msg.byteLength === 3); + }); +} + +function SubReturnEmpty() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); let r = deno_pub(ab); @@ -30,7 +37,7 @@ function pubReturnEmpty() { assert(r == null); } -function pubReturnBar() { +function SubReturnBar() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); const r = deno_pub(ab); diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 0b2966b697..14f78f6e8f 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -10,9 +10,10 @@ TEST(MockRuntimeTest, InitializesCorrectly) { deno_dispose(d); } -TEST(MockRuntimeTest, CanCallFoo) { +TEST(MockRuntimeTest, CanCallFunction) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_execute(d, "a.js", "if (foo() != 'foo') throw Error();")); + EXPECT_TRUE(deno_execute(d, "a.js", + "if (CanCallFunction() != 'foo') throw Error();")); deno_dispose(d); } @@ -29,14 +30,14 @@ deno_buf strbuf(const char* str) { TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_execute(d, "a.js", "subabc();")); + EXPECT_TRUE(deno_execute(d, "a.js", "PubSuccess()")); EXPECT_TRUE(deno_pub(d, strbuf("abc"))); deno_dispose(d); } TEST(MockRuntimeTest, PubByteLength) { Deno* d = deno_new(NULL, NULL); - EXPECT_TRUE(deno_execute(d, "a.js", "subabc();")); + EXPECT_TRUE(deno_execute(d, "a.js", "PubByteLength()")); // We pub the wrong sized message, it should throw. EXPECT_FALSE(deno_pub(d, strbuf("abcd"))); deno_dispose(d); @@ -61,7 +62,7 @@ TEST(MockRuntimeTest, SubReturnEmpty) { EXPECT_EQ(data[2], 'c'); return deno_buf{nullptr, 0}; }); - EXPECT_TRUE(deno_execute(d, "a.js", "pubReturnEmpty()")); + EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnEmpty()")); EXPECT_EQ(count, 2); deno_dispose(d); } @@ -78,7 +79,7 @@ TEST(MockRuntimeTest, SubReturnBar) { EXPECT_EQ(data[2], 'c'); return strbuf("bar"); }); - EXPECT_TRUE(deno_execute(d, "a.js", "pubReturnBar()")); + EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnBar()")); EXPECT_EQ(count, 1); deno_dispose(d); } From 997b300745b343feab58e715aa225396f9b896c8 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 21:32:06 +0200 Subject: [PATCH 29/44] deno2: fmt js dir --- deno2/js/main.ts | 5 ++--- deno2/tools/format.sh | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deno2/js/main.ts b/deno2/js/main.ts index a41a7dfee3..b34ecf24d5 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,7 +1,6 @@ const globalEval = eval; const window = globalEval("this"); -window['foo'] = () => { +window["foo"] = () => { deno_print("Hello world from foo"); return "foo"; -} - +}; diff --git a/deno2/tools/format.sh b/deno2/tools/format.sh index 25c9f4a892..a5c3241756 100755 --- a/deno2/tools/format.sh +++ b/deno2/tools/format.sh @@ -4,3 +4,4 @@ clang-format -i -style Google *.cc *.h include/*.h gn format BUILD.gn gn format .gn yapf -i tools/*.py +prettier --write js/*.ts js/*.js From 7242f2b5a5118ee5b5cd2295761a703b54cee771 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 21:57:25 +0200 Subject: [PATCH 30/44] Add channel to pub/sub --- deno2/deno.cc | 26 ++++++++++++++------------ deno2/include/deno.h | 8 ++++---- deno2/js/mock_runtime.js | 12 +++++++----- deno2/mock_runtime_test.cc | 12 +++++++----- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index de03ed426c..7b84abf222 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -133,16 +133,22 @@ void Pub(const v8::FunctionCallbackInfo& args) { v8::Locker locker(d->isolate); v8::EscapableHandleScope handle_scope(isolate); - v8::Local v = args[0]; - assert(v->IsArrayBuffer()); + assert(args.Length() == 2); + v8::Local channel_v = args[0]; + assert(channel_v->IsString()); + v8::String::Utf8Value channel_vstr(isolate, channel_v); + const char* channel = *channel_vstr; - auto ab = v8::Local::Cast(v); + v8::Local ab_v = args[1]; + assert(ab_v->IsArrayBuffer()); + + auto ab = v8::Local::Cast(ab_v); auto contents = ab->GetContents(); void* buf = contents.Data(); int buflen = static_cast(contents.ByteLength()); - auto retbuf = d->cb(d, deno_buf{buf, buflen}); + auto retbuf = d->cb(d, channel, deno_buf{buf, buflen}); if (retbuf.data) { // TODO(ry) Support zero-copy. auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.len); @@ -270,10 +276,7 @@ bool deno_execute(Deno* d, const char* js_filename, const char* js_source) { return deno::Execute(context, js_filename, js_source); } -// Routes message to the javascript callback set with deno_sub(). -// False return value indicates error. Check deno_last_exception() for exception -// text. Caller owns buf. -bool deno_pub(Deno* d, deno_buf buf) { +bool deno_pub(Deno* d, const char* channel, deno_buf buf) { v8::Locker locker(d->isolate); v8::Isolate::Scope isolate_scope(d->isolate); v8::HandleScope handle_scope(d->isolate); @@ -293,10 +296,9 @@ bool deno_pub(Deno* d, deno_buf buf) { auto ab = v8::ArrayBuffer::New(d->isolate, buf.len); memcpy(ab->GetContents().Data(), buf.data, buf.len); - v8::Local args[1]; - args[0] = ab; - assert(!args[0].IsEmpty()); - assert(!try_catch.HasCaught()); + v8::Local args[2]; + args[0] = deno::v8_str(channel); + args[1] = ab; sub->Call(context->Global(), 1, args); diff --git a/deno2/include/deno.h b/deno2/include/deno.h index 4678a94afe..63f26ba8c5 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -18,7 +18,7 @@ struct deno_s; typedef struct deno_s Deno; // The callback from V8 when data is sent. -typedef deno_buf (*deno_sub_cb)(Deno* d, deno_buf buf); +typedef deno_buf (*deno_sub_cb)(Deno* d, const char* channel, deno_buf buf); void deno_init(); const char* deno_v8_version(); @@ -31,9 +31,9 @@ Deno* deno_new(void* data, deno_sub_cb cb); // Get error text with deno_last_exception(). bool deno_execute(Deno* d, const char* js_filename, const char* js_source); -// Returns false on error. -// Get error text with deno_last_exception(). -bool deno_pub(Deno* d, deno_buf buf); +// Routes message to the javascript callback set with deno_sub(). A false return +// value indicates error. Check deno_last_exception() for exception text. +bool deno_pub(Deno* d, const char* channel, deno_buf buf); const char* deno_last_exception(Deno* d); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index 538174f79a..081b72c4b8 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -16,13 +16,15 @@ function CanCallFunction() { } function PubSuccess() { - deno_sub(msg => { + deno_sub((channel, msg) => { + assert(channel === "PubSuccess"); deno_print("PubSuccess: ok"); }); } function PubByteLength() { - deno_sub(msg => { + deno_sub((channel, msg) => { + assert(channel === "PubByteLength"); assert(msg instanceof ArrayBuffer); assert(msg.byteLength === 3); }); @@ -31,16 +33,16 @@ function PubByteLength() { function SubReturnEmpty() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); - let r = deno_pub(ab); + let r = deno_pub("SubReturnEmpty", ab); assert(r == null); - r = deno_pub(ab); + r = deno_pub("SubReturnEmpty", ab); assert(r == null); } function SubReturnBar() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); - const r = deno_pub(ab); + const r = deno_pub("SubReturnBar", ab); assert(r instanceof ArrayBuffer); assert(r.byteLength === 3); const rui8 = new Uint8Array(r); diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 14f78f6e8f..297b58b227 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -31,7 +31,7 @@ deno_buf strbuf(const char* str) { TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_execute(d, "a.js", "PubSuccess()")); - EXPECT_TRUE(deno_pub(d, strbuf("abc"))); + EXPECT_TRUE(deno_pub(d, "PubSuccess", strbuf("abc"))); deno_dispose(d); } @@ -39,21 +39,22 @@ TEST(MockRuntimeTest, PubByteLength) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_execute(d, "a.js", "PubByteLength()")); // We pub the wrong sized message, it should throw. - EXPECT_FALSE(deno_pub(d, strbuf("abcd"))); + EXPECT_FALSE(deno_pub(d, "PubByteLength", strbuf("abcd"))); deno_dispose(d); } TEST(MockRuntimeTest, PubNoCallback) { Deno* d = deno_new(NULL, NULL); // We didn't call deno_sub(), pubing should fail. - EXPECT_FALSE(deno_pub(d, strbuf("abc"))); + EXPECT_FALSE(deno_pub(d, "PubNoCallback", strbuf("abc"))); deno_dispose(d); } TEST(MockRuntimeTest, SubReturnEmpty) { static int count = 0; - Deno* d = deno_new(NULL, [](Deno* _, deno_buf buf) { + Deno* d = deno_new(NULL, [](auto _, auto channel, auto buf) { count++; + EXPECT_STREQ(channel, "SubReturnEmpty"); EXPECT_EQ(static_cast(3), buf.len); // TODO(ry) buf.data should just be a char*. char* data = reinterpret_cast(buf.data); @@ -69,8 +70,9 @@ TEST(MockRuntimeTest, SubReturnEmpty) { TEST(MockRuntimeTest, SubReturnBar) { static int count = 0; - Deno* d = deno_new(NULL, [](Deno* _, deno_buf buf) { + Deno* d = deno_new(NULL, [](auto _, auto channel, auto buf) { count++; + EXPECT_STREQ(channel, "SubReturnBar"); EXPECT_EQ(static_cast(3), buf.len); // TODO(ry) buf.data should just be a char*. char* data = reinterpret_cast(buf.data); From e89a49490c3109d42d29d6b9f57eaa373bb80b58 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 22:19:34 +0200 Subject: [PATCH 31/44] Clarify memory guarantees of deno_buf --- deno2/deno.cc | 11 ++++++----- deno2/include/deno.h | 6 ++++-- deno2/mock_runtime_test.cc | 21 +++++++-------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index 7b84abf222..caea85ffb3 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -124,7 +124,6 @@ void Sub(const v8::FunctionCallbackInfo& args) { d->sub.Reset(isolate, func); } -// Called from JavaScript, routes message to golang. void Pub(const v8::FunctionCallbackInfo& args) { v8::Isolate* isolate = args.GetIsolate(); Deno* d = static_cast(isolate->GetData(0)); @@ -145,10 +144,12 @@ void Pub(const v8::FunctionCallbackInfo& args) { auto ab = v8::Local::Cast(ab_v); auto contents = ab->GetContents(); - void* buf = contents.Data(); - int buflen = static_cast(contents.ByteLength()); + // data is only a valid pointer until the end of this call. + const char* data = + const_cast(reinterpret_cast(contents.Data())); + deno_buf buf{data, contents.ByteLength()}; - auto retbuf = d->cb(d, channel, deno_buf{buf, buflen}); + auto retbuf = d->cb(d, channel, buf); if (retbuf.data) { // TODO(ry) Support zero-copy. auto ab = v8::ArrayBuffer::New(d->isolate, retbuf.len); @@ -292,7 +293,7 @@ bool deno_pub(Deno* d, const char* channel, deno_buf buf) { return false; } - // TODO(ry) support zero copy. + // TODO(ry) support zero-copy. auto ab = v8::ArrayBuffer::New(d->isolate, buf.len); memcpy(ab->GetContents().Data(), buf.data, buf.len); diff --git a/deno2/include/deno.h b/deno2/include/deno.h index 63f26ba8c5..b8d4e59a41 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -10,14 +10,16 @@ extern "C" { // Data that gets transmitted. typedef struct { - void* data; + const char* data; size_t len; } deno_buf; struct deno_s; typedef struct deno_s Deno; -// The callback from V8 when data is sent. +// A callback to receive a message from deno_pub javascript call. +// buf is valid only for the lifetime of the call. +// The returned deno_buf is returned from deno_pub in javascript. typedef deno_buf (*deno_sub_cb)(Deno* d, const char* channel, deno_buf buf); void deno_init(); diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 297b58b227..9297936453 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -23,10 +23,7 @@ TEST(MockRuntimeTest, ErrorsCorrectly) { deno_dispose(d); } -deno_buf strbuf(const char* str) { - void* d = reinterpret_cast(const_cast(str)); - return deno_buf{d, strlen(str)}; -} +deno_buf strbuf(const char* str) { return deno_buf{str, strlen(str)}; } TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); @@ -56,11 +53,9 @@ TEST(MockRuntimeTest, SubReturnEmpty) { count++; EXPECT_STREQ(channel, "SubReturnEmpty"); EXPECT_EQ(static_cast(3), buf.len); - // TODO(ry) buf.data should just be a char*. - char* data = reinterpret_cast(buf.data); - EXPECT_EQ(data[0], 'a'); - EXPECT_EQ(data[1], 'b'); - EXPECT_EQ(data[2], 'c'); + EXPECT_EQ(buf.data[0], 'a'); + EXPECT_EQ(buf.data[1], 'b'); + EXPECT_EQ(buf.data[2], 'c'); return deno_buf{nullptr, 0}; }); EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnEmpty()")); @@ -74,11 +69,9 @@ TEST(MockRuntimeTest, SubReturnBar) { count++; EXPECT_STREQ(channel, "SubReturnBar"); EXPECT_EQ(static_cast(3), buf.len); - // TODO(ry) buf.data should just be a char*. - char* data = reinterpret_cast(buf.data); - EXPECT_EQ(data[0], 'a'); - EXPECT_EQ(data[1], 'b'); - EXPECT_EQ(data[2], 'c'); + EXPECT_EQ(buf.data[0], 'a'); + EXPECT_EQ(buf.data[1], 'b'); + EXPECT_EQ(buf.data[2], 'c'); return strbuf("bar"); }); EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnBar()")); From 7d972b453434b4d2e5d3bcb4733f7f2c5e1a9354 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 22:29:34 +0200 Subject: [PATCH 32/44] Fix deno executable --- deno2/js/main.ts | 2 +- deno2/main.cc | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/deno2/js/main.ts b/deno2/js/main.ts index b34ecf24d5..95bf8cd5ee 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,6 +1,6 @@ const globalEval = eval; const window = globalEval("this"); -window["foo"] = () => { +window["denoMain"] = () => { deno_print("Hello world from foo"); return "foo"; }; diff --git a/deno2/main.cc b/deno2/main.cc index d16dd44ba8..4ea843bbb7 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -9,9 +9,10 @@ int main(int argc, char** argv) { deno_init(); Deno* d = deno_new(NULL, NULL); - int r = deno_load(d, "main2.js", "foo();"); - if (r != 0) { + bool r = deno_execute(d, "deno_main.js", "denoMain();"); + if (!r) { printf("Error! %s\n", deno_last_exception(d)); exit(1); } + deno_dispose(d); } From 64d41a72f1c5a5974bb3e9aafbf3176759e00ee1 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 22:36:14 +0200 Subject: [PATCH 33/44] deno_dispose -> deno_delete --- deno2/deno.cc | 4 ++-- deno2/include/deno.h | 3 +-- deno2/main.cc | 2 +- deno2/mock_runtime_test.cc | 16 ++++++++-------- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index caea85ffb3..baf5e96a5c 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -311,9 +311,9 @@ bool deno_pub(Deno* d, const char* channel, deno_buf buf) { return true; } -void deno_dispose(Deno* d) { +void deno_delete(Deno* d) { d->isolate->Dispose(); - delete (d); + delete d; } void deno_terminate_execution(Deno* d) { d->isolate->TerminateExecution(); } diff --git a/deno2/include/deno.h b/deno2/include/deno.h index b8d4e59a41..3c42abd72f 100644 --- a/deno2/include/deno.h +++ b/deno2/include/deno.h @@ -26,8 +26,8 @@ void deno_init(); const char* deno_v8_version(); void deno_set_flags(int* argc, char** argv); -// Constructor Deno* deno_new(void* data, deno_sub_cb cb); +void deno_delete(Deno* d); // Returns false on error. // Get error text with deno_last_exception(). @@ -39,7 +39,6 @@ bool deno_pub(Deno* d, const char* channel, deno_buf buf); const char* deno_last_exception(Deno* d); -void deno_dispose(Deno* d); void deno_terminate_execution(Deno* d); #ifdef __cplusplus diff --git a/deno2/main.cc b/deno2/main.cc index 4ea843bbb7..820f15a095 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -14,5 +14,5 @@ int main(int argc, char** argv) { printf("Error! %s\n", deno_last_exception(d)); exit(1); } - deno_dispose(d); + deno_delete(d); } diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 9297936453..44037044a6 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -7,20 +7,20 @@ TEST(MockRuntimeTest, InitializesCorrectly) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_execute(d, "a.js", "1 + 2")); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, CanCallFunction) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_execute(d, "a.js", "if (CanCallFunction() != 'foo') throw Error();")); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, ErrorsCorrectly) { Deno* d = deno_new(NULL, NULL); EXPECT_FALSE(deno_execute(d, "a.js", "throw Error()")); - deno_dispose(d); + deno_delete(d); } deno_buf strbuf(const char* str) { return deno_buf{str, strlen(str)}; } @@ -29,7 +29,7 @@ TEST(MockRuntimeTest, PubSuccess) { Deno* d = deno_new(NULL, NULL); EXPECT_TRUE(deno_execute(d, "a.js", "PubSuccess()")); EXPECT_TRUE(deno_pub(d, "PubSuccess", strbuf("abc"))); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, PubByteLength) { @@ -37,14 +37,14 @@ TEST(MockRuntimeTest, PubByteLength) { EXPECT_TRUE(deno_execute(d, "a.js", "PubByteLength()")); // We pub the wrong sized message, it should throw. EXPECT_FALSE(deno_pub(d, "PubByteLength", strbuf("abcd"))); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, PubNoCallback) { Deno* d = deno_new(NULL, NULL); // We didn't call deno_sub(), pubing should fail. EXPECT_FALSE(deno_pub(d, "PubNoCallback", strbuf("abc"))); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, SubReturnEmpty) { @@ -60,7 +60,7 @@ TEST(MockRuntimeTest, SubReturnEmpty) { }); EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnEmpty()")); EXPECT_EQ(count, 2); - deno_dispose(d); + deno_delete(d); } TEST(MockRuntimeTest, SubReturnBar) { @@ -76,7 +76,7 @@ TEST(MockRuntimeTest, SubReturnBar) { }); EXPECT_TRUE(deno_execute(d, "a.js", "SubReturnBar()")); EXPECT_EQ(count, 1); - deno_dispose(d); + deno_delete(d); } int main(int argc, char** argv) { From f89f576f6da6738617ac30f57b3c832a293434f5 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 22:41:43 +0200 Subject: [PATCH 34/44] Use camel-case for deno js api. --- deno2/deno.cc | 6 +++--- deno2/js/main.ts | 2 +- deno2/js/mock_runtime.js | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/deno2/deno.cc b/deno2/deno.cc index baf5e96a5c..67b74bd636 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -214,15 +214,15 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, auto print_tmpl = v8::FunctionTemplate::New(isolate, Print); auto print_val = print_tmpl->GetFunction(context).ToLocalChecked(); CHECK( - global->Set(context, deno::v8_str("deno_print"), print_val).FromJust()); + global->Set(context, deno::v8_str("denoPrint"), print_val).FromJust()); auto sub_tmpl = v8::FunctionTemplate::New(isolate, Sub); auto sub_val = sub_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, deno::v8_str("deno_sub"), sub_val).FromJust()); + CHECK(global->Set(context, deno::v8_str("denoSub"), sub_val).FromJust()); auto pub_tmpl = v8::FunctionTemplate::New(isolate, Pub); auto pub_val = pub_tmpl->GetFunction(context).ToLocalChecked(); - CHECK(global->Set(context, deno::v8_str("deno_pub"), pub_val).FromJust()); + CHECK(global->Set(context, deno::v8_str("denoPub"), pub_val).FromJust()); bool r = Execute(context, js_filename, js_source); assert(r); diff --git a/deno2/js/main.ts b/deno2/js/main.ts index 95bf8cd5ee..0a098dd41a 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,6 +1,6 @@ const globalEval = eval; const window = globalEval("this"); window["denoMain"] = () => { - deno_print("Hello world from foo"); + denoPrint("Hello world from foo"); return "foo"; }; diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index 081b72c4b8..5702ed592e 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -11,19 +11,19 @@ function typedArrayToArrayBuffer(ta) { } function CanCallFunction() { - deno_print("Hello world from foo"); + denoPrint("Hello world from foo"); return "foo"; } function PubSuccess() { - deno_sub((channel, msg) => { + denoSub((channel, msg) => { assert(channel === "PubSuccess"); - deno_print("PubSuccess: ok"); + denoPrint("PubSuccess: ok"); }); } function PubByteLength() { - deno_sub((channel, msg) => { + denoSub((channel, msg) => { assert(channel === "PubByteLength"); assert(msg instanceof ArrayBuffer); assert(msg.byteLength === 3); @@ -33,16 +33,16 @@ function PubByteLength() { function SubReturnEmpty() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); - let r = deno_pub("SubReturnEmpty", ab); + let r = denoPub("SubReturnEmpty", ab); assert(r == null); - r = deno_pub("SubReturnEmpty", ab); + r = denoPub("SubReturnEmpty", ab); assert(r == null); } function SubReturnBar() { const ui8 = new Uint8Array("abc".split("").map(c => c.charCodeAt(0))); const ab = typedArrayToArrayBuffer(ui8); - const r = deno_pub("SubReturnBar", ab); + const r = denoPub("SubReturnBar", ab); assert(r instanceof ArrayBuffer); assert(r.byteLength === 3); const rui8 = new Uint8Array(r); From 356fd18c7385f99766fe1e8d843ec85712bbaf76 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 11 Jun 2018 22:51:11 +0200 Subject: [PATCH 35/44] Calling denoSub twice should fail. --- deno2/deno.cc | 5 +++++ deno2/js/mock_runtime.js | 7 +++++++ deno2/mock_runtime_test.cc | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/deno2/deno.cc b/deno2/deno.cc index 67b74bd636..26222d3b8f 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -117,6 +117,11 @@ void Sub(const v8::FunctionCallbackInfo& args) { v8::HandleScope handle_scope(isolate); + if (!d->sub.IsEmpty()) { + isolate->ThrowException(v8_str("denoSub already called.")); + return; + } + v8::Local v = args[0]; assert(v->IsFunction()); v8::Local func = v8::Local::Cast(v); diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index 5702ed592e..570d6cf28d 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -49,3 +49,10 @@ function SubReturnBar() { const rstr = String.fromCharCode(...rui8); assert(rstr === "bar"); } + +function DoubleSubFails() { + // denoSub is an internal function and should only be called once from the + // runtime. + denoSub((channel, msg) => assert(false)); + denoSub((channel, msg) => assert(false)); +} diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index 44037044a6..ea5ef4bf3e 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -79,6 +79,12 @@ TEST(MockRuntimeTest, SubReturnBar) { deno_delete(d); } +TEST(MockRuntimeTest, DoubleSubFails) { + Deno* d = deno_new(NULL, NULL); + EXPECT_FALSE(deno_execute(d, "a.js", "DoubleSubFails()")); + deno_delete(d); +} + int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); deno_init(); From b3003535bebf852c3233cab272424feac164a3d0 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 03:54:55 +0200 Subject: [PATCH 36/44] deno2: compile in TS, build protobuf --- deno2/BUILD.gn | 102 +- deno2/js/deno.d.ts | 6 + deno2/js/main.ts | 7 + deno2/js/package.json | 3 +- deno2/js/run_node.py | 10 +- deno2/js/tsconfig.json | 19 + deno2/js/yarn.lock | 3327 +++++----------------------------------- 7 files changed, 495 insertions(+), 2979 deletions(-) create mode 100644 deno2/js/deno.d.ts create mode 100644 deno2/js/tsconfig.json diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index ef81a94d9d..c8d9f534e8 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -68,29 +68,91 @@ proto_library("msg_proto") { ] } -action("run_parcel") { +template("run_node") { + action(target_name) { + forward_variables_from(invoker, "*") + script = "js/run_node.py" + } +} + +run_node("bundle") { + main_source = "$target_gen_dir/tsc_dist/main.js" + main_output = "$target_gen_dir/bundle/main.js" sources = [ - "js/main.ts", + main_source, ] outputs = [ - "$target_gen_dir/main.js", - "$target_gen_dir/main.map", + main_output, + ] + deps = [ + ":run_tsc", ] - - # Our script imports this Python file so we want to rebuild if it changes. - # inputs = [ "helper_library.py" ] - - # Note that we have to manually pass the sources to our script if the - # script needs them as inputs. - script = "js/run_node.py" - root = root_build_dir + "/../../js" args = [ - "./node_modules/.bin/parcel", - "build", - "--log-level=1", - "--no-minify", - "--out-dir=" + rebase_path(target_gen_dir, root), - ] + rebase_path(sources, root) + "./node_modules/.bin/browserify", + rebase_path(main_source, root_build_dir), + "-o", + rebase_path(main_output, root_build_dir), + ] +} + +run_node("run_tsc") { + main_source = "js/main.ts" + sources = [ + "$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts", + "$target_gen_dir/node_modules/deno_pb/msg.pb.js", + "js/tsconfig.json", + main_source, + ] + out_dir = "$target_gen_dir/tsc_dist" + outputs = [ + out_dir + "/main.js", + out_dir + "/main.map", + ] + deps = [ + ":run_pbjs", + ":run_pbts", + ] + args = [ + "./node_modules/.bin/tsc", + "--baseUrl", + rebase_path(target_gen_dir + "/node_modules", root_build_dir), + "--outDir", + rebase_path(out_dir, root_build_dir), + rebase_path(main_source, root_build_dir), + ] +} + +run_node("run_pbjs") { + sources = [ + "msg.proto", + ] + outputs = [ + "$target_gen_dir/node_modules/deno_pb/msg.pb.js", + ] + args = [ + "./node_modules/.bin/pbjs", + "--target=static-module", + "--wraper=commonjs", + "--out=" + rebase_path(outputs[0], root_build_dir), + rebase_path(sources[0], root_build_dir), + ] +} + +run_node("run_pbts") { + sources = [ + "$target_gen_dir/node_modules/deno_pb/msg.pb.js", + ] + outputs = [ + "$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts", + ] + args = [ + "./node_modules/.bin/pbts", + "--out=" + rebase_path(outputs[0], root_build_dir), + rebase_path(sources[0], root_build_dir), + ] + deps = [ + ":run_pbjs", + ] } # Template to generate different V8 snapshots based on different runtime flags. @@ -145,9 +207,9 @@ template("create_snapshot") { # Generates $target_gen_dir/snapshot_deno.cc create_snapshot("deno") { - js = "$target_gen_dir/main.js" + js = "$target_gen_dir/bundle/main.js" deps = [ - ":run_parcel", + ":bundle", ] } diff --git a/deno2/js/deno.d.ts b/deno2/js/deno.d.ts new file mode 100644 index 0000000000..4c797a5f64 --- /dev/null +++ b/deno2/js/deno.d.ts @@ -0,0 +1,6 @@ +// Copyright 2018 Ryan Dahl +// All rights reserved. MIT License. +type MessageCallback = (msg: ArrayBuffer) => void; +declare function denoSub(channel: string, cb: MessageCallback): void; +declare function denoPub(channel: string, msg: ArrayBuffer): null | ArrayBuffer; +declare function denoPrint(x: string): void; diff --git a/deno2/js/main.ts b/deno2/js/main.ts index 0a098dd41a..61294a3070 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,6 +1,13 @@ +/// +//import { main as pb } from "deno_pb/msg.pb" +import * as ts from "typescript"; + const globalEval = eval; const window = globalEval("this"); window["denoMain"] = () => { + //const msg = pb.Msg.fromObject({}); + //denoPrint(`msg.command: ${msg.command}`); + denoPrint(`ts.version: ${ts.version}`); denoPrint("Hello world from foo"); return "foo"; }; diff --git a/deno2/js/package.json b/deno2/js/package.json index 08259fbe63..03987fe085 100644 --- a/deno2/js/package.json +++ b/deno2/js/package.json @@ -1,6 +1,7 @@ { "devDependencies": { - "parcel-bundler": "^1.8.1", + "browserify": "^16.2.2", + "protobufjs": "^6.8.6", "typescript": "^2.9.1" } } diff --git a/deno2/js/run_node.py b/deno2/js/run_node.py index 1cf74e6920..1a1dc5cc71 100755 --- a/deno2/js/run_node.py +++ b/deno2/js/run_node.py @@ -1,14 +1,18 @@ #!/usr/bin/env python """ gn can only run python scripts. -Also Node programs except to be run with cwd = $root_dir/js so it can resolve -node_modules. """ import subprocess import sys import os + js_path = os.path.dirname(os.path.realpath(__file__)) -os.chdir(js_path) +node_modules_path = os.path.join(js_path, "node_modules") + +# root_out_dir +if not os.path.exists("node_modules"): + os.symlink(node_modules_path, "node_modules") + args = ["node"] + sys.argv[1:] sys.exit(subprocess.call(args)) diff --git a/deno2/js/tsconfig.json b/deno2/js/tsconfig.json new file mode 100644 index 0000000000..ba2dbe842c --- /dev/null +++ b/deno2/js/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "allowJs": true, + "module": "commonjs", + "noImplicitAny": true, + "sourceMap": true, + "removeComments": true, + "preserveConstEnums": true, + "declaration": true, + "target": "es2017", + "noImplicitReturns": true, + "pretty": true, + "noFallthroughCasesInSwitch": true, + "allowUnreachableCode": false, + "experimentalDecorators": true + }, + "include": ["*.ts", "*.js"], + "exclude": ["tests.ts"] +} diff --git a/deno2/js/yarn.lock b/deno2/js/yarn.lock index 24427c3002..aa93de3f09 100644 --- a/deno2/js/yarn.lock +++ b/deno2/js/yarn.lock @@ -2,75 +2,90 @@ # yarn lockfile v1 -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" -acorn@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.0.tgz#572bedb377a1c61b7a289e72b8c5cfeb7baaf0bf" +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" -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" +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - -arr-flatten@^1.1.0: +"@protobufjs/eventemitter@^1.1.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + +"@types/long@^3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" + +"@types/node@^8.9.4": + version "8.10.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.19.tgz#66b5b6325c048cbf4512b7a88b0e79c2ee99d3d2" + +JSONStream@^1.0.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +acorn-node@^1.2.0, acorn-node@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" + dependencies: + acorn "^5.4.1" + xtend "^4.0.1" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" asn1.js@^4.0.0: version "4.10.1" @@ -80,528 +95,17 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -assert@^1.1.1: +assert@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" dependencies: util "0.10.3" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - -atob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" +astw@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.25.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.25.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-env@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.15.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon-walk@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce" - dependencies: - babel-runtime "^6.11.6" - babel-types "^6.15.0" - lodash.clone "^4.5.0" - -babylon@^6.17.4, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + acorn "^4.0.3" balanced-match@^1.0.0: version "1.0.0" @@ -611,38 +115,10 @@ base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" - -bindings@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - -bluebird@^3.0.5: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -650,34 +126,27 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -brfs@^1.2.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" - dependencies: - quote-stream "^1.0.1" - resolve "^1.1.5" - static-module "^2.2.0" - through2 "^2.0.0" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-pack@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" + dependencies: + JSONStream "^1.0.3" + combine-source-map "~0.8.0" + defined "^1.0.0" + safe-buffer "^5.1.1" + through2 "^2.0.0" + umd "^3.0.0" + +browser-resolve@^1.11.0, browser-resolve@^1.7.0: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -724,29 +193,64 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0: +browserify-zlib@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" dependencies: pako "~1.0.5" -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" +browserify@^16.2.2: + version "16.2.2" + resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.2.tgz#4b1f66ba0e54fa39dbc5aa4be9629142143d91b0" dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -buffer-equal@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + JSONStream "^1.0.3" + assert "^1.4.0" + browser-pack "^6.0.1" + browser-resolve "^1.11.0" + browserify-zlib "~0.2.0" + buffer "^5.0.2" + cached-path-relative "^1.0.0" + concat-stream "^1.6.0" + console-browserify "^1.1.0" + constants-browserify "~1.0.0" + crypto-browserify "^3.0.0" + defined "^1.0.0" + deps-sort "^2.0.0" + domain-browser "^1.2.0" + duplexer2 "~0.1.2" + events "^2.0.0" + glob "^7.1.0" + has "^1.0.0" + htmlescape "^1.1.0" + https-browserify "^1.0.0" + inherits "~2.0.1" + insert-module-globals "^7.0.0" + labeled-stream-splicer "^2.0.0" + mkdirp "^0.5.0" + module-deps "^6.0.0" + os-browserify "~0.3.0" + parents "^1.0.1" + path-browserify "~0.0.0" + process "~0.11.0" + punycode "^1.3.2" + querystring-es3 "~0.2.0" + read-only-stream "^2.0.0" + readable-stream "^2.0.2" + resolve "^1.1.4" + shasum "^1.0.0" + shell-quote "^1.6.1" + stream-browserify "^2.0.0" + stream-http "^2.0.0" + string_decoder "^1.1.1" + subarg "^1.0.0" + syntax-error "^1.1.1" + through2 "^2.0.0" + timers-browserify "^1.0.1" + tty-browserify "0.0.1" + url "~0.11.0" + util "~0.10.1" + vm-browserify "^1.0.0" + xtend "^4.0.0" buffer-from@^1.0.0: version "1.1.0" @@ -756,88 +260,20 @@ buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" +buffer@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" - isarray "^1.0.0" builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" -cache-base@^1.0.1: +cached-path-relative@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000847" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000847.tgz#ff4072a5468809fec0ae9ac3b4035ef891e5b144" - -caniuse-lite@^1.0.30000844: - version "1.0.30000847" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000847.tgz#be77f439be29bbc57ae08004b1e470b653b1ec1d" - -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" - -chalk@^2.1.0, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" - dependencies: - anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" - glob-parent "^3.1.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.0" - optionalDependencies: - fsevents "^1.1.2" - -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -846,109 +282,20 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" +combine-source-map@^0.8.0, combine-source-map@~0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" dependencies: - chalk "^1.1.3" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - -clones@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/clones/-/clones-1.1.0.tgz#87e904132d6140c5c0b72006c08c0d05bd7b63b3" - -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - dependencies: - q "^1.1.2" - -coa@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" - 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" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.3.0, color-convert@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" - dependencies: - color-name "^1.1.1" - -color-name@^1.0.0, color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -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" - -command-exists@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.6.tgz#577f8e5feb0cb0f159cd557a51a9be1bdd76e09e" - -commander@^2.11.0, commander@^2.9.0: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@~1.6.0: +concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -957,38 +304,19 @@ concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@~1.1.5: - version "1.1.11" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - 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" - -constants-browserify@^1.0.0: +constants-browserify@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -convert-source-map@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - -core-js@^2.4.0, core-js@^2.5.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +convert-source-map@~1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" core-util-is@~1.0.0: version "1.0.2" @@ -1022,17 +350,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -cross-spawn@^6.0.4: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: +crypto-browserify@^3.0.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -1048,165 +366,22 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -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-select-base-adapter@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990" - -css-select@~1.3.0-rc0: - version "1.3.0-rc0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.3.0-rc0.tgz#6f93196aaae737666ea1036a8cb14a8fcb7a9231" - dependencies: - boolbase "^1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "^1.0.1" - -css-tree@1.0.0-alpha.27: - version "1.0.0-alpha.27" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.27.tgz#f211526909c7dc940843d83b9376ed98ddb8de47" - dependencies: - mdn-data "^1.0.0" - source-map "^0.5.3" - -css-tree@1.0.0-alpha25: - version "1.0.0-alpha25" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha25.tgz#1bbfabfbf6eeef4f01d9108ff2edd0be2fe35597" - dependencies: - mdn-data "^1.0.0" - source-map "^0.5.3" - -css-url-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cssnano@^3.10.0, cssnano@^3.4.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - 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@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.0.tgz#acdbba5719e2c87bc801eadc032764b2e4b9d4e7" - dependencies: - css-tree "1.0.0-alpha.27" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -deasync@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea" - dependencies: - bindings "~1.2.1" - nan "^2.0.7" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +deps-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" + dependencies: + JSONStream "^1.0.3" + shasum "^1.0.0" + subarg "^1.0.0" + through2 "^2.0.0" des.js@^1.0.0: version "1.0.0" @@ -1215,19 +390,13 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" +detective@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.1.0.tgz#7a20d89236d7b331ccea65832e7123b5551bb7cb" dependencies: - repeating "^2.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + acorn-node "^1.3.0" + defined "^1.0.0" + minimist "^1.1.1" diffie-hellman@^5.0.0: version "5.0.3" @@ -1237,73 +406,16 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -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: +domain-browser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" -domelementtype@1, domelementtype@^1.3.0: - 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.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - 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" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - dependencies: - dom-serializer "0" - domelementtype "1" - -dotenv@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - -duplexer2@~0.1.4: +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: readable-stream "^2.0.2" -editorconfig@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" - dependencies: - bluebird "^3.0.5" - commander "^2.9.0" - lru-cache "^3.2.0" - semver "^5.1.0" - sigmund "^1.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47: - version "1.3.48" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900" - elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -1316,78 +428,9 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -entities@^1.1.1, entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -es-abstract@^1.5.1, es-abstract@^1.6.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.8.1, escodegen@~1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +events@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -1396,142 +439,15 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -falafel@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" - dependencies: - acorn "^5.0.0" - foreach "^2.0.5" - isarray "0.0.1" - object-keys "^1.0.6" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -filesize@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - dependencies: - minipass "^2.2.1" - 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.1.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - 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" - -get-port@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.5, glob@^7.1.2: +glob@^7.1.0: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1542,71 +458,11 @@ glob@^7.0.5, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -grapheme-breaker@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac" +has@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" dependencies: - brfs "^1.2.0" - unicode-trie "^0.3.1" - -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-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -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" + function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" @@ -1616,8 +472,8 @@ hash-base@^3.0.0: safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + version "1.1.4" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.4.tgz#8b50e1f35d51bd01e5ed9ece4dbe3549ccfa0a3c" dependencies: inherits "^2.0.3" minimalistic-assert "^1.0.0" @@ -1630,75 +486,17 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -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: +htmlescape@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" - -htmlnano@^0.1.9: - version "0.1.9" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.9.tgz#e6137aea84d20311a3875c42eb2799a1ff352627" - dependencies: - cssnano "^3.4.0" - object-assign "^4.0.1" - posthtml "^0.11.3" - posthtml-render "^1.1.3" - svgo "^1.0.5" - uglify-es "^3.3.9" - -htmlparser2@^3.9.2: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^2.0.2" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" + resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -iconv-lite@^0.4.4: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - dependencies: - safer-buffer ">= 2.1.2 < 3" - ieee754@^1.1.4: - version "1.1.11" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - -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" + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" inflight@^1.0.4: version "1.0.6" @@ -1715,326 +513,73 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" dependencies: - loose-envify "^1.0.0" + source-map "~0.5.3" -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" +insert-module-globals@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.1.0.tgz#dbb3cea71d3a43d5a07ef0310fe5f078aa4dbf35" dependencies: - kind-of "^3.0.2" + JSONStream "^1.0.3" + combine-source-map "^0.8.0" + concat-stream "^1.6.1" + is-buffer "^1.1.0" + lexical-scope "^1.2.0" + path-is-absolute "^1.0.1" + process "~0.11.0" + through2 "^2.0.0" + xtend "^4.0.0" -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - dependencies: - kind-of "^6.0.0" - -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.1.5: +is-buffer@^1.1.0: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.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-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -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-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" - -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-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +isarray@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - dependencies: - isobject "^3.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -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-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-url@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - -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: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0, isobject@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" +json-stable-stringify@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" dependencies: - isarray "1.0.0" + jsonify "~0.0.0" -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -js-base64@^2.1.9: - version "2.4.5" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" - -js-beautify@^1.7.5: - version "1.7.5" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919" - dependencies: - config-chain "~1.1.5" - editorconfig "^0.13.2" - mkdirp "~0.5.0" - nopt "~3.0.1" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.10.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -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" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - dependencies: - minimist "^1.2.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lodash.clone@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - -lodash@^4.17.4: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -loose-envify@^1.0.0: +jsonparse@^1.2.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +labeled-stream-splicer@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" dependencies: - js-tokens "^3.0.0" + inherits "^2.0.1" + isarray "^2.0.4" + stream-splicer "^2.0.0" -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" +lexical-scope@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" dependencies: - pseudomap "^1.0.1" + astw "^2.0.0" -magic-string@^0.22.4: - version "0.22.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - dependencies: - vlq "^0.2.2" +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" md5.js@^1.3.4: version "1.3.4" @@ -2043,34 +588,6 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" -mdn-data@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.3.tgz#d0929cdf73db32b0afd6d3ab8ef3da2b29b6f76b" - -merge-source-map@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" - dependencies: - source-map "^0.5.6" - -micromatch@^3.0.4, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -2078,10 +595,6 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -2090,7 +603,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2100,239 +613,35 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.0, minimist@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - dependencies: - minipass "^2.2.1" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -nan@^2.0.7, nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - -nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" +module-deps@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.1.0.tgz#d1e1efc481c6886269f7112c52c3236188e16479" dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-odd "^2.0.0" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -needle@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" - -node-forge@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - -node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.0" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.1.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -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.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" - -npm-packlist@^1.1.6: - version "1.1.10" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - 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" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" - -object-keys@^1.0.6, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - dependencies: - isobject "^3.0.0" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - dependencies: - isobject "^3.0.1" - -object.values@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" + JSONStream "^1.0.3" + browser-resolve "^1.7.0" + cached-path-relative "^1.0.0" + concat-stream "~1.6.0" + defined "^1.0.0" + detective "^5.0.2" + duplexer2 "^0.1.2" + inherits "^2.0.1" + parents "^1.0.0" + readable-stream "^2.0.2" + resolve "^1.4.0" + stream-combiner2 "^1.1.1" + subarg "^1.0.0" + through2 "^2.0.0" + xtend "^4.0.0" once@^1.3.0: version "1.4.0" @@ -2340,104 +649,19 @@ once@^1.3.0: dependencies: wrappy "1" -opn@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-browserify@^0.3.0: +os-browserify@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" -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.0, os-tmpdir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -pako@^0.2.5: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" -parcel-bundler@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.8.1.tgz#ac62d0690786f51d7f309694bab6856f685a6986" +parents@^1.0.0, parents@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" dependencies: - babel-code-frame "^6.26.0" - babel-core "^6.25.0" - babel-generator "^6.25.0" - babel-plugin-transform-es2015-modules-commonjs "^6.26.0" - babel-plugin-transform-react-jsx "^6.24.1" - babel-preset-env "^1.6.1" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.17.4" - babylon-walk "^1.0.2" - browserslist "^3.2.6" - chalk "^2.1.0" - chokidar "^2.0.3" - command-exists "^1.2.6" - commander "^2.11.0" - cross-spawn "^6.0.4" - cssnano "^3.10.0" - deasync "^0.1.12" - dotenv "^5.0.0" - filesize "^3.6.0" - get-port "^3.2.0" - glob "^7.1.2" - grapheme-breaker "^0.3.2" - htmlnano "^0.1.9" - is-url "^1.2.2" - js-yaml "^3.10.0" - json5 "^1.0.1" - micromatch "^3.0.4" - mkdirp "^0.5.1" - node-forge "^0.7.1" - node-libs-browser "^2.0.0" - opn "^5.1.0" - physical-cpu-count "^2.0.0" - postcss "^6.0.19" - postcss-value-parser "^3.3.0" - posthtml "^0.11.2" - posthtml-parser "^0.4.0" - posthtml-render "^1.1.3" - resolve "^1.4.0" - semver "^5.4.1" - serialize-to-js "^1.1.1" - serve-static "^1.12.4" - source-map "0.6.1" - strip-ansi "^4.0.0" - toml "^2.3.3" - tomlify-j0.4 "^3.0.0" - uglify-es "^3.2.1" - v8-compile-cache "^2.0.0" - ws "^5.1.1" + path-platform "~0.11.15" parse-asn1@^5.0.0: version "5.1.1" @@ -2449,34 +673,22 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-browserify@0.0.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-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-platform@~0.11.15: + version "0.11.15" + resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" + pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" @@ -2487,286 +699,31 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -physical-cpu-count@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - -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.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - 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.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - 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.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - dependencies: - postcss "^5.0.4" - -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.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - 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.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - 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.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -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.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - 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.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - 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, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - 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.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - dependencies: - has "^1.0.1" - 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.8, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.19: - version "6.0.22" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3" - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -posthtml-parser@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz#3fe986fca9f00c0f109d731ba590b192f26e776d" - dependencies: - htmlparser2 "^3.9.2" - isobject "^2.1.0" - object-assign "^4.1.1" - -posthtml-parser@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.1.tgz#95b78fef766fbbe0a6f861b6e95582bc3d1ff933" - dependencies: - htmlparser2 "^3.9.2" - object-assign "^4.1.1" - -posthtml-render@^1.1.0, posthtml-render@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" - -posthtml@^0.11.2, posthtml@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz#17ea2921b0555b7455f33c977bd16d8b8cb74f27" - dependencies: - object-assign "^4.1.1" - posthtml-parser "^0.3.3" - posthtml-render "^1.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" -process@^0.11.10: +process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +protobufjs@^6.8.6: + version "6.8.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.6.tgz#ce3cf4fff9625b62966c455fc4c15e4331a11ca2" + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^3.0.32" + "@types/node" "^8.9.4" + long "^4.0.0" public-encrypt@^4.0.0: version "4.0.2" @@ -2782,22 +739,11 @@ 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.3.2: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: +querystring-es3@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -2805,14 +751,6 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" -quote-stream@^1.0.1, quote-stream@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" - dependencies: - buffer-equal "0.0.1" - minimist "^1.1.3" - through2 "^2.0.0" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -2826,20 +764,13 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -rc@^1.1.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" +read-only-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + readable-stream "^2.0.2" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3: +readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -2851,108 +782,16 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable string_decoder "~1.1.1" 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" +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -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.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - dependencies: - balanced-match "^0.4.2" - -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -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" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -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.6.1: - 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" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -resolve@^1.1.5, resolve@^1.4.0: +resolve@^1.1.4, resolve@^1.4.0: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" dependencies: path-parse "^1.0.5" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -rimraf@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -2960,260 +799,54 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -safer-eval@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/safer-eval/-/safer-eval-1.2.3.tgz#73ba74a34bc8a07d6a44135c815fd18a8eebe7a0" - dependencies: - clones "^1.1.0" - -sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serialize-to-js@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-1.2.1.tgz#2e87f61f938826d24c463a7cbd0dd2929ec38008" - dependencies: - js-beautify "^1.7.5" - safer-eval "^1.2.3" - -serve-static@^1.12.4: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.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" - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -sha.js@^2.4.0, sha.js@^2.4.8: +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-copy@~0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +shasum@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" dependencies: - shebang-regex "^1.0.0" + json-stable-stringify "~0.0.0" + sha.js "~2.4.4" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -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-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@0.6.1, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -stable@~0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - -static-eval@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864" - dependencies: - escodegen "^1.8.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -static-module@^2.2.0: - version "2.2.5" - resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" - dependencies: - concat-stream "~1.6.0" - convert-source-map "^1.5.1" - duplexer2 "~0.1.4" - escodegen "~1.9.0" - falafel "^2.1.0" - has "^1.0.1" - magic-string "^0.22.4" - merge-source-map "1.0.4" - object-inspect "~1.4.0" - quote-stream "~1.0.2" - readable-stream "~2.3.3" - shallow-copy "~0.0.1" - static-eval "^2.0.0" - through2 "~2.0.3" - -"statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - -stream-browserify@^2.0.1: +stream-browserify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" dependencies: inherits "~2.0.1" readable-stream "^2.0.2" -stream-http@^2.7.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" +stream-combiner2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" + dependencies: + duplexer2 "~0.1.0" + readable-stream "^2.0.2" + +stream-http@^2.0.0: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" dependencies: builtin-status-codes "^3.0.0" inherits "^2.0.1" @@ -3221,174 +854,55 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -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" +stream-splicer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.0.2" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.0.0, string_decoder@~1.1.1: +string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" dependencies: safe-buffer "~5.1.0" -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" +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" dependencies: - ansi-regex "^2.0.0" + minimist "^1.1.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" +syntax-error@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" dependencies: - ansi-regex "^3.0.0" + acorn-node "^1.2.0" -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -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.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -svgo@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.0.5.tgz#7040364c062a0538abacff4401cea6a26a7a389a" - dependencies: - coa "~2.0.1" - colors "~1.1.2" - css-select "~1.3.0-rc0" - css-select-base-adapter "~0.1.0" - css-tree "1.0.0-alpha25" - css-url-regex "^1.1.0" - csso "^3.5.0" - js-yaml "~3.10.0" - mkdirp "~0.5.1" - object.values "^1.0.4" - sax "~1.2.4" - stable "~0.1.6" - unquote "~1.1.1" - util.promisify "~1.0.0" - -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -through2@^2.0.0, through2@~2.0.3: +through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - dependencies: - setimmediate "^1.0.4" +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -tiny-inflate@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" +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" to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toml@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" - -tomlify-j0.4@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" typedarray@^0.0.6: version "0.0.6" @@ -3398,138 +912,41 @@ typescript@^2.9.1: version "2.9.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" -uglify-es@^3.2.1, uglify-es@^3.3.9: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - dependencies: - commander "~2.13.0" - source-map "~0.6.1" +umd@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" -unicode-trie@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" - dependencies: - pako "^0.2.5" - tiny-inflate "^1.0.0" - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url@^0.11.0: +url@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: punycode "1.3.2" querystring "0.2.0" -use@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" - dependencies: - kind-of "^6.0.2" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util.promisify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3, 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" -v8-compile-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" - -vendors@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" - -vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" +util@~0.10.1: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" dependencies: - indexof "0.0.1" + inherits "2.0.3" -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +vm-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.0.1.tgz#a15d7762c4c48fa6bf9f3309a21340f00ed23063" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -ws@^5.1.1: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.0.tgz#9fd95e3ac7c76f6ae8bcc868a0e3f11f1290c33e" - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" From e73b2445990c69e5248d3567628293faba96b186 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 03:59:22 +0200 Subject: [PATCH 37/44] Format json too. --- deno2/tools/format.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deno2/tools/format.sh b/deno2/tools/format.sh index a5c3241756..69d7099193 100755 --- a/deno2/tools/format.sh +++ b/deno2/tools/format.sh @@ -4,4 +4,4 @@ clang-format -i -style Google *.cc *.h include/*.h gn format BUILD.gn gn format .gn yapf -i tools/*.py -prettier --write js/*.ts js/*.js +prettier --write js/*.ts js/*.js js/*.json From 0f71da91d319f1fdb297e096342ac45528544aa1 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 04:45:37 +0200 Subject: [PATCH 38/44] Improve deno2 bundling --- deno2/BUILD.gn | 3 ++- deno2/js/tsconfig.json | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index c8d9f534e8..d41dd9e8dd 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -114,11 +114,12 @@ run_node("run_tsc") { ] args = [ "./node_modules/.bin/tsc", + "-p", + rebase_path("js/tsconfig.json", root_build_dir), "--baseUrl", rebase_path(target_gen_dir + "/node_modules", root_build_dir), "--outDir", rebase_path(out_dir, root_build_dir), - rebase_path(main_source, root_build_dir), ] } diff --git a/deno2/js/tsconfig.json b/deno2/js/tsconfig.json index ba2dbe842c..e9d42d62df 100644 --- a/deno2/js/tsconfig.json +++ b/deno2/js/tsconfig.json @@ -6,7 +6,6 @@ "sourceMap": true, "removeComments": true, "preserveConstEnums": true, - "declaration": true, "target": "es2017", "noImplicitReturns": true, "pretty": true, @@ -14,6 +13,6 @@ "allowUnreachableCode": false, "experimentalDecorators": true }, - "include": ["*.ts", "*.js"], - "exclude": ["tests.ts"] + "include": ["**/*.ts", "**/*.js"], + "exclude": ["mock_runtime.js", "node_modules"] } From dd48f8095c3357e6ec0e66042141c4e342707da5 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 05:16:41 +0200 Subject: [PATCH 39/44] Simplify pbjs build with hack. Just check in the generated files and create them using js/pbjs_hack.py. This allows vscode to be used and sane compilations. --- .gitignore | 4 +- deno2/BUILD.gn | 36 +- deno2/js/main.ts | 2 +- deno2/js/msg.pb.d.ts | 432 +++++++++++ deno2/js/msg.pb.js | 1700 +++++++++++++++++++++++++++++++++++++++++ deno2/js/pbjs_hack.py | 49 ++ 6 files changed, 2191 insertions(+), 32 deletions(-) create mode 100644 deno2/js/msg.pb.d.ts create mode 100644 deno2/js/msg.pb.js create mode 100755 deno2/js/pbjs_hack.py diff --git a/.gitignore b/.gitignore index 9a5e8f7271..0c09b13cdf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,5 @@ dist/ deno assets.go msg.pb.go -msg.pb.js -msg.pb.d.ts +/msg.pb.js +/msg.pb.d.ts diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index d41dd9e8dd..ef4336e079 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -98,8 +98,8 @@ run_node("bundle") { run_node("run_tsc") { main_source = "js/main.ts" sources = [ - "$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts", - "$target_gen_dir/node_modules/deno_pb/msg.pb.js", + "js/msg.pb.d.ts", + "js/msg.pb.js", "js/tsconfig.json", main_source, ] @@ -109,50 +109,28 @@ run_node("run_tsc") { out_dir + "/main.map", ] deps = [ - ":run_pbjs", - ":run_pbts", + ":pbjs_hack", ] args = [ "./node_modules/.bin/tsc", "-p", rebase_path("js/tsconfig.json", root_build_dir), - "--baseUrl", - rebase_path(target_gen_dir + "/node_modules", root_build_dir), "--outDir", rebase_path(out_dir, root_build_dir), ] } -run_node("run_pbjs") { +action("pbjs_hack") { + script = "js/pbjs_hack.py" sources = [ "msg.proto", ] outputs = [ - "$target_gen_dir/node_modules/deno_pb/msg.pb.js", + "$target_gen_dir/pbjs_hack.stamp", ] args = [ - "./node_modules/.bin/pbjs", - "--target=static-module", - "--wraper=commonjs", - "--out=" + rebase_path(outputs[0], root_build_dir), rebase_path(sources[0], root_build_dir), - ] -} - -run_node("run_pbts") { - sources = [ - "$target_gen_dir/node_modules/deno_pb/msg.pb.js", - ] - outputs = [ - "$target_gen_dir/node_modules/deno_pb/msg.pb.d.ts", - ] - args = [ - "./node_modules/.bin/pbts", - "--out=" + rebase_path(outputs[0], root_build_dir), - rebase_path(sources[0], root_build_dir), - ] - deps = [ - ":run_pbjs", + rebase_path(outputs[0], root_build_dir), ] } diff --git a/deno2/js/main.ts b/deno2/js/main.ts index 61294a3070..f9d69f22f5 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,5 +1,5 @@ /// -//import { main as pb } from "deno_pb/msg.pb" +//import { main as pb } from "./msg.pb" import * as ts from "typescript"; const globalEval = eval; diff --git a/deno2/js/msg.pb.d.ts b/deno2/js/msg.pb.d.ts new file mode 100644 index 0000000000..efb7a6383d --- /dev/null +++ b/deno2/js/msg.pb.d.ts @@ -0,0 +1,432 @@ +import * as $protobuf from "protobufjs"; + +/** Namespace main. */ +export namespace main { + /** Properties of a BaseMsg. */ + interface IBaseMsg { + /** BaseMsg channel */ + channel?: string | null; + + /** BaseMsg payload */ + payload?: Uint8Array | null; + } + + /** Represents a BaseMsg. */ + class BaseMsg implements IBaseMsg { + /** + * Constructs a new BaseMsg. + * @param [properties] Properties to set + */ + constructor(properties?: main.IBaseMsg); + + /** BaseMsg channel. */ + public channel: string; + + /** BaseMsg payload. */ + public payload: Uint8Array; + + /** + * Creates a new BaseMsg instance using the specified properties. + * @param [properties] Properties to set + * @returns BaseMsg instance + */ + public static create(properties?: main.IBaseMsg): main.BaseMsg; + + /** + * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @param message BaseMsg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: main.IBaseMsg, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @param message BaseMsg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: main.IBaseMsg, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a BaseMsg message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): main.BaseMsg; + + /** + * Decodes a BaseMsg message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): main.BaseMsg; + + /** + * Verifies a BaseMsg message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string | null; + + /** + * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BaseMsg + */ + public static fromObject(object: { [k: string]: any }): main.BaseMsg; + + /** + * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. + * @param message BaseMsg + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: main.BaseMsg, + options?: $protobuf.IConversionOptions + ): { [k: string]: any }; + + /** + * Converts this BaseMsg to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Msg. */ + interface IMsg { + /** Msg command */ + command?: main.Msg.Command | null; + + /** Msg error */ + error?: string | null; + + /** Msg startCwd */ + startCwd?: string | null; + + /** Msg startArgv */ + startArgv?: string[] | null; + + /** Msg startDebugFlag */ + startDebugFlag?: boolean | null; + + /** Msg startMainJs */ + startMainJs?: string | null; + + /** Msg startMainMap */ + startMainMap?: string | null; + + /** Msg codeFetchModuleSpecifier */ + codeFetchModuleSpecifier?: string | null; + + /** Msg codeFetchContainingFile */ + codeFetchContainingFile?: string | null; + + /** Msg codeFetchResModuleName */ + codeFetchResModuleName?: string | null; + + /** Msg codeFetchResFilename */ + codeFetchResFilename?: string | null; + + /** Msg codeFetchResSourceCode */ + codeFetchResSourceCode?: string | null; + + /** Msg codeFetchResOutputCode */ + codeFetchResOutputCode?: string | null; + + /** Msg codeCacheFilename */ + codeCacheFilename?: string | null; + + /** Msg codeCacheSourceCode */ + codeCacheSourceCode?: string | null; + + /** Msg codeCacheOutputCode */ + codeCacheOutputCode?: string | null; + + /** Msg exitCode */ + exitCode?: number | null; + + /** Msg timerStartId */ + timerStartId?: number | null; + + /** Msg timerStartInterval */ + timerStartInterval?: boolean | null; + + /** Msg timerStartDelay */ + timerStartDelay?: number | null; + + /** Msg timerReadyId */ + timerReadyId?: number | null; + + /** Msg timerReadyDone */ + timerReadyDone?: boolean | null; + + /** Msg timerClearId */ + timerClearId?: number | null; + + /** Msg fetchReqId */ + fetchReqId?: number | null; + + /** Msg fetchReqUrl */ + fetchReqUrl?: string | null; + + /** Msg fetchResId */ + fetchResId?: number | null; + + /** Msg fetchResStatus */ + fetchResStatus?: number | null; + + /** Msg fetchResHeaderLine */ + fetchResHeaderLine?: string[] | null; + + /** Msg fetchResBody */ + fetchResBody?: Uint8Array | null; + + /** Msg readFileSyncFilename */ + readFileSyncFilename?: string | null; + + /** Msg readFileSyncData */ + readFileSyncData?: Uint8Array | null; + + /** Msg writeFileSyncFilename */ + writeFileSyncFilename?: string | null; + + /** Msg writeFileSyncData */ + writeFileSyncData?: Uint8Array | null; + + /** Msg writeFileSyncPerm */ + writeFileSyncPerm?: number | null; + } + + /** Represents a Msg. */ + class Msg implements IMsg { + /** + * Constructs a new Msg. + * @param [properties] Properties to set + */ + constructor(properties?: main.IMsg); + + /** Msg command. */ + public command: main.Msg.Command; + + /** Msg error. */ + public error: string; + + /** Msg startCwd. */ + public startCwd: string; + + /** Msg startArgv. */ + public startArgv: string[]; + + /** Msg startDebugFlag. */ + public startDebugFlag: boolean; + + /** Msg startMainJs. */ + public startMainJs: string; + + /** Msg startMainMap. */ + public startMainMap: string; + + /** Msg codeFetchModuleSpecifier. */ + public codeFetchModuleSpecifier: string; + + /** Msg codeFetchContainingFile. */ + public codeFetchContainingFile: string; + + /** Msg codeFetchResModuleName. */ + public codeFetchResModuleName: string; + + /** Msg codeFetchResFilename. */ + public codeFetchResFilename: string; + + /** Msg codeFetchResSourceCode. */ + public codeFetchResSourceCode: string; + + /** Msg codeFetchResOutputCode. */ + public codeFetchResOutputCode: string; + + /** Msg codeCacheFilename. */ + public codeCacheFilename: string; + + /** Msg codeCacheSourceCode. */ + public codeCacheSourceCode: string; + + /** Msg codeCacheOutputCode. */ + public codeCacheOutputCode: string; + + /** Msg exitCode. */ + public exitCode: number; + + /** Msg timerStartId. */ + public timerStartId: number; + + /** Msg timerStartInterval. */ + public timerStartInterval: boolean; + + /** Msg timerStartDelay. */ + public timerStartDelay: number; + + /** Msg timerReadyId. */ + public timerReadyId: number; + + /** Msg timerReadyDone. */ + public timerReadyDone: boolean; + + /** Msg timerClearId. */ + public timerClearId: number; + + /** Msg fetchReqId. */ + public fetchReqId: number; + + /** Msg fetchReqUrl. */ + public fetchReqUrl: string; + + /** Msg fetchResId. */ + public fetchResId: number; + + /** Msg fetchResStatus. */ + public fetchResStatus: number; + + /** Msg fetchResHeaderLine. */ + public fetchResHeaderLine: string[]; + + /** Msg fetchResBody. */ + public fetchResBody: Uint8Array; + + /** Msg readFileSyncFilename. */ + public readFileSyncFilename: string; + + /** Msg readFileSyncData. */ + public readFileSyncData: Uint8Array; + + /** Msg writeFileSyncFilename. */ + public writeFileSyncFilename: string; + + /** Msg writeFileSyncData. */ + public writeFileSyncData: Uint8Array; + + /** Msg writeFileSyncPerm. */ + public writeFileSyncPerm: number; + + /** + * Creates a new Msg instance using the specified properties. + * @param [properties] Properties to set + * @returns Msg instance + */ + public static create(properties?: main.IMsg): main.Msg; + + /** + * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. + * @param message Msg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode( + message: main.IMsg, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. + * @param message Msg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited( + message: main.IMsg, + writer?: $protobuf.Writer + ): $protobuf.Writer; + + /** + * Decodes a Msg message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode( + reader: $protobuf.Reader | Uint8Array, + length?: number + ): main.Msg; + + /** + * Decodes a Msg message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited( + reader: $protobuf.Reader | Uint8Array + ): main.Msg; + + /** + * Verifies a Msg message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): string | null; + + /** + * Creates a Msg message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Msg + */ + public static fromObject(object: { [k: string]: any }): main.Msg; + + /** + * Creates a plain object from a Msg message. Also converts values to other types if specified. + * @param message Msg + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject( + message: main.Msg, + options?: $protobuf.IConversionOptions + ): { [k: string]: any }; + + /** + * Converts this Msg to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Msg { + /** Command enum. */ + enum Command { + ERROR = 0, + START = 1, + CODE_FETCH = 2, + CODE_FETCH_RES = 3, + CODE_CACHE = 4, + EXIT = 5, + TIMER_START = 6, + TIMER_READY = 7, + TIMER_CLEAR = 8, + FETCH_REQ = 9, + FETCH_RES = 10, + READ_FILE_SYNC = 11, + READ_FILE_SYNC_RES = 12, + WRITE_FILE_SYNC = 13 + } + } +} diff --git a/deno2/js/msg.pb.js b/deno2/js/msg.pb.js new file mode 100644 index 0000000000..777923a324 --- /dev/null +++ b/deno2/js/msg.pb.js @@ -0,0 +1,1700 @@ +/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/ +(function(global, factory) { + /* global define, require, module */ + + /* AMD */ if (typeof define === "function" && define.amd) + define(["protobufjs/minimal"], factory); + /* CommonJS */ else if ( + typeof require === "function" && + typeof module === "object" && + module && + module.exports + ) + module.exports = factory(require("protobufjs/minimal")); +})(this, function($protobuf) { + "use strict"; + + // Common aliases + var $Reader = $protobuf.Reader, + $Writer = $protobuf.Writer, + $util = $protobuf.util; + + // Exported root namespace + var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + + $root.main = (function() { + /** + * Namespace main. + * @exports main + * @namespace + */ + var main = {}; + + main.BaseMsg = (function() { + /** + * Properties of a BaseMsg. + * @memberof main + * @interface IBaseMsg + * @property {string|null} [channel] BaseMsg channel + * @property {Uint8Array|null} [payload] BaseMsg payload + */ + + /** + * Constructs a new BaseMsg. + * @memberof main + * @classdesc Represents a BaseMsg. + * @implements IBaseMsg + * @constructor + * @param {main.IBaseMsg=} [properties] Properties to set + */ + function BaseMsg(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BaseMsg channel. + * @member {string} channel + * @memberof main.BaseMsg + * @instance + */ + BaseMsg.prototype.channel = ""; + + /** + * BaseMsg payload. + * @member {Uint8Array} payload + * @memberof main.BaseMsg + * @instance + */ + BaseMsg.prototype.payload = $util.newBuffer([]); + + /** + * Creates a new BaseMsg instance using the specified properties. + * @function create + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg=} [properties] Properties to set + * @returns {main.BaseMsg} BaseMsg instance + */ + BaseMsg.create = function create(properties) { + return new BaseMsg(properties); + }; + + /** + * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @function encode + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg} message BaseMsg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BaseMsg.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.channel != null && message.hasOwnProperty("channel")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.channel); + if (message.payload != null && message.hasOwnProperty("payload")) + writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.payload); + return writer; + }; + + /** + * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @function encodeDelimited + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg} message BaseMsg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BaseMsg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BaseMsg message from the specified reader or buffer. + * @function decode + * @memberof main.BaseMsg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {main.BaseMsg} BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BaseMsg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.main.BaseMsg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.channel = reader.string(); + break; + case 2: + message.payload = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BaseMsg message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof main.BaseMsg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {main.BaseMsg} BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BaseMsg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BaseMsg message. + * @function verify + * @memberof main.BaseMsg + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BaseMsg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.channel != null && message.hasOwnProperty("channel")) + if (!$util.isString(message.channel)) + return "channel: string expected"; + if (message.payload != null && message.hasOwnProperty("payload")) + if ( + !( + (message.payload && typeof message.payload.length === "number") || + $util.isString(message.payload) + ) + ) + return "payload: buffer expected"; + return null; + }; + + /** + * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof main.BaseMsg + * @static + * @param {Object.} object Plain object + * @returns {main.BaseMsg} BaseMsg + */ + BaseMsg.fromObject = function fromObject(object) { + if (object instanceof $root.main.BaseMsg) return object; + var message = new $root.main.BaseMsg(); + if (object.channel != null) message.channel = String(object.channel); + if (object.payload != null) + if (typeof object.payload === "string") + $util.base64.decode( + object.payload, + (message.payload = $util.newBuffer( + $util.base64.length(object.payload) + )), + 0 + ); + else if (object.payload.length) message.payload = object.payload; + return message; + }; + + /** + * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. + * @function toObject + * @memberof main.BaseMsg + * @static + * @param {main.BaseMsg} message BaseMsg + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BaseMsg.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.defaults) { + object.channel = ""; + object.payload = options.bytes === String ? "" : []; + } + if (message.channel != null && message.hasOwnProperty("channel")) + object.channel = message.channel; + if (message.payload != null && message.hasOwnProperty("payload")) + object.payload = + options.bytes === String + ? $util.base64.encode(message.payload, 0, message.payload.length) + : options.bytes === Array + ? Array.prototype.slice.call(message.payload) + : message.payload; + return object; + }; + + /** + * Converts this BaseMsg to JSON. + * @function toJSON + * @memberof main.BaseMsg + * @instance + * @returns {Object.} JSON object + */ + BaseMsg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BaseMsg; + })(); + + main.Msg = (function() { + /** + * Properties of a Msg. + * @memberof main + * @interface IMsg + * @property {main.Msg.Command|null} [command] Msg command + * @property {string|null} [error] Msg error + * @property {string|null} [startCwd] Msg startCwd + * @property {Array.|null} [startArgv] Msg startArgv + * @property {boolean|null} [startDebugFlag] Msg startDebugFlag + * @property {string|null} [startMainJs] Msg startMainJs + * @property {string|null} [startMainMap] Msg startMainMap + * @property {string|null} [codeFetchModuleSpecifier] Msg codeFetchModuleSpecifier + * @property {string|null} [codeFetchContainingFile] Msg codeFetchContainingFile + * @property {string|null} [codeFetchResModuleName] Msg codeFetchResModuleName + * @property {string|null} [codeFetchResFilename] Msg codeFetchResFilename + * @property {string|null} [codeFetchResSourceCode] Msg codeFetchResSourceCode + * @property {string|null} [codeFetchResOutputCode] Msg codeFetchResOutputCode + * @property {string|null} [codeCacheFilename] Msg codeCacheFilename + * @property {string|null} [codeCacheSourceCode] Msg codeCacheSourceCode + * @property {string|null} [codeCacheOutputCode] Msg codeCacheOutputCode + * @property {number|null} [exitCode] Msg exitCode + * @property {number|null} [timerStartId] Msg timerStartId + * @property {boolean|null} [timerStartInterval] Msg timerStartInterval + * @property {number|null} [timerStartDelay] Msg timerStartDelay + * @property {number|null} [timerReadyId] Msg timerReadyId + * @property {boolean|null} [timerReadyDone] Msg timerReadyDone + * @property {number|null} [timerClearId] Msg timerClearId + * @property {number|null} [fetchReqId] Msg fetchReqId + * @property {string|null} [fetchReqUrl] Msg fetchReqUrl + * @property {number|null} [fetchResId] Msg fetchResId + * @property {number|null} [fetchResStatus] Msg fetchResStatus + * @property {Array.|null} [fetchResHeaderLine] Msg fetchResHeaderLine + * @property {Uint8Array|null} [fetchResBody] Msg fetchResBody + * @property {string|null} [readFileSyncFilename] Msg readFileSyncFilename + * @property {Uint8Array|null} [readFileSyncData] Msg readFileSyncData + * @property {string|null} [writeFileSyncFilename] Msg writeFileSyncFilename + * @property {Uint8Array|null} [writeFileSyncData] Msg writeFileSyncData + * @property {number|null} [writeFileSyncPerm] Msg writeFileSyncPerm + */ + + /** + * Constructs a new Msg. + * @memberof main + * @classdesc Represents a Msg. + * @implements IMsg + * @constructor + * @param {main.IMsg=} [properties] Properties to set + */ + function Msg(properties) { + this.startArgv = []; + this.fetchResHeaderLine = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Msg command. + * @member {main.Msg.Command} command + * @memberof main.Msg + * @instance + */ + Msg.prototype.command = 0; + + /** + * Msg error. + * @member {string} error + * @memberof main.Msg + * @instance + */ + Msg.prototype.error = ""; + + /** + * Msg startCwd. + * @member {string} startCwd + * @memberof main.Msg + * @instance + */ + Msg.prototype.startCwd = ""; + + /** + * Msg startArgv. + * @member {Array.} startArgv + * @memberof main.Msg + * @instance + */ + Msg.prototype.startArgv = $util.emptyArray; + + /** + * Msg startDebugFlag. + * @member {boolean} startDebugFlag + * @memberof main.Msg + * @instance + */ + Msg.prototype.startDebugFlag = false; + + /** + * Msg startMainJs. + * @member {string} startMainJs + * @memberof main.Msg + * @instance + */ + Msg.prototype.startMainJs = ""; + + /** + * Msg startMainMap. + * @member {string} startMainMap + * @memberof main.Msg + * @instance + */ + Msg.prototype.startMainMap = ""; + + /** + * Msg codeFetchModuleSpecifier. + * @member {string} codeFetchModuleSpecifier + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchModuleSpecifier = ""; + + /** + * Msg codeFetchContainingFile. + * @member {string} codeFetchContainingFile + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchContainingFile = ""; + + /** + * Msg codeFetchResModuleName. + * @member {string} codeFetchResModuleName + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResModuleName = ""; + + /** + * Msg codeFetchResFilename. + * @member {string} codeFetchResFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResFilename = ""; + + /** + * Msg codeFetchResSourceCode. + * @member {string} codeFetchResSourceCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResSourceCode = ""; + + /** + * Msg codeFetchResOutputCode. + * @member {string} codeFetchResOutputCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResOutputCode = ""; + + /** + * Msg codeCacheFilename. + * @member {string} codeCacheFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheFilename = ""; + + /** + * Msg codeCacheSourceCode. + * @member {string} codeCacheSourceCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheSourceCode = ""; + + /** + * Msg codeCacheOutputCode. + * @member {string} codeCacheOutputCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheOutputCode = ""; + + /** + * Msg exitCode. + * @member {number} exitCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.exitCode = 0; + + /** + * Msg timerStartId. + * @member {number} timerStartId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartId = 0; + + /** + * Msg timerStartInterval. + * @member {boolean} timerStartInterval + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartInterval = false; + + /** + * Msg timerStartDelay. + * @member {number} timerStartDelay + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartDelay = 0; + + /** + * Msg timerReadyId. + * @member {number} timerReadyId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerReadyId = 0; + + /** + * Msg timerReadyDone. + * @member {boolean} timerReadyDone + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerReadyDone = false; + + /** + * Msg timerClearId. + * @member {number} timerClearId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerClearId = 0; + + /** + * Msg fetchReqId. + * @member {number} fetchReqId + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchReqId = 0; + + /** + * Msg fetchReqUrl. + * @member {string} fetchReqUrl + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchReqUrl = ""; + + /** + * Msg fetchResId. + * @member {number} fetchResId + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResId = 0; + + /** + * Msg fetchResStatus. + * @member {number} fetchResStatus + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResStatus = 0; + + /** + * Msg fetchResHeaderLine. + * @member {Array.} fetchResHeaderLine + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResHeaderLine = $util.emptyArray; + + /** + * Msg fetchResBody. + * @member {Uint8Array} fetchResBody + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResBody = $util.newBuffer([]); + + /** + * Msg readFileSyncFilename. + * @member {string} readFileSyncFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.readFileSyncFilename = ""; + + /** + * Msg readFileSyncData. + * @member {Uint8Array} readFileSyncData + * @memberof main.Msg + * @instance + */ + Msg.prototype.readFileSyncData = $util.newBuffer([]); + + /** + * Msg writeFileSyncFilename. + * @member {string} writeFileSyncFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncFilename = ""; + + /** + * Msg writeFileSyncData. + * @member {Uint8Array} writeFileSyncData + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncData = $util.newBuffer([]); + + /** + * Msg writeFileSyncPerm. + * @member {number} writeFileSyncPerm + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncPerm = 0; + + /** + * Creates a new Msg instance using the specified properties. + * @function create + * @memberof main.Msg + * @static + * @param {main.IMsg=} [properties] Properties to set + * @returns {main.Msg} Msg instance + */ + Msg.create = function create(properties) { + return new Msg(properties); + }; + + /** + * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. + * @function encode + * @memberof main.Msg + * @static + * @param {main.IMsg} message Msg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Msg.encode = function encode(message, writer) { + if (!writer) writer = $Writer.create(); + if (message.command != null && message.hasOwnProperty("command")) + writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.command); + if (message.error != null && message.hasOwnProperty("error")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.error); + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + writer.uint32(/* id 10, wireType 2 =*/ 82).string(message.startCwd); + if (message.startArgv != null && message.startArgv.length) + for (var i = 0; i < message.startArgv.length; ++i) + writer + .uint32(/* id 11, wireType 2 =*/ 90) + .string(message.startArgv[i]); + if ( + message.startDebugFlag != null && + message.hasOwnProperty("startDebugFlag") + ) + writer + .uint32(/* id 12, wireType 0 =*/ 96) + .bool(message.startDebugFlag); + if ( + message.startMainJs != null && + message.hasOwnProperty("startMainJs") + ) + writer + .uint32(/* id 13, wireType 2 =*/ 106) + .string(message.startMainJs); + if ( + message.startMainMap != null && + message.hasOwnProperty("startMainMap") + ) + writer + .uint32(/* id 14, wireType 2 =*/ 114) + .string(message.startMainMap); + if ( + message.codeFetchModuleSpecifier != null && + message.hasOwnProperty("codeFetchModuleSpecifier") + ) + writer + .uint32(/* id 20, wireType 2 =*/ 162) + .string(message.codeFetchModuleSpecifier); + if ( + message.codeFetchContainingFile != null && + message.hasOwnProperty("codeFetchContainingFile") + ) + writer + .uint32(/* id 21, wireType 2 =*/ 170) + .string(message.codeFetchContainingFile); + if ( + message.codeFetchResModuleName != null && + message.hasOwnProperty("codeFetchResModuleName") + ) + writer + .uint32(/* id 30, wireType 2 =*/ 242) + .string(message.codeFetchResModuleName); + if ( + message.codeFetchResFilename != null && + message.hasOwnProperty("codeFetchResFilename") + ) + writer + .uint32(/* id 31, wireType 2 =*/ 250) + .string(message.codeFetchResFilename); + if ( + message.codeFetchResSourceCode != null && + message.hasOwnProperty("codeFetchResSourceCode") + ) + writer + .uint32(/* id 32, wireType 2 =*/ 258) + .string(message.codeFetchResSourceCode); + if ( + message.codeFetchResOutputCode != null && + message.hasOwnProperty("codeFetchResOutputCode") + ) + writer + .uint32(/* id 33, wireType 2 =*/ 266) + .string(message.codeFetchResOutputCode); + if ( + message.codeCacheFilename != null && + message.hasOwnProperty("codeCacheFilename") + ) + writer + .uint32(/* id 41, wireType 2 =*/ 330) + .string(message.codeCacheFilename); + if ( + message.codeCacheSourceCode != null && + message.hasOwnProperty("codeCacheSourceCode") + ) + writer + .uint32(/* id 42, wireType 2 =*/ 338) + .string(message.codeCacheSourceCode); + if ( + message.codeCacheOutputCode != null && + message.hasOwnProperty("codeCacheOutputCode") + ) + writer + .uint32(/* id 43, wireType 2 =*/ 346) + .string(message.codeCacheOutputCode); + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + writer.uint32(/* id 50, wireType 0 =*/ 400).int32(message.exitCode); + if ( + message.timerStartId != null && + message.hasOwnProperty("timerStartId") + ) + writer + .uint32(/* id 60, wireType 0 =*/ 480) + .int32(message.timerStartId); + if ( + message.timerStartInterval != null && + message.hasOwnProperty("timerStartInterval") + ) + writer + .uint32(/* id 61, wireType 0 =*/ 488) + .bool(message.timerStartInterval); + if ( + message.timerStartDelay != null && + message.hasOwnProperty("timerStartDelay") + ) + writer + .uint32(/* id 62, wireType 0 =*/ 496) + .int32(message.timerStartDelay); + if ( + message.timerReadyId != null && + message.hasOwnProperty("timerReadyId") + ) + writer + .uint32(/* id 70, wireType 0 =*/ 560) + .int32(message.timerReadyId); + if ( + message.timerReadyDone != null && + message.hasOwnProperty("timerReadyDone") + ) + writer + .uint32(/* id 71, wireType 0 =*/ 568) + .bool(message.timerReadyDone); + if ( + message.timerClearId != null && + message.hasOwnProperty("timerClearId") + ) + writer + .uint32(/* id 80, wireType 0 =*/ 640) + .int32(message.timerClearId); + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + writer.uint32(/* id 90, wireType 0 =*/ 720).int32(message.fetchReqId); + if ( + message.fetchReqUrl != null && + message.hasOwnProperty("fetchReqUrl") + ) + writer + .uint32(/* id 91, wireType 2 =*/ 730) + .string(message.fetchReqUrl); + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + writer + .uint32(/* id 100, wireType 0 =*/ 800) + .int32(message.fetchResId); + if ( + message.fetchResStatus != null && + message.hasOwnProperty("fetchResStatus") + ) + writer + .uint32(/* id 101, wireType 0 =*/ 808) + .int32(message.fetchResStatus); + if ( + message.fetchResHeaderLine != null && + message.fetchResHeaderLine.length + ) + for (var i = 0; i < message.fetchResHeaderLine.length; ++i) + writer + .uint32(/* id 102, wireType 2 =*/ 818) + .string(message.fetchResHeaderLine[i]); + if ( + message.fetchResBody != null && + message.hasOwnProperty("fetchResBody") + ) + writer + .uint32(/* id 103, wireType 2 =*/ 826) + .bytes(message.fetchResBody); + if ( + message.readFileSyncFilename != null && + message.hasOwnProperty("readFileSyncFilename") + ) + writer + .uint32(/* id 110, wireType 2 =*/ 882) + .string(message.readFileSyncFilename); + if ( + message.readFileSyncData != null && + message.hasOwnProperty("readFileSyncData") + ) + writer + .uint32(/* id 120, wireType 2 =*/ 962) + .bytes(message.readFileSyncData); + if ( + message.writeFileSyncFilename != null && + message.hasOwnProperty("writeFileSyncFilename") + ) + writer + .uint32(/* id 130, wireType 2 =*/ 1042) + .string(message.writeFileSyncFilename); + if ( + message.writeFileSyncData != null && + message.hasOwnProperty("writeFileSyncData") + ) + writer + .uint32(/* id 131, wireType 2 =*/ 1050) + .bytes(message.writeFileSyncData); + if ( + message.writeFileSyncPerm != null && + message.hasOwnProperty("writeFileSyncPerm") + ) + writer + .uint32(/* id 132, wireType 0 =*/ 1056) + .uint32(message.writeFileSyncPerm); + return writer; + }; + + /** + * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. + * @function encodeDelimited + * @memberof main.Msg + * @static + * @param {main.IMsg} message Msg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Msg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Msg message from the specified reader or buffer. + * @function decode + * @memberof main.Msg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {main.Msg} Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Msg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, + message = new $root.main.Msg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.command = reader.int32(); + break; + case 2: + message.error = reader.string(); + break; + case 10: + message.startCwd = reader.string(); + break; + case 11: + if (!(message.startArgv && message.startArgv.length)) + message.startArgv = []; + message.startArgv.push(reader.string()); + break; + case 12: + message.startDebugFlag = reader.bool(); + break; + case 13: + message.startMainJs = reader.string(); + break; + case 14: + message.startMainMap = reader.string(); + break; + case 20: + message.codeFetchModuleSpecifier = reader.string(); + break; + case 21: + message.codeFetchContainingFile = reader.string(); + break; + case 30: + message.codeFetchResModuleName = reader.string(); + break; + case 31: + message.codeFetchResFilename = reader.string(); + break; + case 32: + message.codeFetchResSourceCode = reader.string(); + break; + case 33: + message.codeFetchResOutputCode = reader.string(); + break; + case 41: + message.codeCacheFilename = reader.string(); + break; + case 42: + message.codeCacheSourceCode = reader.string(); + break; + case 43: + message.codeCacheOutputCode = reader.string(); + break; + case 50: + message.exitCode = reader.int32(); + break; + case 60: + message.timerStartId = reader.int32(); + break; + case 61: + message.timerStartInterval = reader.bool(); + break; + case 62: + message.timerStartDelay = reader.int32(); + break; + case 70: + message.timerReadyId = reader.int32(); + break; + case 71: + message.timerReadyDone = reader.bool(); + break; + case 80: + message.timerClearId = reader.int32(); + break; + case 90: + message.fetchReqId = reader.int32(); + break; + case 91: + message.fetchReqUrl = reader.string(); + break; + case 100: + message.fetchResId = reader.int32(); + break; + case 101: + message.fetchResStatus = reader.int32(); + break; + case 102: + if ( + !( + message.fetchResHeaderLine && + message.fetchResHeaderLine.length + ) + ) + message.fetchResHeaderLine = []; + message.fetchResHeaderLine.push(reader.string()); + break; + case 103: + message.fetchResBody = reader.bytes(); + break; + case 110: + message.readFileSyncFilename = reader.string(); + break; + case 120: + message.readFileSyncData = reader.bytes(); + break; + case 130: + message.writeFileSyncFilename = reader.string(); + break; + case 131: + message.writeFileSyncData = reader.bytes(); + break; + case 132: + message.writeFileSyncPerm = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Msg message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof main.Msg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {main.Msg} Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Msg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Msg message. + * @function verify + * @memberof main.Msg + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Msg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.command != null && message.hasOwnProperty("command")) + switch (message.command) { + default: + return "command: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + break; + } + if (message.error != null && message.hasOwnProperty("error")) + if (!$util.isString(message.error)) return "error: string expected"; + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + if (!$util.isString(message.startCwd)) + return "startCwd: string expected"; + if (message.startArgv != null && message.hasOwnProperty("startArgv")) { + if (!Array.isArray(message.startArgv)) + return "startArgv: array expected"; + for (var i = 0; i < message.startArgv.length; ++i) + if (!$util.isString(message.startArgv[i])) + return "startArgv: string[] expected"; + } + if ( + message.startDebugFlag != null && + message.hasOwnProperty("startDebugFlag") + ) + if (typeof message.startDebugFlag !== "boolean") + return "startDebugFlag: boolean expected"; + if ( + message.startMainJs != null && + message.hasOwnProperty("startMainJs") + ) + if (!$util.isString(message.startMainJs)) + return "startMainJs: string expected"; + if ( + message.startMainMap != null && + message.hasOwnProperty("startMainMap") + ) + if (!$util.isString(message.startMainMap)) + return "startMainMap: string expected"; + if ( + message.codeFetchModuleSpecifier != null && + message.hasOwnProperty("codeFetchModuleSpecifier") + ) + if (!$util.isString(message.codeFetchModuleSpecifier)) + return "codeFetchModuleSpecifier: string expected"; + if ( + message.codeFetchContainingFile != null && + message.hasOwnProperty("codeFetchContainingFile") + ) + if (!$util.isString(message.codeFetchContainingFile)) + return "codeFetchContainingFile: string expected"; + if ( + message.codeFetchResModuleName != null && + message.hasOwnProperty("codeFetchResModuleName") + ) + if (!$util.isString(message.codeFetchResModuleName)) + return "codeFetchResModuleName: string expected"; + if ( + message.codeFetchResFilename != null && + message.hasOwnProperty("codeFetchResFilename") + ) + if (!$util.isString(message.codeFetchResFilename)) + return "codeFetchResFilename: string expected"; + if ( + message.codeFetchResSourceCode != null && + message.hasOwnProperty("codeFetchResSourceCode") + ) + if (!$util.isString(message.codeFetchResSourceCode)) + return "codeFetchResSourceCode: string expected"; + if ( + message.codeFetchResOutputCode != null && + message.hasOwnProperty("codeFetchResOutputCode") + ) + if (!$util.isString(message.codeFetchResOutputCode)) + return "codeFetchResOutputCode: string expected"; + if ( + message.codeCacheFilename != null && + message.hasOwnProperty("codeCacheFilename") + ) + if (!$util.isString(message.codeCacheFilename)) + return "codeCacheFilename: string expected"; + if ( + message.codeCacheSourceCode != null && + message.hasOwnProperty("codeCacheSourceCode") + ) + if (!$util.isString(message.codeCacheSourceCode)) + return "codeCacheSourceCode: string expected"; + if ( + message.codeCacheOutputCode != null && + message.hasOwnProperty("codeCacheOutputCode") + ) + if (!$util.isString(message.codeCacheOutputCode)) + return "codeCacheOutputCode: string expected"; + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + if (!$util.isInteger(message.exitCode)) + return "exitCode: integer expected"; + if ( + message.timerStartId != null && + message.hasOwnProperty("timerStartId") + ) + if (!$util.isInteger(message.timerStartId)) + return "timerStartId: integer expected"; + if ( + message.timerStartInterval != null && + message.hasOwnProperty("timerStartInterval") + ) + if (typeof message.timerStartInterval !== "boolean") + return "timerStartInterval: boolean expected"; + if ( + message.timerStartDelay != null && + message.hasOwnProperty("timerStartDelay") + ) + if (!$util.isInteger(message.timerStartDelay)) + return "timerStartDelay: integer expected"; + if ( + message.timerReadyId != null && + message.hasOwnProperty("timerReadyId") + ) + if (!$util.isInteger(message.timerReadyId)) + return "timerReadyId: integer expected"; + if ( + message.timerReadyDone != null && + message.hasOwnProperty("timerReadyDone") + ) + if (typeof message.timerReadyDone !== "boolean") + return "timerReadyDone: boolean expected"; + if ( + message.timerClearId != null && + message.hasOwnProperty("timerClearId") + ) + if (!$util.isInteger(message.timerClearId)) + return "timerClearId: integer expected"; + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + if (!$util.isInteger(message.fetchReqId)) + return "fetchReqId: integer expected"; + if ( + message.fetchReqUrl != null && + message.hasOwnProperty("fetchReqUrl") + ) + if (!$util.isString(message.fetchReqUrl)) + return "fetchReqUrl: string expected"; + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + if (!$util.isInteger(message.fetchResId)) + return "fetchResId: integer expected"; + if ( + message.fetchResStatus != null && + message.hasOwnProperty("fetchResStatus") + ) + if (!$util.isInteger(message.fetchResStatus)) + return "fetchResStatus: integer expected"; + if ( + message.fetchResHeaderLine != null && + message.hasOwnProperty("fetchResHeaderLine") + ) { + if (!Array.isArray(message.fetchResHeaderLine)) + return "fetchResHeaderLine: array expected"; + for (var i = 0; i < message.fetchResHeaderLine.length; ++i) + if (!$util.isString(message.fetchResHeaderLine[i])) + return "fetchResHeaderLine: string[] expected"; + } + if ( + message.fetchResBody != null && + message.hasOwnProperty("fetchResBody") + ) + if ( + !( + (message.fetchResBody && + typeof message.fetchResBody.length === "number") || + $util.isString(message.fetchResBody) + ) + ) + return "fetchResBody: buffer expected"; + if ( + message.readFileSyncFilename != null && + message.hasOwnProperty("readFileSyncFilename") + ) + if (!$util.isString(message.readFileSyncFilename)) + return "readFileSyncFilename: string expected"; + if ( + message.readFileSyncData != null && + message.hasOwnProperty("readFileSyncData") + ) + if ( + !( + (message.readFileSyncData && + typeof message.readFileSyncData.length === "number") || + $util.isString(message.readFileSyncData) + ) + ) + return "readFileSyncData: buffer expected"; + if ( + message.writeFileSyncFilename != null && + message.hasOwnProperty("writeFileSyncFilename") + ) + if (!$util.isString(message.writeFileSyncFilename)) + return "writeFileSyncFilename: string expected"; + if ( + message.writeFileSyncData != null && + message.hasOwnProperty("writeFileSyncData") + ) + if ( + !( + (message.writeFileSyncData && + typeof message.writeFileSyncData.length === "number") || + $util.isString(message.writeFileSyncData) + ) + ) + return "writeFileSyncData: buffer expected"; + if ( + message.writeFileSyncPerm != null && + message.hasOwnProperty("writeFileSyncPerm") + ) + if (!$util.isInteger(message.writeFileSyncPerm)) + return "writeFileSyncPerm: integer expected"; + return null; + }; + + /** + * Creates a Msg message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof main.Msg + * @static + * @param {Object.} object Plain object + * @returns {main.Msg} Msg + */ + Msg.fromObject = function fromObject(object) { + if (object instanceof $root.main.Msg) return object; + var message = new $root.main.Msg(); + switch (object.command) { + case "ERROR": + case 0: + message.command = 0; + break; + case "START": + case 1: + message.command = 1; + break; + case "CODE_FETCH": + case 2: + message.command = 2; + break; + case "CODE_FETCH_RES": + case 3: + message.command = 3; + break; + case "CODE_CACHE": + case 4: + message.command = 4; + break; + case "EXIT": + case 5: + message.command = 5; + break; + case "TIMER_START": + case 6: + message.command = 6; + break; + case "TIMER_READY": + case 7: + message.command = 7; + break; + case "TIMER_CLEAR": + case 8: + message.command = 8; + break; + case "FETCH_REQ": + case 9: + message.command = 9; + break; + case "FETCH_RES": + case 10: + message.command = 10; + break; + case "READ_FILE_SYNC": + case 11: + message.command = 11; + break; + case "READ_FILE_SYNC_RES": + case 12: + message.command = 12; + break; + case "WRITE_FILE_SYNC": + case 13: + message.command = 13; + break; + } + if (object.error != null) message.error = String(object.error); + if (object.startCwd != null) message.startCwd = String(object.startCwd); + if (object.startArgv) { + if (!Array.isArray(object.startArgv)) + throw TypeError(".main.Msg.startArgv: array expected"); + message.startArgv = []; + for (var i = 0; i < object.startArgv.length; ++i) + message.startArgv[i] = String(object.startArgv[i]); + } + if (object.startDebugFlag != null) + message.startDebugFlag = Boolean(object.startDebugFlag); + if (object.startMainJs != null) + message.startMainJs = String(object.startMainJs); + if (object.startMainMap != null) + message.startMainMap = String(object.startMainMap); + if (object.codeFetchModuleSpecifier != null) + message.codeFetchModuleSpecifier = String( + object.codeFetchModuleSpecifier + ); + if (object.codeFetchContainingFile != null) + message.codeFetchContainingFile = String( + object.codeFetchContainingFile + ); + if (object.codeFetchResModuleName != null) + message.codeFetchResModuleName = String( + object.codeFetchResModuleName + ); + if (object.codeFetchResFilename != null) + message.codeFetchResFilename = String(object.codeFetchResFilename); + if (object.codeFetchResSourceCode != null) + message.codeFetchResSourceCode = String( + object.codeFetchResSourceCode + ); + if (object.codeFetchResOutputCode != null) + message.codeFetchResOutputCode = String( + object.codeFetchResOutputCode + ); + if (object.codeCacheFilename != null) + message.codeCacheFilename = String(object.codeCacheFilename); + if (object.codeCacheSourceCode != null) + message.codeCacheSourceCode = String(object.codeCacheSourceCode); + if (object.codeCacheOutputCode != null) + message.codeCacheOutputCode = String(object.codeCacheOutputCode); + if (object.exitCode != null) message.exitCode = object.exitCode | 0; + if (object.timerStartId != null) + message.timerStartId = object.timerStartId | 0; + if (object.timerStartInterval != null) + message.timerStartInterval = Boolean(object.timerStartInterval); + if (object.timerStartDelay != null) + message.timerStartDelay = object.timerStartDelay | 0; + if (object.timerReadyId != null) + message.timerReadyId = object.timerReadyId | 0; + if (object.timerReadyDone != null) + message.timerReadyDone = Boolean(object.timerReadyDone); + if (object.timerClearId != null) + message.timerClearId = object.timerClearId | 0; + if (object.fetchReqId != null) + message.fetchReqId = object.fetchReqId | 0; + if (object.fetchReqUrl != null) + message.fetchReqUrl = String(object.fetchReqUrl); + if (object.fetchResId != null) + message.fetchResId = object.fetchResId | 0; + if (object.fetchResStatus != null) + message.fetchResStatus = object.fetchResStatus | 0; + if (object.fetchResHeaderLine) { + if (!Array.isArray(object.fetchResHeaderLine)) + throw TypeError(".main.Msg.fetchResHeaderLine: array expected"); + message.fetchResHeaderLine = []; + for (var i = 0; i < object.fetchResHeaderLine.length; ++i) + message.fetchResHeaderLine[i] = String( + object.fetchResHeaderLine[i] + ); + } + if (object.fetchResBody != null) + if (typeof object.fetchResBody === "string") + $util.base64.decode( + object.fetchResBody, + (message.fetchResBody = $util.newBuffer( + $util.base64.length(object.fetchResBody) + )), + 0 + ); + else if (object.fetchResBody.length) + message.fetchResBody = object.fetchResBody; + if (object.readFileSyncFilename != null) + message.readFileSyncFilename = String(object.readFileSyncFilename); + if (object.readFileSyncData != null) + if (typeof object.readFileSyncData === "string") + $util.base64.decode( + object.readFileSyncData, + (message.readFileSyncData = $util.newBuffer( + $util.base64.length(object.readFileSyncData) + )), + 0 + ); + else if (object.readFileSyncData.length) + message.readFileSyncData = object.readFileSyncData; + if (object.writeFileSyncFilename != null) + message.writeFileSyncFilename = String(object.writeFileSyncFilename); + if (object.writeFileSyncData != null) + if (typeof object.writeFileSyncData === "string") + $util.base64.decode( + object.writeFileSyncData, + (message.writeFileSyncData = $util.newBuffer( + $util.base64.length(object.writeFileSyncData) + )), + 0 + ); + else if (object.writeFileSyncData.length) + message.writeFileSyncData = object.writeFileSyncData; + if (object.writeFileSyncPerm != null) + message.writeFileSyncPerm = object.writeFileSyncPerm >>> 0; + return message; + }; + + /** + * Creates a plain object from a Msg message. Also converts values to other types if specified. + * @function toObject + * @memberof main.Msg + * @static + * @param {main.Msg} message Msg + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Msg.toObject = function toObject(message, options) { + if (!options) options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.startArgv = []; + object.fetchResHeaderLine = []; + } + if (options.defaults) { + object.command = options.enums === String ? "ERROR" : 0; + object.error = ""; + object.startCwd = ""; + object.startDebugFlag = false; + object.startMainJs = ""; + object.startMainMap = ""; + object.codeFetchModuleSpecifier = ""; + object.codeFetchContainingFile = ""; + object.codeFetchResModuleName = ""; + object.codeFetchResFilename = ""; + object.codeFetchResSourceCode = ""; + object.codeFetchResOutputCode = ""; + object.codeCacheFilename = ""; + object.codeCacheSourceCode = ""; + object.codeCacheOutputCode = ""; + object.exitCode = 0; + object.timerStartId = 0; + object.timerStartInterval = false; + object.timerStartDelay = 0; + object.timerReadyId = 0; + object.timerReadyDone = false; + object.timerClearId = 0; + object.fetchReqId = 0; + object.fetchReqUrl = ""; + object.fetchResId = 0; + object.fetchResStatus = 0; + object.fetchResBody = options.bytes === String ? "" : []; + object.readFileSyncFilename = ""; + object.readFileSyncData = options.bytes === String ? "" : []; + object.writeFileSyncFilename = ""; + object.writeFileSyncData = options.bytes === String ? "" : []; + object.writeFileSyncPerm = 0; + } + if (message.command != null && message.hasOwnProperty("command")) + object.command = + options.enums === String + ? $root.main.Msg.Command[message.command] + : message.command; + if (message.error != null && message.hasOwnProperty("error")) + object.error = message.error; + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + object.startCwd = message.startCwd; + if (message.startArgv && message.startArgv.length) { + object.startArgv = []; + for (var j = 0; j < message.startArgv.length; ++j) + object.startArgv[j] = message.startArgv[j]; + } + if ( + message.startDebugFlag != null && + message.hasOwnProperty("startDebugFlag") + ) + object.startDebugFlag = message.startDebugFlag; + if ( + message.startMainJs != null && + message.hasOwnProperty("startMainJs") + ) + object.startMainJs = message.startMainJs; + if ( + message.startMainMap != null && + message.hasOwnProperty("startMainMap") + ) + object.startMainMap = message.startMainMap; + if ( + message.codeFetchModuleSpecifier != null && + message.hasOwnProperty("codeFetchModuleSpecifier") + ) + object.codeFetchModuleSpecifier = message.codeFetchModuleSpecifier; + if ( + message.codeFetchContainingFile != null && + message.hasOwnProperty("codeFetchContainingFile") + ) + object.codeFetchContainingFile = message.codeFetchContainingFile; + if ( + message.codeFetchResModuleName != null && + message.hasOwnProperty("codeFetchResModuleName") + ) + object.codeFetchResModuleName = message.codeFetchResModuleName; + if ( + message.codeFetchResFilename != null && + message.hasOwnProperty("codeFetchResFilename") + ) + object.codeFetchResFilename = message.codeFetchResFilename; + if ( + message.codeFetchResSourceCode != null && + message.hasOwnProperty("codeFetchResSourceCode") + ) + object.codeFetchResSourceCode = message.codeFetchResSourceCode; + if ( + message.codeFetchResOutputCode != null && + message.hasOwnProperty("codeFetchResOutputCode") + ) + object.codeFetchResOutputCode = message.codeFetchResOutputCode; + if ( + message.codeCacheFilename != null && + message.hasOwnProperty("codeCacheFilename") + ) + object.codeCacheFilename = message.codeCacheFilename; + if ( + message.codeCacheSourceCode != null && + message.hasOwnProperty("codeCacheSourceCode") + ) + object.codeCacheSourceCode = message.codeCacheSourceCode; + if ( + message.codeCacheOutputCode != null && + message.hasOwnProperty("codeCacheOutputCode") + ) + object.codeCacheOutputCode = message.codeCacheOutputCode; + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + object.exitCode = message.exitCode; + if ( + message.timerStartId != null && + message.hasOwnProperty("timerStartId") + ) + object.timerStartId = message.timerStartId; + if ( + message.timerStartInterval != null && + message.hasOwnProperty("timerStartInterval") + ) + object.timerStartInterval = message.timerStartInterval; + if ( + message.timerStartDelay != null && + message.hasOwnProperty("timerStartDelay") + ) + object.timerStartDelay = message.timerStartDelay; + if ( + message.timerReadyId != null && + message.hasOwnProperty("timerReadyId") + ) + object.timerReadyId = message.timerReadyId; + if ( + message.timerReadyDone != null && + message.hasOwnProperty("timerReadyDone") + ) + object.timerReadyDone = message.timerReadyDone; + if ( + message.timerClearId != null && + message.hasOwnProperty("timerClearId") + ) + object.timerClearId = message.timerClearId; + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + object.fetchReqId = message.fetchReqId; + if ( + message.fetchReqUrl != null && + message.hasOwnProperty("fetchReqUrl") + ) + object.fetchReqUrl = message.fetchReqUrl; + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + object.fetchResId = message.fetchResId; + if ( + message.fetchResStatus != null && + message.hasOwnProperty("fetchResStatus") + ) + object.fetchResStatus = message.fetchResStatus; + if (message.fetchResHeaderLine && message.fetchResHeaderLine.length) { + object.fetchResHeaderLine = []; + for (var j = 0; j < message.fetchResHeaderLine.length; ++j) + object.fetchResHeaderLine[j] = message.fetchResHeaderLine[j]; + } + if ( + message.fetchResBody != null && + message.hasOwnProperty("fetchResBody") + ) + object.fetchResBody = + options.bytes === String + ? $util.base64.encode( + message.fetchResBody, + 0, + message.fetchResBody.length + ) + : options.bytes === Array + ? Array.prototype.slice.call(message.fetchResBody) + : message.fetchResBody; + if ( + message.readFileSyncFilename != null && + message.hasOwnProperty("readFileSyncFilename") + ) + object.readFileSyncFilename = message.readFileSyncFilename; + if ( + message.readFileSyncData != null && + message.hasOwnProperty("readFileSyncData") + ) + object.readFileSyncData = + options.bytes === String + ? $util.base64.encode( + message.readFileSyncData, + 0, + message.readFileSyncData.length + ) + : options.bytes === Array + ? Array.prototype.slice.call(message.readFileSyncData) + : message.readFileSyncData; + if ( + message.writeFileSyncFilename != null && + message.hasOwnProperty("writeFileSyncFilename") + ) + object.writeFileSyncFilename = message.writeFileSyncFilename; + if ( + message.writeFileSyncData != null && + message.hasOwnProperty("writeFileSyncData") + ) + object.writeFileSyncData = + options.bytes === String + ? $util.base64.encode( + message.writeFileSyncData, + 0, + message.writeFileSyncData.length + ) + : options.bytes === Array + ? Array.prototype.slice.call(message.writeFileSyncData) + : message.writeFileSyncData; + if ( + message.writeFileSyncPerm != null && + message.hasOwnProperty("writeFileSyncPerm") + ) + object.writeFileSyncPerm = message.writeFileSyncPerm; + return object; + }; + + /** + * Converts this Msg to JSON. + * @function toJSON + * @memberof main.Msg + * @instance + * @returns {Object.} JSON object + */ + Msg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Command enum. + * @name main.Msg.Command + * @enum {string} + * @property {number} ERROR=0 ERROR value + * @property {number} START=1 START value + * @property {number} CODE_FETCH=2 CODE_FETCH value + * @property {number} CODE_FETCH_RES=3 CODE_FETCH_RES value + * @property {number} CODE_CACHE=4 CODE_CACHE value + * @property {number} EXIT=5 EXIT value + * @property {number} TIMER_START=6 TIMER_START value + * @property {number} TIMER_READY=7 TIMER_READY value + * @property {number} TIMER_CLEAR=8 TIMER_CLEAR value + * @property {number} FETCH_REQ=9 FETCH_REQ value + * @property {number} FETCH_RES=10 FETCH_RES value + * @property {number} READ_FILE_SYNC=11 READ_FILE_SYNC value + * @property {number} READ_FILE_SYNC_RES=12 READ_FILE_SYNC_RES value + * @property {number} WRITE_FILE_SYNC=13 WRITE_FILE_SYNC value + */ + Msg.Command = (function() { + var valuesById = {}, + values = Object.create(valuesById); + values[(valuesById[0] = "ERROR")] = 0; + values[(valuesById[1] = "START")] = 1; + values[(valuesById[2] = "CODE_FETCH")] = 2; + values[(valuesById[3] = "CODE_FETCH_RES")] = 3; + values[(valuesById[4] = "CODE_CACHE")] = 4; + values[(valuesById[5] = "EXIT")] = 5; + values[(valuesById[6] = "TIMER_START")] = 6; + values[(valuesById[7] = "TIMER_READY")] = 7; + values[(valuesById[8] = "TIMER_CLEAR")] = 8; + values[(valuesById[9] = "FETCH_REQ")] = 9; + values[(valuesById[10] = "FETCH_RES")] = 10; + values[(valuesById[11] = "READ_FILE_SYNC")] = 11; + values[(valuesById[12] = "READ_FILE_SYNC_RES")] = 12; + values[(valuesById[13] = "WRITE_FILE_SYNC")] = 13; + return values; + })(); + + return Msg; + })(); + + return main; + })(); + + return $root; +}); diff --git a/deno2/js/pbjs_hack.py b/deno2/js/pbjs_hack.py new file mode 100755 index 0000000000..f0cfa01a57 --- /dev/null +++ b/deno2/js/pbjs_hack.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +""" +gn can only run python scripts. +protobuf.js must generate some javascript files. +it's very difficult to get this into the gn build sanely. +therefore we write them into the source directory. +""" +import subprocess +import sys +import os + +js_path = os.path.dirname(os.path.realpath(__file__)) +bin_path = os.path.join(js_path, "node_modules", ".bin") +pbjs_bin = os.path.join(bin_path, "pbjs") +pbts_bin = os.path.join(bin_path, "pbts") +msg_pbjs_out = os.path.join(js_path, "msg.pb.js") +msg_pbts_out = os.path.join(js_path, "msg.pb.d.ts") +assert os.path.exists(pbjs_bin) +assert os.path.exists(pbts_bin) + +proto_in = sys.argv[1] +stamp_file = sys.argv[2] + +def touch(fname): + if os.path.exists(fname): + os.utime(fname, None) + else: + open(fname, 'a').close() + +subprocess.check_call([ + "node", + pbjs_bin, + "--target=static-module", + "--wraper=commonjs", + "--out=" + msg_pbjs_out, + proto_in +]) +assert os.path.exists(msg_pbjs_out) + +subprocess.check_call([ + "node", + pbts_bin, + "--out=" + msg_pbts_out, + msg_pbjs_out +]) +assert os.path.exists(msg_pbts_out) + + +touch(stamp_file) From 7784cc2c1537a23b8b8ffa634b1a9b1ddf88886a Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 06:36:01 +0200 Subject: [PATCH 40/44] Fix protobufjs snapshotting. --- deno2/BUILD.gn | 5 +- deno2/deno.cc | 16 +- deno2/deno_internal.h | 4 + deno2/from_snapshot.cc | 22 +- deno2/js/main.ts | 7 +- deno2/js/mock_runtime.js | 11 + deno2/js/msg.pb.d.ts | 824 +++++----- deno2/js/msg.pb.js | 2999 ++++++++++++++++-------------------- deno2/js/pbjs_hack.py | 4 +- deno2/mock_runtime_test.cc | 6 + deno2/snapshot_creator.cc | 3 + deno2/tools/format.sh | 10 +- 12 files changed, 1786 insertions(+), 2125 deletions(-) diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index ef4336e079..58859293ff 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -98,7 +98,7 @@ run_node("bundle") { run_node("run_tsc") { main_source = "js/main.ts" sources = [ - "js/msg.pb.d.ts", + #"js/msg.pb.d.ts", "js/msg.pb.js", "js/tsconfig.json", main_source, @@ -178,6 +178,9 @@ template("create_snapshot") { rebase_path(natives_out_cc, root_build_dir), rebase_path(snapshot_out_cc, root_build_dir), ] + + # To debug snapshotting problems: + # args += ["--trace-serializer"] data = [ invoker.js, ] diff --git a/deno2/deno.cc b/deno2/deno.cc index 26222d3b8f..991654612e 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -199,6 +199,19 @@ bool Execute(v8::Local context, const char* js_filename, return true; } +v8::StartupData SerializeInternalFields(v8::Local holder, int index, + void* data) { + assert(data == nullptr); // TODO(ry) pass Deno* object here. + InternalFieldData* embedder_field = static_cast( + holder->GetAlignedPointerFromInternalField(index)); + if (embedder_field == nullptr) return {nullptr, 0}; + int size = sizeof(*embedder_field); + char* payload = new char[size]; + // We simply use memcpy to serialize the content. + memcpy(payload, embedder_field, size); + return {payload, size}; +} + v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, v8::StartupData* prev_snapshot_blob, const char* js_filename, const char* js_source) { @@ -232,7 +245,8 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, bool r = Execute(context, js_filename, js_source); assert(r); - creator->SetDefaultContext(context); + creator->SetDefaultContext(context, v8::SerializeInternalFieldsCallback( + SerializeInternalFields, nullptr)); } auto snapshot_blob = diff --git a/deno2/deno_internal.h b/deno2/deno_internal.h index 52c1770f69..82c5375829 100644 --- a/deno2/deno_internal.h +++ b/deno2/deno_internal.h @@ -21,6 +21,10 @@ struct deno_s { namespace deno { +struct InternalFieldData { + uint32_t data; +}; + void Print(const v8::FunctionCallbackInfo& args); void Sub(const v8::FunctionCallbackInfo& args); void Pub(const v8::FunctionCallbackInfo& args); diff --git a/deno2/from_snapshot.cc b/deno2/from_snapshot.cc index adb404bf0e..68185ce6da 100644 --- a/deno2/from_snapshot.cc +++ b/deno2/from_snapshot.cc @@ -21,12 +21,28 @@ namespace deno { #include "snapshot_deno.cc" #endif +std::vector deserialized_data; + +void DeserializeInternalFields(v8::Local holder, int index, + v8::StartupData payload, void* data) { + assert(data == nullptr); // TODO(ry) pass Deno* object here. + if (payload.raw_size == 0) { + holder->SetAlignedPointerInInternalField(index, nullptr); + return; + } + InternalFieldData* embedder_field = new InternalFieldData{0}; + memcpy(embedder_field, payload.data, payload.raw_size); + holder->SetAlignedPointerInInternalField(index, embedder_field); + deserialized_data.push_back(embedder_field); +} + Deno* NewFromSnapshot(void* data, deno_sub_cb cb) { auto natives_blob = *StartupBlob_natives(); auto snapshot_blob = *StartupBlob_snapshot(); v8::V8::SetNativesDataBlob(&natives_blob); v8::V8::SetSnapshotDataBlob(&snapshot_blob); + v8::DeserializeInternalFieldsCallback(DeserializeInternalFields, nullptr); Deno* d = new Deno; d->cb = cb; @@ -42,7 +58,11 @@ Deno* NewFromSnapshot(void* data, deno_sub_cb cb) { v8::Isolate::Scope isolate_scope(isolate); { v8::HandleScope handle_scope(isolate); - auto context = v8::Context::New(isolate); + auto context = + v8::Context::New(isolate, nullptr, v8::MaybeLocal(), + v8::MaybeLocal(), + v8::DeserializeInternalFieldsCallback( + DeserializeInternalFields, nullptr)); d->context.Reset(d->isolate, context); } diff --git a/deno2/js/main.ts b/deno2/js/main.ts index f9d69f22f5..301482ea6d 100644 --- a/deno2/js/main.ts +++ b/deno2/js/main.ts @@ -1,12 +1,13 @@ /// -//import { main as pb } from "./msg.pb" +import { main as pb } from "./msg.pb"; import * as ts from "typescript"; const globalEval = eval; const window = globalEval("this"); window["denoMain"] = () => { - //const msg = pb.Msg.fromObject({}); - //denoPrint(`msg.command: ${msg.command}`); + denoPrint("Hello world"); + const msg = pb.Msg.fromObject({}); + denoPrint(`msg.command: ${msg.command}`); denoPrint(`ts.version: ${ts.version}`); denoPrint("Hello world from foo"); return "foo"; diff --git a/deno2/js/mock_runtime.js b/deno2/js/mock_runtime.js index 570d6cf28d..07e5a2ca83 100644 --- a/deno2/js/mock_runtime.js +++ b/deno2/js/mock_runtime.js @@ -15,6 +15,17 @@ function CanCallFunction() { return "foo"; } +// This object is created to test snapshotting. +// See DeserializeInternalFieldsCallback and SerializeInternalFieldsCallback. +const snapshotted = new Uint8Array([1, 3, 3, 7]); + +function TypedArraySnapshots() { + assert(snapshotted[0] === 1); + assert(snapshotted[1] === 3); + assert(snapshotted[2] === 3); + assert(snapshotted[3] === 7); +} + function PubSuccess() { denoSub((channel, msg) => { assert(channel === "PubSuccess"); diff --git a/deno2/js/msg.pb.d.ts b/deno2/js/msg.pb.d.ts index efb7a6383d..69c8133359 100644 --- a/deno2/js/msg.pb.d.ts +++ b/deno2/js/msg.pb.d.ts @@ -2,431 +2,409 @@ import * as $protobuf from "protobufjs"; /** Namespace main. */ export namespace main { - /** Properties of a BaseMsg. */ - interface IBaseMsg { - /** BaseMsg channel */ - channel?: string | null; - /** BaseMsg payload */ - payload?: Uint8Array | null; - } + /** Properties of a BaseMsg. */ + interface IBaseMsg { - /** Represents a BaseMsg. */ - class BaseMsg implements IBaseMsg { - /** - * Constructs a new BaseMsg. - * @param [properties] Properties to set - */ - constructor(properties?: main.IBaseMsg); + /** BaseMsg channel */ + channel?: (string|null); - /** BaseMsg channel. */ - public channel: string; - - /** BaseMsg payload. */ - public payload: Uint8Array; - - /** - * Creates a new BaseMsg instance using the specified properties. - * @param [properties] Properties to set - * @returns BaseMsg instance - */ - public static create(properties?: main.IBaseMsg): main.BaseMsg; - - /** - * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. - * @param message BaseMsg message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: main.IBaseMsg, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. - * @param message BaseMsg message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: main.IBaseMsg, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a BaseMsg message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns BaseMsg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): main.BaseMsg; - - /** - * Decodes a BaseMsg message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns BaseMsg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): main.BaseMsg; - - /** - * Verifies a BaseMsg message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns BaseMsg - */ - public static fromObject(object: { [k: string]: any }): main.BaseMsg; - - /** - * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. - * @param message BaseMsg - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: main.BaseMsg, - options?: $protobuf.IConversionOptions - ): { [k: string]: any }; - - /** - * Converts this BaseMsg to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - /** Properties of a Msg. */ - interface IMsg { - /** Msg command */ - command?: main.Msg.Command | null; - - /** Msg error */ - error?: string | null; - - /** Msg startCwd */ - startCwd?: string | null; - - /** Msg startArgv */ - startArgv?: string[] | null; - - /** Msg startDebugFlag */ - startDebugFlag?: boolean | null; - - /** Msg startMainJs */ - startMainJs?: string | null; - - /** Msg startMainMap */ - startMainMap?: string | null; - - /** Msg codeFetchModuleSpecifier */ - codeFetchModuleSpecifier?: string | null; - - /** Msg codeFetchContainingFile */ - codeFetchContainingFile?: string | null; - - /** Msg codeFetchResModuleName */ - codeFetchResModuleName?: string | null; - - /** Msg codeFetchResFilename */ - codeFetchResFilename?: string | null; - - /** Msg codeFetchResSourceCode */ - codeFetchResSourceCode?: string | null; - - /** Msg codeFetchResOutputCode */ - codeFetchResOutputCode?: string | null; - - /** Msg codeCacheFilename */ - codeCacheFilename?: string | null; - - /** Msg codeCacheSourceCode */ - codeCacheSourceCode?: string | null; - - /** Msg codeCacheOutputCode */ - codeCacheOutputCode?: string | null; - - /** Msg exitCode */ - exitCode?: number | null; - - /** Msg timerStartId */ - timerStartId?: number | null; - - /** Msg timerStartInterval */ - timerStartInterval?: boolean | null; - - /** Msg timerStartDelay */ - timerStartDelay?: number | null; - - /** Msg timerReadyId */ - timerReadyId?: number | null; - - /** Msg timerReadyDone */ - timerReadyDone?: boolean | null; - - /** Msg timerClearId */ - timerClearId?: number | null; - - /** Msg fetchReqId */ - fetchReqId?: number | null; - - /** Msg fetchReqUrl */ - fetchReqUrl?: string | null; - - /** Msg fetchResId */ - fetchResId?: number | null; - - /** Msg fetchResStatus */ - fetchResStatus?: number | null; - - /** Msg fetchResHeaderLine */ - fetchResHeaderLine?: string[] | null; - - /** Msg fetchResBody */ - fetchResBody?: Uint8Array | null; - - /** Msg readFileSyncFilename */ - readFileSyncFilename?: string | null; - - /** Msg readFileSyncData */ - readFileSyncData?: Uint8Array | null; - - /** Msg writeFileSyncFilename */ - writeFileSyncFilename?: string | null; - - /** Msg writeFileSyncData */ - writeFileSyncData?: Uint8Array | null; - - /** Msg writeFileSyncPerm */ - writeFileSyncPerm?: number | null; - } - - /** Represents a Msg. */ - class Msg implements IMsg { - /** - * Constructs a new Msg. - * @param [properties] Properties to set - */ - constructor(properties?: main.IMsg); - - /** Msg command. */ - public command: main.Msg.Command; - - /** Msg error. */ - public error: string; - - /** Msg startCwd. */ - public startCwd: string; - - /** Msg startArgv. */ - public startArgv: string[]; - - /** Msg startDebugFlag. */ - public startDebugFlag: boolean; - - /** Msg startMainJs. */ - public startMainJs: string; - - /** Msg startMainMap. */ - public startMainMap: string; - - /** Msg codeFetchModuleSpecifier. */ - public codeFetchModuleSpecifier: string; - - /** Msg codeFetchContainingFile. */ - public codeFetchContainingFile: string; - - /** Msg codeFetchResModuleName. */ - public codeFetchResModuleName: string; - - /** Msg codeFetchResFilename. */ - public codeFetchResFilename: string; - - /** Msg codeFetchResSourceCode. */ - public codeFetchResSourceCode: string; - - /** Msg codeFetchResOutputCode. */ - public codeFetchResOutputCode: string; - - /** Msg codeCacheFilename. */ - public codeCacheFilename: string; - - /** Msg codeCacheSourceCode. */ - public codeCacheSourceCode: string; - - /** Msg codeCacheOutputCode. */ - public codeCacheOutputCode: string; - - /** Msg exitCode. */ - public exitCode: number; - - /** Msg timerStartId. */ - public timerStartId: number; - - /** Msg timerStartInterval. */ - public timerStartInterval: boolean; - - /** Msg timerStartDelay. */ - public timerStartDelay: number; - - /** Msg timerReadyId. */ - public timerReadyId: number; - - /** Msg timerReadyDone. */ - public timerReadyDone: boolean; - - /** Msg timerClearId. */ - public timerClearId: number; - - /** Msg fetchReqId. */ - public fetchReqId: number; - - /** Msg fetchReqUrl. */ - public fetchReqUrl: string; - - /** Msg fetchResId. */ - public fetchResId: number; - - /** Msg fetchResStatus. */ - public fetchResStatus: number; - - /** Msg fetchResHeaderLine. */ - public fetchResHeaderLine: string[]; - - /** Msg fetchResBody. */ - public fetchResBody: Uint8Array; - - /** Msg readFileSyncFilename. */ - public readFileSyncFilename: string; - - /** Msg readFileSyncData. */ - public readFileSyncData: Uint8Array; - - /** Msg writeFileSyncFilename. */ - public writeFileSyncFilename: string; - - /** Msg writeFileSyncData. */ - public writeFileSyncData: Uint8Array; - - /** Msg writeFileSyncPerm. */ - public writeFileSyncPerm: number; - - /** - * Creates a new Msg instance using the specified properties. - * @param [properties] Properties to set - * @returns Msg instance - */ - public static create(properties?: main.IMsg): main.Msg; - - /** - * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. - * @param message Msg message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode( - message: main.IMsg, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. - * @param message Msg message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited( - message: main.IMsg, - writer?: $protobuf.Writer - ): $protobuf.Writer; - - /** - * Decodes a Msg message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Msg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode( - reader: $protobuf.Reader | Uint8Array, - length?: number - ): main.Msg; - - /** - * Decodes a Msg message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Msg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited( - reader: $protobuf.Reader | Uint8Array - ): main.Msg; - - /** - * Verifies a Msg message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): string | null; - - /** - * Creates a Msg message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Msg - */ - public static fromObject(object: { [k: string]: any }): main.Msg; - - /** - * Creates a plain object from a Msg message. Also converts values to other types if specified. - * @param message Msg - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject( - message: main.Msg, - options?: $protobuf.IConversionOptions - ): { [k: string]: any }; - - /** - * Converts this Msg to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - } - - namespace Msg { - /** Command enum. */ - enum Command { - ERROR = 0, - START = 1, - CODE_FETCH = 2, - CODE_FETCH_RES = 3, - CODE_CACHE = 4, - EXIT = 5, - TIMER_START = 6, - TIMER_READY = 7, - TIMER_CLEAR = 8, - FETCH_REQ = 9, - FETCH_RES = 10, - READ_FILE_SYNC = 11, - READ_FILE_SYNC_RES = 12, - WRITE_FILE_SYNC = 13 + /** BaseMsg payload */ + payload?: (Uint8Array|null); + } + + /** Represents a BaseMsg. */ + class BaseMsg implements IBaseMsg { + + /** + * Constructs a new BaseMsg. + * @param [properties] Properties to set + */ + constructor(properties?: main.IBaseMsg); + + /** BaseMsg channel. */ + public channel: string; + + /** BaseMsg payload. */ + public payload: Uint8Array; + + /** + * Creates a new BaseMsg instance using the specified properties. + * @param [properties] Properties to set + * @returns BaseMsg instance + */ + public static create(properties?: main.IBaseMsg): main.BaseMsg; + + /** + * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @param message BaseMsg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: main.IBaseMsg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @param message BaseMsg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: main.IBaseMsg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a BaseMsg message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): main.BaseMsg; + + /** + * Decodes a BaseMsg message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): main.BaseMsg; + + /** + * Verifies a BaseMsg message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns BaseMsg + */ + public static fromObject(object: { [k: string]: any }): main.BaseMsg; + + /** + * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. + * @param message BaseMsg + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: main.BaseMsg, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this BaseMsg to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + /** Properties of a Msg. */ + interface IMsg { + + /** Msg command */ + command?: (main.Msg.Command|null); + + /** Msg error */ + error?: (string|null); + + /** Msg startCwd */ + startCwd?: (string|null); + + /** Msg startArgv */ + startArgv?: (string[]|null); + + /** Msg startDebugFlag */ + startDebugFlag?: (boolean|null); + + /** Msg startMainJs */ + startMainJs?: (string|null); + + /** Msg startMainMap */ + startMainMap?: (string|null); + + /** Msg codeFetchModuleSpecifier */ + codeFetchModuleSpecifier?: (string|null); + + /** Msg codeFetchContainingFile */ + codeFetchContainingFile?: (string|null); + + /** Msg codeFetchResModuleName */ + codeFetchResModuleName?: (string|null); + + /** Msg codeFetchResFilename */ + codeFetchResFilename?: (string|null); + + /** Msg codeFetchResSourceCode */ + codeFetchResSourceCode?: (string|null); + + /** Msg codeFetchResOutputCode */ + codeFetchResOutputCode?: (string|null); + + /** Msg codeCacheFilename */ + codeCacheFilename?: (string|null); + + /** Msg codeCacheSourceCode */ + codeCacheSourceCode?: (string|null); + + /** Msg codeCacheOutputCode */ + codeCacheOutputCode?: (string|null); + + /** Msg exitCode */ + exitCode?: (number|null); + + /** Msg timerStartId */ + timerStartId?: (number|null); + + /** Msg timerStartInterval */ + timerStartInterval?: (boolean|null); + + /** Msg timerStartDelay */ + timerStartDelay?: (number|null); + + /** Msg timerReadyId */ + timerReadyId?: (number|null); + + /** Msg timerReadyDone */ + timerReadyDone?: (boolean|null); + + /** Msg timerClearId */ + timerClearId?: (number|null); + + /** Msg fetchReqId */ + fetchReqId?: (number|null); + + /** Msg fetchReqUrl */ + fetchReqUrl?: (string|null); + + /** Msg fetchResId */ + fetchResId?: (number|null); + + /** Msg fetchResStatus */ + fetchResStatus?: (number|null); + + /** Msg fetchResHeaderLine */ + fetchResHeaderLine?: (string[]|null); + + /** Msg fetchResBody */ + fetchResBody?: (Uint8Array|null); + + /** Msg readFileSyncFilename */ + readFileSyncFilename?: (string|null); + + /** Msg readFileSyncData */ + readFileSyncData?: (Uint8Array|null); + + /** Msg writeFileSyncFilename */ + writeFileSyncFilename?: (string|null); + + /** Msg writeFileSyncData */ + writeFileSyncData?: (Uint8Array|null); + + /** Msg writeFileSyncPerm */ + writeFileSyncPerm?: (number|null); + } + + /** Represents a Msg. */ + class Msg implements IMsg { + + /** + * Constructs a new Msg. + * @param [properties] Properties to set + */ + constructor(properties?: main.IMsg); + + /** Msg command. */ + public command: main.Msg.Command; + + /** Msg error. */ + public error: string; + + /** Msg startCwd. */ + public startCwd: string; + + /** Msg startArgv. */ + public startArgv: string[]; + + /** Msg startDebugFlag. */ + public startDebugFlag: boolean; + + /** Msg startMainJs. */ + public startMainJs: string; + + /** Msg startMainMap. */ + public startMainMap: string; + + /** Msg codeFetchModuleSpecifier. */ + public codeFetchModuleSpecifier: string; + + /** Msg codeFetchContainingFile. */ + public codeFetchContainingFile: string; + + /** Msg codeFetchResModuleName. */ + public codeFetchResModuleName: string; + + /** Msg codeFetchResFilename. */ + public codeFetchResFilename: string; + + /** Msg codeFetchResSourceCode. */ + public codeFetchResSourceCode: string; + + /** Msg codeFetchResOutputCode. */ + public codeFetchResOutputCode: string; + + /** Msg codeCacheFilename. */ + public codeCacheFilename: string; + + /** Msg codeCacheSourceCode. */ + public codeCacheSourceCode: string; + + /** Msg codeCacheOutputCode. */ + public codeCacheOutputCode: string; + + /** Msg exitCode. */ + public exitCode: number; + + /** Msg timerStartId. */ + public timerStartId: number; + + /** Msg timerStartInterval. */ + public timerStartInterval: boolean; + + /** Msg timerStartDelay. */ + public timerStartDelay: number; + + /** Msg timerReadyId. */ + public timerReadyId: number; + + /** Msg timerReadyDone. */ + public timerReadyDone: boolean; + + /** Msg timerClearId. */ + public timerClearId: number; + + /** Msg fetchReqId. */ + public fetchReqId: number; + + /** Msg fetchReqUrl. */ + public fetchReqUrl: string; + + /** Msg fetchResId. */ + public fetchResId: number; + + /** Msg fetchResStatus. */ + public fetchResStatus: number; + + /** Msg fetchResHeaderLine. */ + public fetchResHeaderLine: string[]; + + /** Msg fetchResBody. */ + public fetchResBody: Uint8Array; + + /** Msg readFileSyncFilename. */ + public readFileSyncFilename: string; + + /** Msg readFileSyncData. */ + public readFileSyncData: Uint8Array; + + /** Msg writeFileSyncFilename. */ + public writeFileSyncFilename: string; + + /** Msg writeFileSyncData. */ + public writeFileSyncData: Uint8Array; + + /** Msg writeFileSyncPerm. */ + public writeFileSyncPerm: number; + + /** + * Creates a new Msg instance using the specified properties. + * @param [properties] Properties to set + * @returns Msg instance + */ + public static create(properties?: main.IMsg): main.Msg; + + /** + * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. + * @param message Msg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: main.IMsg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. + * @param message Msg message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: main.IMsg, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Msg message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): main.Msg; + + /** + * Decodes a Msg message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): main.Msg; + + /** + * Verifies a Msg message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Msg message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Msg + */ + public static fromObject(object: { [k: string]: any }): main.Msg; + + /** + * Creates a plain object from a Msg message. Also converts values to other types if specified. + * @param message Msg + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: main.Msg, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Msg to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + } + + namespace Msg { + + /** Command enum. */ + enum Command { + ERROR = 0, + START = 1, + CODE_FETCH = 2, + CODE_FETCH_RES = 3, + CODE_CACHE = 4, + EXIT = 5, + TIMER_START = 6, + TIMER_READY = 7, + TIMER_CLEAR = 8, + FETCH_REQ = 9, + FETCH_RES = 10, + READ_FILE_SYNC = 11, + READ_FILE_SYNC_RES = 12, + WRITE_FILE_SYNC = 13 + } } - } } diff --git a/deno2/js/msg.pb.js b/deno2/js/msg.pb.js index 777923a324..ba5a433478 100644 --- a/deno2/js/msg.pb.js +++ b/deno2/js/msg.pb.js @@ -1,1700 +1,1313 @@ /*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/ -(function(global, factory) { - /* global define, require, module */ +(function(global, factory) { /* global define, require, module */ + + /* AMD */ if (typeof define === 'function' && define.amd) + define(["protobufjs/minimal"], factory); + + /* CommonJS */ else if (typeof require === 'function' && typeof module === 'object' && module && module.exports) + module.exports = factory(require("protobufjs/minimal")); - /* AMD */ if (typeof define === "function" && define.amd) - define(["protobufjs/minimal"], factory); - /* CommonJS */ else if ( - typeof require === "function" && - typeof module === "object" && - module && - module.exports - ) - module.exports = factory(require("protobufjs/minimal")); })(this, function($protobuf) { - "use strict"; + "use strict"; - // Common aliases - var $Reader = $protobuf.Reader, - $Writer = $protobuf.Writer, - $util = $protobuf.util; - - // Exported root namespace - var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); - - $root.main = (function() { - /** - * Namespace main. - * @exports main - * @namespace - */ - var main = {}; - - main.BaseMsg = (function() { - /** - * Properties of a BaseMsg. - * @memberof main - * @interface IBaseMsg - * @property {string|null} [channel] BaseMsg channel - * @property {Uint8Array|null} [payload] BaseMsg payload - */ - - /** - * Constructs a new BaseMsg. - * @memberof main - * @classdesc Represents a BaseMsg. - * @implements IBaseMsg - * @constructor - * @param {main.IBaseMsg=} [properties] Properties to set - */ - function BaseMsg(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BaseMsg channel. - * @member {string} channel - * @memberof main.BaseMsg - * @instance - */ - BaseMsg.prototype.channel = ""; - - /** - * BaseMsg payload. - * @member {Uint8Array} payload - * @memberof main.BaseMsg - * @instance - */ - BaseMsg.prototype.payload = $util.newBuffer([]); - - /** - * Creates a new BaseMsg instance using the specified properties. - * @function create - * @memberof main.BaseMsg - * @static - * @param {main.IBaseMsg=} [properties] Properties to set - * @returns {main.BaseMsg} BaseMsg instance - */ - BaseMsg.create = function create(properties) { - return new BaseMsg(properties); - }; - - /** - * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. - * @function encode - * @memberof main.BaseMsg - * @static - * @param {main.IBaseMsg} message BaseMsg message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BaseMsg.encode = function encode(message, writer) { - if (!writer) writer = $Writer.create(); - if (message.channel != null && message.hasOwnProperty("channel")) - writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.channel); - if (message.payload != null && message.hasOwnProperty("payload")) - writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.payload); - return writer; - }; - - /** - * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. - * @function encodeDelimited - * @memberof main.BaseMsg - * @static - * @param {main.IBaseMsg} message BaseMsg message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BaseMsg.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BaseMsg message from the specified reader or buffer. - * @function decode - * @memberof main.BaseMsg - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {main.BaseMsg} BaseMsg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BaseMsg.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, - message = new $root.main.BaseMsg(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.channel = reader.string(); - break; - case 2: - message.payload = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BaseMsg message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof main.BaseMsg - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {main.BaseMsg} BaseMsg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BaseMsg.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BaseMsg message. - * @function verify - * @memberof main.BaseMsg - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BaseMsg.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.channel != null && message.hasOwnProperty("channel")) - if (!$util.isString(message.channel)) - return "channel: string expected"; - if (message.payload != null && message.hasOwnProperty("payload")) - if ( - !( - (message.payload && typeof message.payload.length === "number") || - $util.isString(message.payload) - ) - ) - return "payload: buffer expected"; - return null; - }; - - /** - * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof main.BaseMsg - * @static - * @param {Object.} object Plain object - * @returns {main.BaseMsg} BaseMsg - */ - BaseMsg.fromObject = function fromObject(object) { - if (object instanceof $root.main.BaseMsg) return object; - var message = new $root.main.BaseMsg(); - if (object.channel != null) message.channel = String(object.channel); - if (object.payload != null) - if (typeof object.payload === "string") - $util.base64.decode( - object.payload, - (message.payload = $util.newBuffer( - $util.base64.length(object.payload) - )), - 0 - ); - else if (object.payload.length) message.payload = object.payload; - return message; - }; - - /** - * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. - * @function toObject - * @memberof main.BaseMsg - * @static - * @param {main.BaseMsg} message BaseMsg - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BaseMsg.toObject = function toObject(message, options) { - if (!options) options = {}; - var object = {}; - if (options.defaults) { - object.channel = ""; - object.payload = options.bytes === String ? "" : []; - } - if (message.channel != null && message.hasOwnProperty("channel")) - object.channel = message.channel; - if (message.payload != null && message.hasOwnProperty("payload")) - object.payload = - options.bytes === String - ? $util.base64.encode(message.payload, 0, message.payload.length) - : options.bytes === Array - ? Array.prototype.slice.call(message.payload) - : message.payload; - return object; - }; - - /** - * Converts this BaseMsg to JSON. - * @function toJSON - * @memberof main.BaseMsg - * @instance - * @returns {Object.} JSON object - */ - BaseMsg.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return BaseMsg; + // Common aliases + var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; + + // Exported root namespace + var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); + + $root.main = (function() { + + /** + * Namespace main. + * @exports main + * @namespace + */ + var main = {}; + + main.BaseMsg = (function() { + + /** + * Properties of a BaseMsg. + * @memberof main + * @interface IBaseMsg + * @property {string|null} [channel] BaseMsg channel + * @property {Uint8Array|null} [payload] BaseMsg payload + */ + + /** + * Constructs a new BaseMsg. + * @memberof main + * @classdesc Represents a BaseMsg. + * @implements IBaseMsg + * @constructor + * @param {main.IBaseMsg=} [properties] Properties to set + */ + function BaseMsg(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BaseMsg channel. + * @member {string} channel + * @memberof main.BaseMsg + * @instance + */ + BaseMsg.prototype.channel = ""; + + /** + * BaseMsg payload. + * @member {Uint8Array} payload + * @memberof main.BaseMsg + * @instance + */ + BaseMsg.prototype.payload = $util.newBuffer([]); + + /** + * Creates a new BaseMsg instance using the specified properties. + * @function create + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg=} [properties] Properties to set + * @returns {main.BaseMsg} BaseMsg instance + */ + BaseMsg.create = function create(properties) { + return new BaseMsg(properties); + }; + + /** + * Encodes the specified BaseMsg message. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @function encode + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg} message BaseMsg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BaseMsg.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.channel != null && message.hasOwnProperty("channel")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.channel); + if (message.payload != null && message.hasOwnProperty("payload")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.payload); + return writer; + }; + + /** + * Encodes the specified BaseMsg message, length delimited. Does not implicitly {@link main.BaseMsg.verify|verify} messages. + * @function encodeDelimited + * @memberof main.BaseMsg + * @static + * @param {main.IBaseMsg} message BaseMsg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BaseMsg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BaseMsg message from the specified reader or buffer. + * @function decode + * @memberof main.BaseMsg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {main.BaseMsg} BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BaseMsg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.main.BaseMsg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.channel = reader.string(); + break; + case 2: + message.payload = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BaseMsg message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof main.BaseMsg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {main.BaseMsg} BaseMsg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BaseMsg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BaseMsg message. + * @function verify + * @memberof main.BaseMsg + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BaseMsg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.channel != null && message.hasOwnProperty("channel")) + if (!$util.isString(message.channel)) + return "channel: string expected"; + if (message.payload != null && message.hasOwnProperty("payload")) + if (!(message.payload && typeof message.payload.length === "number" || $util.isString(message.payload))) + return "payload: buffer expected"; + return null; + }; + + /** + * Creates a BaseMsg message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof main.BaseMsg + * @static + * @param {Object.} object Plain object + * @returns {main.BaseMsg} BaseMsg + */ + BaseMsg.fromObject = function fromObject(object) { + if (object instanceof $root.main.BaseMsg) + return object; + var message = new $root.main.BaseMsg(); + if (object.channel != null) + message.channel = String(object.channel); + if (object.payload != null) + if (typeof object.payload === "string") + $util.base64.decode(object.payload, message.payload = $util.newBuffer($util.base64.length(object.payload)), 0); + else if (object.payload.length) + message.payload = object.payload; + return message; + }; + + /** + * Creates a plain object from a BaseMsg message. Also converts values to other types if specified. + * @function toObject + * @memberof main.BaseMsg + * @static + * @param {main.BaseMsg} message BaseMsg + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BaseMsg.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.channel = ""; + object.payload = options.bytes === String ? "" : []; + } + if (message.channel != null && message.hasOwnProperty("channel")) + object.channel = message.channel; + if (message.payload != null && message.hasOwnProperty("payload")) + object.payload = options.bytes === String ? $util.base64.encode(message.payload, 0, message.payload.length) : options.bytes === Array ? Array.prototype.slice.call(message.payload) : message.payload; + return object; + }; + + /** + * Converts this BaseMsg to JSON. + * @function toJSON + * @memberof main.BaseMsg + * @instance + * @returns {Object.} JSON object + */ + BaseMsg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BaseMsg; + })(); + + main.Msg = (function() { + + /** + * Properties of a Msg. + * @memberof main + * @interface IMsg + * @property {main.Msg.Command|null} [command] Msg command + * @property {string|null} [error] Msg error + * @property {string|null} [startCwd] Msg startCwd + * @property {Array.|null} [startArgv] Msg startArgv + * @property {boolean|null} [startDebugFlag] Msg startDebugFlag + * @property {string|null} [startMainJs] Msg startMainJs + * @property {string|null} [startMainMap] Msg startMainMap + * @property {string|null} [codeFetchModuleSpecifier] Msg codeFetchModuleSpecifier + * @property {string|null} [codeFetchContainingFile] Msg codeFetchContainingFile + * @property {string|null} [codeFetchResModuleName] Msg codeFetchResModuleName + * @property {string|null} [codeFetchResFilename] Msg codeFetchResFilename + * @property {string|null} [codeFetchResSourceCode] Msg codeFetchResSourceCode + * @property {string|null} [codeFetchResOutputCode] Msg codeFetchResOutputCode + * @property {string|null} [codeCacheFilename] Msg codeCacheFilename + * @property {string|null} [codeCacheSourceCode] Msg codeCacheSourceCode + * @property {string|null} [codeCacheOutputCode] Msg codeCacheOutputCode + * @property {number|null} [exitCode] Msg exitCode + * @property {number|null} [timerStartId] Msg timerStartId + * @property {boolean|null} [timerStartInterval] Msg timerStartInterval + * @property {number|null} [timerStartDelay] Msg timerStartDelay + * @property {number|null} [timerReadyId] Msg timerReadyId + * @property {boolean|null} [timerReadyDone] Msg timerReadyDone + * @property {number|null} [timerClearId] Msg timerClearId + * @property {number|null} [fetchReqId] Msg fetchReqId + * @property {string|null} [fetchReqUrl] Msg fetchReqUrl + * @property {number|null} [fetchResId] Msg fetchResId + * @property {number|null} [fetchResStatus] Msg fetchResStatus + * @property {Array.|null} [fetchResHeaderLine] Msg fetchResHeaderLine + * @property {Uint8Array|null} [fetchResBody] Msg fetchResBody + * @property {string|null} [readFileSyncFilename] Msg readFileSyncFilename + * @property {Uint8Array|null} [readFileSyncData] Msg readFileSyncData + * @property {string|null} [writeFileSyncFilename] Msg writeFileSyncFilename + * @property {Uint8Array|null} [writeFileSyncData] Msg writeFileSyncData + * @property {number|null} [writeFileSyncPerm] Msg writeFileSyncPerm + */ + + /** + * Constructs a new Msg. + * @memberof main + * @classdesc Represents a Msg. + * @implements IMsg + * @constructor + * @param {main.IMsg=} [properties] Properties to set + */ + function Msg(properties) { + this.startArgv = []; + this.fetchResHeaderLine = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Msg command. + * @member {main.Msg.Command} command + * @memberof main.Msg + * @instance + */ + Msg.prototype.command = 0; + + /** + * Msg error. + * @member {string} error + * @memberof main.Msg + * @instance + */ + Msg.prototype.error = ""; + + /** + * Msg startCwd. + * @member {string} startCwd + * @memberof main.Msg + * @instance + */ + Msg.prototype.startCwd = ""; + + /** + * Msg startArgv. + * @member {Array.} startArgv + * @memberof main.Msg + * @instance + */ + Msg.prototype.startArgv = $util.emptyArray; + + /** + * Msg startDebugFlag. + * @member {boolean} startDebugFlag + * @memberof main.Msg + * @instance + */ + Msg.prototype.startDebugFlag = false; + + /** + * Msg startMainJs. + * @member {string} startMainJs + * @memberof main.Msg + * @instance + */ + Msg.prototype.startMainJs = ""; + + /** + * Msg startMainMap. + * @member {string} startMainMap + * @memberof main.Msg + * @instance + */ + Msg.prototype.startMainMap = ""; + + /** + * Msg codeFetchModuleSpecifier. + * @member {string} codeFetchModuleSpecifier + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchModuleSpecifier = ""; + + /** + * Msg codeFetchContainingFile. + * @member {string} codeFetchContainingFile + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchContainingFile = ""; + + /** + * Msg codeFetchResModuleName. + * @member {string} codeFetchResModuleName + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResModuleName = ""; + + /** + * Msg codeFetchResFilename. + * @member {string} codeFetchResFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResFilename = ""; + + /** + * Msg codeFetchResSourceCode. + * @member {string} codeFetchResSourceCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResSourceCode = ""; + + /** + * Msg codeFetchResOutputCode. + * @member {string} codeFetchResOutputCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeFetchResOutputCode = ""; + + /** + * Msg codeCacheFilename. + * @member {string} codeCacheFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheFilename = ""; + + /** + * Msg codeCacheSourceCode. + * @member {string} codeCacheSourceCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheSourceCode = ""; + + /** + * Msg codeCacheOutputCode. + * @member {string} codeCacheOutputCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.codeCacheOutputCode = ""; + + /** + * Msg exitCode. + * @member {number} exitCode + * @memberof main.Msg + * @instance + */ + Msg.prototype.exitCode = 0; + + /** + * Msg timerStartId. + * @member {number} timerStartId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartId = 0; + + /** + * Msg timerStartInterval. + * @member {boolean} timerStartInterval + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartInterval = false; + + /** + * Msg timerStartDelay. + * @member {number} timerStartDelay + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerStartDelay = 0; + + /** + * Msg timerReadyId. + * @member {number} timerReadyId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerReadyId = 0; + + /** + * Msg timerReadyDone. + * @member {boolean} timerReadyDone + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerReadyDone = false; + + /** + * Msg timerClearId. + * @member {number} timerClearId + * @memberof main.Msg + * @instance + */ + Msg.prototype.timerClearId = 0; + + /** + * Msg fetchReqId. + * @member {number} fetchReqId + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchReqId = 0; + + /** + * Msg fetchReqUrl. + * @member {string} fetchReqUrl + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchReqUrl = ""; + + /** + * Msg fetchResId. + * @member {number} fetchResId + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResId = 0; + + /** + * Msg fetchResStatus. + * @member {number} fetchResStatus + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResStatus = 0; + + /** + * Msg fetchResHeaderLine. + * @member {Array.} fetchResHeaderLine + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResHeaderLine = $util.emptyArray; + + /** + * Msg fetchResBody. + * @member {Uint8Array} fetchResBody + * @memberof main.Msg + * @instance + */ + Msg.prototype.fetchResBody = $util.newBuffer([]); + + /** + * Msg readFileSyncFilename. + * @member {string} readFileSyncFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.readFileSyncFilename = ""; + + /** + * Msg readFileSyncData. + * @member {Uint8Array} readFileSyncData + * @memberof main.Msg + * @instance + */ + Msg.prototype.readFileSyncData = $util.newBuffer([]); + + /** + * Msg writeFileSyncFilename. + * @member {string} writeFileSyncFilename + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncFilename = ""; + + /** + * Msg writeFileSyncData. + * @member {Uint8Array} writeFileSyncData + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncData = $util.newBuffer([]); + + /** + * Msg writeFileSyncPerm. + * @member {number} writeFileSyncPerm + * @memberof main.Msg + * @instance + */ + Msg.prototype.writeFileSyncPerm = 0; + + /** + * Creates a new Msg instance using the specified properties. + * @function create + * @memberof main.Msg + * @static + * @param {main.IMsg=} [properties] Properties to set + * @returns {main.Msg} Msg instance + */ + Msg.create = function create(properties) { + return new Msg(properties); + }; + + /** + * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. + * @function encode + * @memberof main.Msg + * @static + * @param {main.IMsg} message Msg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Msg.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.command != null && message.hasOwnProperty("command")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.command); + if (message.error != null && message.hasOwnProperty("error")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.error); + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.startCwd); + if (message.startArgv != null && message.startArgv.length) + for (var i = 0; i < message.startArgv.length; ++i) + writer.uint32(/* id 11, wireType 2 =*/90).string(message.startArgv[i]); + if (message.startDebugFlag != null && message.hasOwnProperty("startDebugFlag")) + writer.uint32(/* id 12, wireType 0 =*/96).bool(message.startDebugFlag); + if (message.startMainJs != null && message.hasOwnProperty("startMainJs")) + writer.uint32(/* id 13, wireType 2 =*/106).string(message.startMainJs); + if (message.startMainMap != null && message.hasOwnProperty("startMainMap")) + writer.uint32(/* id 14, wireType 2 =*/114).string(message.startMainMap); + if (message.codeFetchModuleSpecifier != null && message.hasOwnProperty("codeFetchModuleSpecifier")) + writer.uint32(/* id 20, wireType 2 =*/162).string(message.codeFetchModuleSpecifier); + if (message.codeFetchContainingFile != null && message.hasOwnProperty("codeFetchContainingFile")) + writer.uint32(/* id 21, wireType 2 =*/170).string(message.codeFetchContainingFile); + if (message.codeFetchResModuleName != null && message.hasOwnProperty("codeFetchResModuleName")) + writer.uint32(/* id 30, wireType 2 =*/242).string(message.codeFetchResModuleName); + if (message.codeFetchResFilename != null && message.hasOwnProperty("codeFetchResFilename")) + writer.uint32(/* id 31, wireType 2 =*/250).string(message.codeFetchResFilename); + if (message.codeFetchResSourceCode != null && message.hasOwnProperty("codeFetchResSourceCode")) + writer.uint32(/* id 32, wireType 2 =*/258).string(message.codeFetchResSourceCode); + if (message.codeFetchResOutputCode != null && message.hasOwnProperty("codeFetchResOutputCode")) + writer.uint32(/* id 33, wireType 2 =*/266).string(message.codeFetchResOutputCode); + if (message.codeCacheFilename != null && message.hasOwnProperty("codeCacheFilename")) + writer.uint32(/* id 41, wireType 2 =*/330).string(message.codeCacheFilename); + if (message.codeCacheSourceCode != null && message.hasOwnProperty("codeCacheSourceCode")) + writer.uint32(/* id 42, wireType 2 =*/338).string(message.codeCacheSourceCode); + if (message.codeCacheOutputCode != null && message.hasOwnProperty("codeCacheOutputCode")) + writer.uint32(/* id 43, wireType 2 =*/346).string(message.codeCacheOutputCode); + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + writer.uint32(/* id 50, wireType 0 =*/400).int32(message.exitCode); + if (message.timerStartId != null && message.hasOwnProperty("timerStartId")) + writer.uint32(/* id 60, wireType 0 =*/480).int32(message.timerStartId); + if (message.timerStartInterval != null && message.hasOwnProperty("timerStartInterval")) + writer.uint32(/* id 61, wireType 0 =*/488).bool(message.timerStartInterval); + if (message.timerStartDelay != null && message.hasOwnProperty("timerStartDelay")) + writer.uint32(/* id 62, wireType 0 =*/496).int32(message.timerStartDelay); + if (message.timerReadyId != null && message.hasOwnProperty("timerReadyId")) + writer.uint32(/* id 70, wireType 0 =*/560).int32(message.timerReadyId); + if (message.timerReadyDone != null && message.hasOwnProperty("timerReadyDone")) + writer.uint32(/* id 71, wireType 0 =*/568).bool(message.timerReadyDone); + if (message.timerClearId != null && message.hasOwnProperty("timerClearId")) + writer.uint32(/* id 80, wireType 0 =*/640).int32(message.timerClearId); + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + writer.uint32(/* id 90, wireType 0 =*/720).int32(message.fetchReqId); + if (message.fetchReqUrl != null && message.hasOwnProperty("fetchReqUrl")) + writer.uint32(/* id 91, wireType 2 =*/730).string(message.fetchReqUrl); + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + writer.uint32(/* id 100, wireType 0 =*/800).int32(message.fetchResId); + if (message.fetchResStatus != null && message.hasOwnProperty("fetchResStatus")) + writer.uint32(/* id 101, wireType 0 =*/808).int32(message.fetchResStatus); + if (message.fetchResHeaderLine != null && message.fetchResHeaderLine.length) + for (var i = 0; i < message.fetchResHeaderLine.length; ++i) + writer.uint32(/* id 102, wireType 2 =*/818).string(message.fetchResHeaderLine[i]); + if (message.fetchResBody != null && message.hasOwnProperty("fetchResBody")) + writer.uint32(/* id 103, wireType 2 =*/826).bytes(message.fetchResBody); + if (message.readFileSyncFilename != null && message.hasOwnProperty("readFileSyncFilename")) + writer.uint32(/* id 110, wireType 2 =*/882).string(message.readFileSyncFilename); + if (message.readFileSyncData != null && message.hasOwnProperty("readFileSyncData")) + writer.uint32(/* id 120, wireType 2 =*/962).bytes(message.readFileSyncData); + if (message.writeFileSyncFilename != null && message.hasOwnProperty("writeFileSyncFilename")) + writer.uint32(/* id 130, wireType 2 =*/1042).string(message.writeFileSyncFilename); + if (message.writeFileSyncData != null && message.hasOwnProperty("writeFileSyncData")) + writer.uint32(/* id 131, wireType 2 =*/1050).bytes(message.writeFileSyncData); + if (message.writeFileSyncPerm != null && message.hasOwnProperty("writeFileSyncPerm")) + writer.uint32(/* id 132, wireType 0 =*/1056).uint32(message.writeFileSyncPerm); + return writer; + }; + + /** + * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. + * @function encodeDelimited + * @memberof main.Msg + * @static + * @param {main.IMsg} message Msg message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Msg.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Msg message from the specified reader or buffer. + * @function decode + * @memberof main.Msg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {main.Msg} Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Msg.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.main.Msg(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.command = reader.int32(); + break; + case 2: + message.error = reader.string(); + break; + case 10: + message.startCwd = reader.string(); + break; + case 11: + if (!(message.startArgv && message.startArgv.length)) + message.startArgv = []; + message.startArgv.push(reader.string()); + break; + case 12: + message.startDebugFlag = reader.bool(); + break; + case 13: + message.startMainJs = reader.string(); + break; + case 14: + message.startMainMap = reader.string(); + break; + case 20: + message.codeFetchModuleSpecifier = reader.string(); + break; + case 21: + message.codeFetchContainingFile = reader.string(); + break; + case 30: + message.codeFetchResModuleName = reader.string(); + break; + case 31: + message.codeFetchResFilename = reader.string(); + break; + case 32: + message.codeFetchResSourceCode = reader.string(); + break; + case 33: + message.codeFetchResOutputCode = reader.string(); + break; + case 41: + message.codeCacheFilename = reader.string(); + break; + case 42: + message.codeCacheSourceCode = reader.string(); + break; + case 43: + message.codeCacheOutputCode = reader.string(); + break; + case 50: + message.exitCode = reader.int32(); + break; + case 60: + message.timerStartId = reader.int32(); + break; + case 61: + message.timerStartInterval = reader.bool(); + break; + case 62: + message.timerStartDelay = reader.int32(); + break; + case 70: + message.timerReadyId = reader.int32(); + break; + case 71: + message.timerReadyDone = reader.bool(); + break; + case 80: + message.timerClearId = reader.int32(); + break; + case 90: + message.fetchReqId = reader.int32(); + break; + case 91: + message.fetchReqUrl = reader.string(); + break; + case 100: + message.fetchResId = reader.int32(); + break; + case 101: + message.fetchResStatus = reader.int32(); + break; + case 102: + if (!(message.fetchResHeaderLine && message.fetchResHeaderLine.length)) + message.fetchResHeaderLine = []; + message.fetchResHeaderLine.push(reader.string()); + break; + case 103: + message.fetchResBody = reader.bytes(); + break; + case 110: + message.readFileSyncFilename = reader.string(); + break; + case 120: + message.readFileSyncData = reader.bytes(); + break; + case 130: + message.writeFileSyncFilename = reader.string(); + break; + case 131: + message.writeFileSyncData = reader.bytes(); + break; + case 132: + message.writeFileSyncPerm = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Msg message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof main.Msg + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {main.Msg} Msg + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Msg.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Msg message. + * @function verify + * @memberof main.Msg + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Msg.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.command != null && message.hasOwnProperty("command")) + switch (message.command) { + default: + return "command: enum value expected"; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + break; + } + if (message.error != null && message.hasOwnProperty("error")) + if (!$util.isString(message.error)) + return "error: string expected"; + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + if (!$util.isString(message.startCwd)) + return "startCwd: string expected"; + if (message.startArgv != null && message.hasOwnProperty("startArgv")) { + if (!Array.isArray(message.startArgv)) + return "startArgv: array expected"; + for (var i = 0; i < message.startArgv.length; ++i) + if (!$util.isString(message.startArgv[i])) + return "startArgv: string[] expected"; + } + if (message.startDebugFlag != null && message.hasOwnProperty("startDebugFlag")) + if (typeof message.startDebugFlag !== "boolean") + return "startDebugFlag: boolean expected"; + if (message.startMainJs != null && message.hasOwnProperty("startMainJs")) + if (!$util.isString(message.startMainJs)) + return "startMainJs: string expected"; + if (message.startMainMap != null && message.hasOwnProperty("startMainMap")) + if (!$util.isString(message.startMainMap)) + return "startMainMap: string expected"; + if (message.codeFetchModuleSpecifier != null && message.hasOwnProperty("codeFetchModuleSpecifier")) + if (!$util.isString(message.codeFetchModuleSpecifier)) + return "codeFetchModuleSpecifier: string expected"; + if (message.codeFetchContainingFile != null && message.hasOwnProperty("codeFetchContainingFile")) + if (!$util.isString(message.codeFetchContainingFile)) + return "codeFetchContainingFile: string expected"; + if (message.codeFetchResModuleName != null && message.hasOwnProperty("codeFetchResModuleName")) + if (!$util.isString(message.codeFetchResModuleName)) + return "codeFetchResModuleName: string expected"; + if (message.codeFetchResFilename != null && message.hasOwnProperty("codeFetchResFilename")) + if (!$util.isString(message.codeFetchResFilename)) + return "codeFetchResFilename: string expected"; + if (message.codeFetchResSourceCode != null && message.hasOwnProperty("codeFetchResSourceCode")) + if (!$util.isString(message.codeFetchResSourceCode)) + return "codeFetchResSourceCode: string expected"; + if (message.codeFetchResOutputCode != null && message.hasOwnProperty("codeFetchResOutputCode")) + if (!$util.isString(message.codeFetchResOutputCode)) + return "codeFetchResOutputCode: string expected"; + if (message.codeCacheFilename != null && message.hasOwnProperty("codeCacheFilename")) + if (!$util.isString(message.codeCacheFilename)) + return "codeCacheFilename: string expected"; + if (message.codeCacheSourceCode != null && message.hasOwnProperty("codeCacheSourceCode")) + if (!$util.isString(message.codeCacheSourceCode)) + return "codeCacheSourceCode: string expected"; + if (message.codeCacheOutputCode != null && message.hasOwnProperty("codeCacheOutputCode")) + if (!$util.isString(message.codeCacheOutputCode)) + return "codeCacheOutputCode: string expected"; + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + if (!$util.isInteger(message.exitCode)) + return "exitCode: integer expected"; + if (message.timerStartId != null && message.hasOwnProperty("timerStartId")) + if (!$util.isInteger(message.timerStartId)) + return "timerStartId: integer expected"; + if (message.timerStartInterval != null && message.hasOwnProperty("timerStartInterval")) + if (typeof message.timerStartInterval !== "boolean") + return "timerStartInterval: boolean expected"; + if (message.timerStartDelay != null && message.hasOwnProperty("timerStartDelay")) + if (!$util.isInteger(message.timerStartDelay)) + return "timerStartDelay: integer expected"; + if (message.timerReadyId != null && message.hasOwnProperty("timerReadyId")) + if (!$util.isInteger(message.timerReadyId)) + return "timerReadyId: integer expected"; + if (message.timerReadyDone != null && message.hasOwnProperty("timerReadyDone")) + if (typeof message.timerReadyDone !== "boolean") + return "timerReadyDone: boolean expected"; + if (message.timerClearId != null && message.hasOwnProperty("timerClearId")) + if (!$util.isInteger(message.timerClearId)) + return "timerClearId: integer expected"; + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + if (!$util.isInteger(message.fetchReqId)) + return "fetchReqId: integer expected"; + if (message.fetchReqUrl != null && message.hasOwnProperty("fetchReqUrl")) + if (!$util.isString(message.fetchReqUrl)) + return "fetchReqUrl: string expected"; + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + if (!$util.isInteger(message.fetchResId)) + return "fetchResId: integer expected"; + if (message.fetchResStatus != null && message.hasOwnProperty("fetchResStatus")) + if (!$util.isInteger(message.fetchResStatus)) + return "fetchResStatus: integer expected"; + if (message.fetchResHeaderLine != null && message.hasOwnProperty("fetchResHeaderLine")) { + if (!Array.isArray(message.fetchResHeaderLine)) + return "fetchResHeaderLine: array expected"; + for (var i = 0; i < message.fetchResHeaderLine.length; ++i) + if (!$util.isString(message.fetchResHeaderLine[i])) + return "fetchResHeaderLine: string[] expected"; + } + if (message.fetchResBody != null && message.hasOwnProperty("fetchResBody")) + if (!(message.fetchResBody && typeof message.fetchResBody.length === "number" || $util.isString(message.fetchResBody))) + return "fetchResBody: buffer expected"; + if (message.readFileSyncFilename != null && message.hasOwnProperty("readFileSyncFilename")) + if (!$util.isString(message.readFileSyncFilename)) + return "readFileSyncFilename: string expected"; + if (message.readFileSyncData != null && message.hasOwnProperty("readFileSyncData")) + if (!(message.readFileSyncData && typeof message.readFileSyncData.length === "number" || $util.isString(message.readFileSyncData))) + return "readFileSyncData: buffer expected"; + if (message.writeFileSyncFilename != null && message.hasOwnProperty("writeFileSyncFilename")) + if (!$util.isString(message.writeFileSyncFilename)) + return "writeFileSyncFilename: string expected"; + if (message.writeFileSyncData != null && message.hasOwnProperty("writeFileSyncData")) + if (!(message.writeFileSyncData && typeof message.writeFileSyncData.length === "number" || $util.isString(message.writeFileSyncData))) + return "writeFileSyncData: buffer expected"; + if (message.writeFileSyncPerm != null && message.hasOwnProperty("writeFileSyncPerm")) + if (!$util.isInteger(message.writeFileSyncPerm)) + return "writeFileSyncPerm: integer expected"; + return null; + }; + + /** + * Creates a Msg message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof main.Msg + * @static + * @param {Object.} object Plain object + * @returns {main.Msg} Msg + */ + Msg.fromObject = function fromObject(object) { + if (object instanceof $root.main.Msg) + return object; + var message = new $root.main.Msg(); + switch (object.command) { + case "ERROR": + case 0: + message.command = 0; + break; + case "START": + case 1: + message.command = 1; + break; + case "CODE_FETCH": + case 2: + message.command = 2; + break; + case "CODE_FETCH_RES": + case 3: + message.command = 3; + break; + case "CODE_CACHE": + case 4: + message.command = 4; + break; + case "EXIT": + case 5: + message.command = 5; + break; + case "TIMER_START": + case 6: + message.command = 6; + break; + case "TIMER_READY": + case 7: + message.command = 7; + break; + case "TIMER_CLEAR": + case 8: + message.command = 8; + break; + case "FETCH_REQ": + case 9: + message.command = 9; + break; + case "FETCH_RES": + case 10: + message.command = 10; + break; + case "READ_FILE_SYNC": + case 11: + message.command = 11; + break; + case "READ_FILE_SYNC_RES": + case 12: + message.command = 12; + break; + case "WRITE_FILE_SYNC": + case 13: + message.command = 13; + break; + } + if (object.error != null) + message.error = String(object.error); + if (object.startCwd != null) + message.startCwd = String(object.startCwd); + if (object.startArgv) { + if (!Array.isArray(object.startArgv)) + throw TypeError(".main.Msg.startArgv: array expected"); + message.startArgv = []; + for (var i = 0; i < object.startArgv.length; ++i) + message.startArgv[i] = String(object.startArgv[i]); + } + if (object.startDebugFlag != null) + message.startDebugFlag = Boolean(object.startDebugFlag); + if (object.startMainJs != null) + message.startMainJs = String(object.startMainJs); + if (object.startMainMap != null) + message.startMainMap = String(object.startMainMap); + if (object.codeFetchModuleSpecifier != null) + message.codeFetchModuleSpecifier = String(object.codeFetchModuleSpecifier); + if (object.codeFetchContainingFile != null) + message.codeFetchContainingFile = String(object.codeFetchContainingFile); + if (object.codeFetchResModuleName != null) + message.codeFetchResModuleName = String(object.codeFetchResModuleName); + if (object.codeFetchResFilename != null) + message.codeFetchResFilename = String(object.codeFetchResFilename); + if (object.codeFetchResSourceCode != null) + message.codeFetchResSourceCode = String(object.codeFetchResSourceCode); + if (object.codeFetchResOutputCode != null) + message.codeFetchResOutputCode = String(object.codeFetchResOutputCode); + if (object.codeCacheFilename != null) + message.codeCacheFilename = String(object.codeCacheFilename); + if (object.codeCacheSourceCode != null) + message.codeCacheSourceCode = String(object.codeCacheSourceCode); + if (object.codeCacheOutputCode != null) + message.codeCacheOutputCode = String(object.codeCacheOutputCode); + if (object.exitCode != null) + message.exitCode = object.exitCode | 0; + if (object.timerStartId != null) + message.timerStartId = object.timerStartId | 0; + if (object.timerStartInterval != null) + message.timerStartInterval = Boolean(object.timerStartInterval); + if (object.timerStartDelay != null) + message.timerStartDelay = object.timerStartDelay | 0; + if (object.timerReadyId != null) + message.timerReadyId = object.timerReadyId | 0; + if (object.timerReadyDone != null) + message.timerReadyDone = Boolean(object.timerReadyDone); + if (object.timerClearId != null) + message.timerClearId = object.timerClearId | 0; + if (object.fetchReqId != null) + message.fetchReqId = object.fetchReqId | 0; + if (object.fetchReqUrl != null) + message.fetchReqUrl = String(object.fetchReqUrl); + if (object.fetchResId != null) + message.fetchResId = object.fetchResId | 0; + if (object.fetchResStatus != null) + message.fetchResStatus = object.fetchResStatus | 0; + if (object.fetchResHeaderLine) { + if (!Array.isArray(object.fetchResHeaderLine)) + throw TypeError(".main.Msg.fetchResHeaderLine: array expected"); + message.fetchResHeaderLine = []; + for (var i = 0; i < object.fetchResHeaderLine.length; ++i) + message.fetchResHeaderLine[i] = String(object.fetchResHeaderLine[i]); + } + if (object.fetchResBody != null) + if (typeof object.fetchResBody === "string") + $util.base64.decode(object.fetchResBody, message.fetchResBody = $util.newBuffer($util.base64.length(object.fetchResBody)), 0); + else if (object.fetchResBody.length) + message.fetchResBody = object.fetchResBody; + if (object.readFileSyncFilename != null) + message.readFileSyncFilename = String(object.readFileSyncFilename); + if (object.readFileSyncData != null) + if (typeof object.readFileSyncData === "string") + $util.base64.decode(object.readFileSyncData, message.readFileSyncData = $util.newBuffer($util.base64.length(object.readFileSyncData)), 0); + else if (object.readFileSyncData.length) + message.readFileSyncData = object.readFileSyncData; + if (object.writeFileSyncFilename != null) + message.writeFileSyncFilename = String(object.writeFileSyncFilename); + if (object.writeFileSyncData != null) + if (typeof object.writeFileSyncData === "string") + $util.base64.decode(object.writeFileSyncData, message.writeFileSyncData = $util.newBuffer($util.base64.length(object.writeFileSyncData)), 0); + else if (object.writeFileSyncData.length) + message.writeFileSyncData = object.writeFileSyncData; + if (object.writeFileSyncPerm != null) + message.writeFileSyncPerm = object.writeFileSyncPerm >>> 0; + return message; + }; + + /** + * Creates a plain object from a Msg message. Also converts values to other types if specified. + * @function toObject + * @memberof main.Msg + * @static + * @param {main.Msg} message Msg + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Msg.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.startArgv = []; + object.fetchResHeaderLine = []; + } + if (options.defaults) { + object.command = options.enums === String ? "ERROR" : 0; + object.error = ""; + object.startCwd = ""; + object.startDebugFlag = false; + object.startMainJs = ""; + object.startMainMap = ""; + object.codeFetchModuleSpecifier = ""; + object.codeFetchContainingFile = ""; + object.codeFetchResModuleName = ""; + object.codeFetchResFilename = ""; + object.codeFetchResSourceCode = ""; + object.codeFetchResOutputCode = ""; + object.codeCacheFilename = ""; + object.codeCacheSourceCode = ""; + object.codeCacheOutputCode = ""; + object.exitCode = 0; + object.timerStartId = 0; + object.timerStartInterval = false; + object.timerStartDelay = 0; + object.timerReadyId = 0; + object.timerReadyDone = false; + object.timerClearId = 0; + object.fetchReqId = 0; + object.fetchReqUrl = ""; + object.fetchResId = 0; + object.fetchResStatus = 0; + object.fetchResBody = options.bytes === String ? "" : []; + object.readFileSyncFilename = ""; + object.readFileSyncData = options.bytes === String ? "" : []; + object.writeFileSyncFilename = ""; + object.writeFileSyncData = options.bytes === String ? "" : []; + object.writeFileSyncPerm = 0; + } + if (message.command != null && message.hasOwnProperty("command")) + object.command = options.enums === String ? $root.main.Msg.Command[message.command] : message.command; + if (message.error != null && message.hasOwnProperty("error")) + object.error = message.error; + if (message.startCwd != null && message.hasOwnProperty("startCwd")) + object.startCwd = message.startCwd; + if (message.startArgv && message.startArgv.length) { + object.startArgv = []; + for (var j = 0; j < message.startArgv.length; ++j) + object.startArgv[j] = message.startArgv[j]; + } + if (message.startDebugFlag != null && message.hasOwnProperty("startDebugFlag")) + object.startDebugFlag = message.startDebugFlag; + if (message.startMainJs != null && message.hasOwnProperty("startMainJs")) + object.startMainJs = message.startMainJs; + if (message.startMainMap != null && message.hasOwnProperty("startMainMap")) + object.startMainMap = message.startMainMap; + if (message.codeFetchModuleSpecifier != null && message.hasOwnProperty("codeFetchModuleSpecifier")) + object.codeFetchModuleSpecifier = message.codeFetchModuleSpecifier; + if (message.codeFetchContainingFile != null && message.hasOwnProperty("codeFetchContainingFile")) + object.codeFetchContainingFile = message.codeFetchContainingFile; + if (message.codeFetchResModuleName != null && message.hasOwnProperty("codeFetchResModuleName")) + object.codeFetchResModuleName = message.codeFetchResModuleName; + if (message.codeFetchResFilename != null && message.hasOwnProperty("codeFetchResFilename")) + object.codeFetchResFilename = message.codeFetchResFilename; + if (message.codeFetchResSourceCode != null && message.hasOwnProperty("codeFetchResSourceCode")) + object.codeFetchResSourceCode = message.codeFetchResSourceCode; + if (message.codeFetchResOutputCode != null && message.hasOwnProperty("codeFetchResOutputCode")) + object.codeFetchResOutputCode = message.codeFetchResOutputCode; + if (message.codeCacheFilename != null && message.hasOwnProperty("codeCacheFilename")) + object.codeCacheFilename = message.codeCacheFilename; + if (message.codeCacheSourceCode != null && message.hasOwnProperty("codeCacheSourceCode")) + object.codeCacheSourceCode = message.codeCacheSourceCode; + if (message.codeCacheOutputCode != null && message.hasOwnProperty("codeCacheOutputCode")) + object.codeCacheOutputCode = message.codeCacheOutputCode; + if (message.exitCode != null && message.hasOwnProperty("exitCode")) + object.exitCode = message.exitCode; + if (message.timerStartId != null && message.hasOwnProperty("timerStartId")) + object.timerStartId = message.timerStartId; + if (message.timerStartInterval != null && message.hasOwnProperty("timerStartInterval")) + object.timerStartInterval = message.timerStartInterval; + if (message.timerStartDelay != null && message.hasOwnProperty("timerStartDelay")) + object.timerStartDelay = message.timerStartDelay; + if (message.timerReadyId != null && message.hasOwnProperty("timerReadyId")) + object.timerReadyId = message.timerReadyId; + if (message.timerReadyDone != null && message.hasOwnProperty("timerReadyDone")) + object.timerReadyDone = message.timerReadyDone; + if (message.timerClearId != null && message.hasOwnProperty("timerClearId")) + object.timerClearId = message.timerClearId; + if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) + object.fetchReqId = message.fetchReqId; + if (message.fetchReqUrl != null && message.hasOwnProperty("fetchReqUrl")) + object.fetchReqUrl = message.fetchReqUrl; + if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) + object.fetchResId = message.fetchResId; + if (message.fetchResStatus != null && message.hasOwnProperty("fetchResStatus")) + object.fetchResStatus = message.fetchResStatus; + if (message.fetchResHeaderLine && message.fetchResHeaderLine.length) { + object.fetchResHeaderLine = []; + for (var j = 0; j < message.fetchResHeaderLine.length; ++j) + object.fetchResHeaderLine[j] = message.fetchResHeaderLine[j]; + } + if (message.fetchResBody != null && message.hasOwnProperty("fetchResBody")) + object.fetchResBody = options.bytes === String ? $util.base64.encode(message.fetchResBody, 0, message.fetchResBody.length) : options.bytes === Array ? Array.prototype.slice.call(message.fetchResBody) : message.fetchResBody; + if (message.readFileSyncFilename != null && message.hasOwnProperty("readFileSyncFilename")) + object.readFileSyncFilename = message.readFileSyncFilename; + if (message.readFileSyncData != null && message.hasOwnProperty("readFileSyncData")) + object.readFileSyncData = options.bytes === String ? $util.base64.encode(message.readFileSyncData, 0, message.readFileSyncData.length) : options.bytes === Array ? Array.prototype.slice.call(message.readFileSyncData) : message.readFileSyncData; + if (message.writeFileSyncFilename != null && message.hasOwnProperty("writeFileSyncFilename")) + object.writeFileSyncFilename = message.writeFileSyncFilename; + if (message.writeFileSyncData != null && message.hasOwnProperty("writeFileSyncData")) + object.writeFileSyncData = options.bytes === String ? $util.base64.encode(message.writeFileSyncData, 0, message.writeFileSyncData.length) : options.bytes === Array ? Array.prototype.slice.call(message.writeFileSyncData) : message.writeFileSyncData; + if (message.writeFileSyncPerm != null && message.hasOwnProperty("writeFileSyncPerm")) + object.writeFileSyncPerm = message.writeFileSyncPerm; + return object; + }; + + /** + * Converts this Msg to JSON. + * @function toJSON + * @memberof main.Msg + * @instance + * @returns {Object.} JSON object + */ + Msg.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Command enum. + * @name main.Msg.Command + * @enum {string} + * @property {number} ERROR=0 ERROR value + * @property {number} START=1 START value + * @property {number} CODE_FETCH=2 CODE_FETCH value + * @property {number} CODE_FETCH_RES=3 CODE_FETCH_RES value + * @property {number} CODE_CACHE=4 CODE_CACHE value + * @property {number} EXIT=5 EXIT value + * @property {number} TIMER_START=6 TIMER_START value + * @property {number} TIMER_READY=7 TIMER_READY value + * @property {number} TIMER_CLEAR=8 TIMER_CLEAR value + * @property {number} FETCH_REQ=9 FETCH_REQ value + * @property {number} FETCH_RES=10 FETCH_RES value + * @property {number} READ_FILE_SYNC=11 READ_FILE_SYNC value + * @property {number} READ_FILE_SYNC_RES=12 READ_FILE_SYNC_RES value + * @property {number} WRITE_FILE_SYNC=13 WRITE_FILE_SYNC value + */ + Msg.Command = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ERROR"] = 0; + values[valuesById[1] = "START"] = 1; + values[valuesById[2] = "CODE_FETCH"] = 2; + values[valuesById[3] = "CODE_FETCH_RES"] = 3; + values[valuesById[4] = "CODE_CACHE"] = 4; + values[valuesById[5] = "EXIT"] = 5; + values[valuesById[6] = "TIMER_START"] = 6; + values[valuesById[7] = "TIMER_READY"] = 7; + values[valuesById[8] = "TIMER_CLEAR"] = 8; + values[valuesById[9] = "FETCH_REQ"] = 9; + values[valuesById[10] = "FETCH_RES"] = 10; + values[valuesById[11] = "READ_FILE_SYNC"] = 11; + values[valuesById[12] = "READ_FILE_SYNC_RES"] = 12; + values[valuesById[13] = "WRITE_FILE_SYNC"] = 13; + return values; + })(); + + return Msg; + })(); + + return main; })(); - main.Msg = (function() { - /** - * Properties of a Msg. - * @memberof main - * @interface IMsg - * @property {main.Msg.Command|null} [command] Msg command - * @property {string|null} [error] Msg error - * @property {string|null} [startCwd] Msg startCwd - * @property {Array.|null} [startArgv] Msg startArgv - * @property {boolean|null} [startDebugFlag] Msg startDebugFlag - * @property {string|null} [startMainJs] Msg startMainJs - * @property {string|null} [startMainMap] Msg startMainMap - * @property {string|null} [codeFetchModuleSpecifier] Msg codeFetchModuleSpecifier - * @property {string|null} [codeFetchContainingFile] Msg codeFetchContainingFile - * @property {string|null} [codeFetchResModuleName] Msg codeFetchResModuleName - * @property {string|null} [codeFetchResFilename] Msg codeFetchResFilename - * @property {string|null} [codeFetchResSourceCode] Msg codeFetchResSourceCode - * @property {string|null} [codeFetchResOutputCode] Msg codeFetchResOutputCode - * @property {string|null} [codeCacheFilename] Msg codeCacheFilename - * @property {string|null} [codeCacheSourceCode] Msg codeCacheSourceCode - * @property {string|null} [codeCacheOutputCode] Msg codeCacheOutputCode - * @property {number|null} [exitCode] Msg exitCode - * @property {number|null} [timerStartId] Msg timerStartId - * @property {boolean|null} [timerStartInterval] Msg timerStartInterval - * @property {number|null} [timerStartDelay] Msg timerStartDelay - * @property {number|null} [timerReadyId] Msg timerReadyId - * @property {boolean|null} [timerReadyDone] Msg timerReadyDone - * @property {number|null} [timerClearId] Msg timerClearId - * @property {number|null} [fetchReqId] Msg fetchReqId - * @property {string|null} [fetchReqUrl] Msg fetchReqUrl - * @property {number|null} [fetchResId] Msg fetchResId - * @property {number|null} [fetchResStatus] Msg fetchResStatus - * @property {Array.|null} [fetchResHeaderLine] Msg fetchResHeaderLine - * @property {Uint8Array|null} [fetchResBody] Msg fetchResBody - * @property {string|null} [readFileSyncFilename] Msg readFileSyncFilename - * @property {Uint8Array|null} [readFileSyncData] Msg readFileSyncData - * @property {string|null} [writeFileSyncFilename] Msg writeFileSyncFilename - * @property {Uint8Array|null} [writeFileSyncData] Msg writeFileSyncData - * @property {number|null} [writeFileSyncPerm] Msg writeFileSyncPerm - */ - - /** - * Constructs a new Msg. - * @memberof main - * @classdesc Represents a Msg. - * @implements IMsg - * @constructor - * @param {main.IMsg=} [properties] Properties to set - */ - function Msg(properties) { - this.startArgv = []; - this.fetchResHeaderLine = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Msg command. - * @member {main.Msg.Command} command - * @memberof main.Msg - * @instance - */ - Msg.prototype.command = 0; - - /** - * Msg error. - * @member {string} error - * @memberof main.Msg - * @instance - */ - Msg.prototype.error = ""; - - /** - * Msg startCwd. - * @member {string} startCwd - * @memberof main.Msg - * @instance - */ - Msg.prototype.startCwd = ""; - - /** - * Msg startArgv. - * @member {Array.} startArgv - * @memberof main.Msg - * @instance - */ - Msg.prototype.startArgv = $util.emptyArray; - - /** - * Msg startDebugFlag. - * @member {boolean} startDebugFlag - * @memberof main.Msg - * @instance - */ - Msg.prototype.startDebugFlag = false; - - /** - * Msg startMainJs. - * @member {string} startMainJs - * @memberof main.Msg - * @instance - */ - Msg.prototype.startMainJs = ""; - - /** - * Msg startMainMap. - * @member {string} startMainMap - * @memberof main.Msg - * @instance - */ - Msg.prototype.startMainMap = ""; - - /** - * Msg codeFetchModuleSpecifier. - * @member {string} codeFetchModuleSpecifier - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchModuleSpecifier = ""; - - /** - * Msg codeFetchContainingFile. - * @member {string} codeFetchContainingFile - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchContainingFile = ""; - - /** - * Msg codeFetchResModuleName. - * @member {string} codeFetchResModuleName - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchResModuleName = ""; - - /** - * Msg codeFetchResFilename. - * @member {string} codeFetchResFilename - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchResFilename = ""; - - /** - * Msg codeFetchResSourceCode. - * @member {string} codeFetchResSourceCode - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchResSourceCode = ""; - - /** - * Msg codeFetchResOutputCode. - * @member {string} codeFetchResOutputCode - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeFetchResOutputCode = ""; - - /** - * Msg codeCacheFilename. - * @member {string} codeCacheFilename - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeCacheFilename = ""; - - /** - * Msg codeCacheSourceCode. - * @member {string} codeCacheSourceCode - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeCacheSourceCode = ""; - - /** - * Msg codeCacheOutputCode. - * @member {string} codeCacheOutputCode - * @memberof main.Msg - * @instance - */ - Msg.prototype.codeCacheOutputCode = ""; - - /** - * Msg exitCode. - * @member {number} exitCode - * @memberof main.Msg - * @instance - */ - Msg.prototype.exitCode = 0; - - /** - * Msg timerStartId. - * @member {number} timerStartId - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerStartId = 0; - - /** - * Msg timerStartInterval. - * @member {boolean} timerStartInterval - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerStartInterval = false; - - /** - * Msg timerStartDelay. - * @member {number} timerStartDelay - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerStartDelay = 0; - - /** - * Msg timerReadyId. - * @member {number} timerReadyId - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerReadyId = 0; - - /** - * Msg timerReadyDone. - * @member {boolean} timerReadyDone - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerReadyDone = false; - - /** - * Msg timerClearId. - * @member {number} timerClearId - * @memberof main.Msg - * @instance - */ - Msg.prototype.timerClearId = 0; - - /** - * Msg fetchReqId. - * @member {number} fetchReqId - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchReqId = 0; - - /** - * Msg fetchReqUrl. - * @member {string} fetchReqUrl - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchReqUrl = ""; - - /** - * Msg fetchResId. - * @member {number} fetchResId - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchResId = 0; - - /** - * Msg fetchResStatus. - * @member {number} fetchResStatus - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchResStatus = 0; - - /** - * Msg fetchResHeaderLine. - * @member {Array.} fetchResHeaderLine - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchResHeaderLine = $util.emptyArray; - - /** - * Msg fetchResBody. - * @member {Uint8Array} fetchResBody - * @memberof main.Msg - * @instance - */ - Msg.prototype.fetchResBody = $util.newBuffer([]); - - /** - * Msg readFileSyncFilename. - * @member {string} readFileSyncFilename - * @memberof main.Msg - * @instance - */ - Msg.prototype.readFileSyncFilename = ""; - - /** - * Msg readFileSyncData. - * @member {Uint8Array} readFileSyncData - * @memberof main.Msg - * @instance - */ - Msg.prototype.readFileSyncData = $util.newBuffer([]); - - /** - * Msg writeFileSyncFilename. - * @member {string} writeFileSyncFilename - * @memberof main.Msg - * @instance - */ - Msg.prototype.writeFileSyncFilename = ""; - - /** - * Msg writeFileSyncData. - * @member {Uint8Array} writeFileSyncData - * @memberof main.Msg - * @instance - */ - Msg.prototype.writeFileSyncData = $util.newBuffer([]); - - /** - * Msg writeFileSyncPerm. - * @member {number} writeFileSyncPerm - * @memberof main.Msg - * @instance - */ - Msg.prototype.writeFileSyncPerm = 0; - - /** - * Creates a new Msg instance using the specified properties. - * @function create - * @memberof main.Msg - * @static - * @param {main.IMsg=} [properties] Properties to set - * @returns {main.Msg} Msg instance - */ - Msg.create = function create(properties) { - return new Msg(properties); - }; - - /** - * Encodes the specified Msg message. Does not implicitly {@link main.Msg.verify|verify} messages. - * @function encode - * @memberof main.Msg - * @static - * @param {main.IMsg} message Msg message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Msg.encode = function encode(message, writer) { - if (!writer) writer = $Writer.create(); - if (message.command != null && message.hasOwnProperty("command")) - writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.command); - if (message.error != null && message.hasOwnProperty("error")) - writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.error); - if (message.startCwd != null && message.hasOwnProperty("startCwd")) - writer.uint32(/* id 10, wireType 2 =*/ 82).string(message.startCwd); - if (message.startArgv != null && message.startArgv.length) - for (var i = 0; i < message.startArgv.length; ++i) - writer - .uint32(/* id 11, wireType 2 =*/ 90) - .string(message.startArgv[i]); - if ( - message.startDebugFlag != null && - message.hasOwnProperty("startDebugFlag") - ) - writer - .uint32(/* id 12, wireType 0 =*/ 96) - .bool(message.startDebugFlag); - if ( - message.startMainJs != null && - message.hasOwnProperty("startMainJs") - ) - writer - .uint32(/* id 13, wireType 2 =*/ 106) - .string(message.startMainJs); - if ( - message.startMainMap != null && - message.hasOwnProperty("startMainMap") - ) - writer - .uint32(/* id 14, wireType 2 =*/ 114) - .string(message.startMainMap); - if ( - message.codeFetchModuleSpecifier != null && - message.hasOwnProperty("codeFetchModuleSpecifier") - ) - writer - .uint32(/* id 20, wireType 2 =*/ 162) - .string(message.codeFetchModuleSpecifier); - if ( - message.codeFetchContainingFile != null && - message.hasOwnProperty("codeFetchContainingFile") - ) - writer - .uint32(/* id 21, wireType 2 =*/ 170) - .string(message.codeFetchContainingFile); - if ( - message.codeFetchResModuleName != null && - message.hasOwnProperty("codeFetchResModuleName") - ) - writer - .uint32(/* id 30, wireType 2 =*/ 242) - .string(message.codeFetchResModuleName); - if ( - message.codeFetchResFilename != null && - message.hasOwnProperty("codeFetchResFilename") - ) - writer - .uint32(/* id 31, wireType 2 =*/ 250) - .string(message.codeFetchResFilename); - if ( - message.codeFetchResSourceCode != null && - message.hasOwnProperty("codeFetchResSourceCode") - ) - writer - .uint32(/* id 32, wireType 2 =*/ 258) - .string(message.codeFetchResSourceCode); - if ( - message.codeFetchResOutputCode != null && - message.hasOwnProperty("codeFetchResOutputCode") - ) - writer - .uint32(/* id 33, wireType 2 =*/ 266) - .string(message.codeFetchResOutputCode); - if ( - message.codeCacheFilename != null && - message.hasOwnProperty("codeCacheFilename") - ) - writer - .uint32(/* id 41, wireType 2 =*/ 330) - .string(message.codeCacheFilename); - if ( - message.codeCacheSourceCode != null && - message.hasOwnProperty("codeCacheSourceCode") - ) - writer - .uint32(/* id 42, wireType 2 =*/ 338) - .string(message.codeCacheSourceCode); - if ( - message.codeCacheOutputCode != null && - message.hasOwnProperty("codeCacheOutputCode") - ) - writer - .uint32(/* id 43, wireType 2 =*/ 346) - .string(message.codeCacheOutputCode); - if (message.exitCode != null && message.hasOwnProperty("exitCode")) - writer.uint32(/* id 50, wireType 0 =*/ 400).int32(message.exitCode); - if ( - message.timerStartId != null && - message.hasOwnProperty("timerStartId") - ) - writer - .uint32(/* id 60, wireType 0 =*/ 480) - .int32(message.timerStartId); - if ( - message.timerStartInterval != null && - message.hasOwnProperty("timerStartInterval") - ) - writer - .uint32(/* id 61, wireType 0 =*/ 488) - .bool(message.timerStartInterval); - if ( - message.timerStartDelay != null && - message.hasOwnProperty("timerStartDelay") - ) - writer - .uint32(/* id 62, wireType 0 =*/ 496) - .int32(message.timerStartDelay); - if ( - message.timerReadyId != null && - message.hasOwnProperty("timerReadyId") - ) - writer - .uint32(/* id 70, wireType 0 =*/ 560) - .int32(message.timerReadyId); - if ( - message.timerReadyDone != null && - message.hasOwnProperty("timerReadyDone") - ) - writer - .uint32(/* id 71, wireType 0 =*/ 568) - .bool(message.timerReadyDone); - if ( - message.timerClearId != null && - message.hasOwnProperty("timerClearId") - ) - writer - .uint32(/* id 80, wireType 0 =*/ 640) - .int32(message.timerClearId); - if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) - writer.uint32(/* id 90, wireType 0 =*/ 720).int32(message.fetchReqId); - if ( - message.fetchReqUrl != null && - message.hasOwnProperty("fetchReqUrl") - ) - writer - .uint32(/* id 91, wireType 2 =*/ 730) - .string(message.fetchReqUrl); - if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) - writer - .uint32(/* id 100, wireType 0 =*/ 800) - .int32(message.fetchResId); - if ( - message.fetchResStatus != null && - message.hasOwnProperty("fetchResStatus") - ) - writer - .uint32(/* id 101, wireType 0 =*/ 808) - .int32(message.fetchResStatus); - if ( - message.fetchResHeaderLine != null && - message.fetchResHeaderLine.length - ) - for (var i = 0; i < message.fetchResHeaderLine.length; ++i) - writer - .uint32(/* id 102, wireType 2 =*/ 818) - .string(message.fetchResHeaderLine[i]); - if ( - message.fetchResBody != null && - message.hasOwnProperty("fetchResBody") - ) - writer - .uint32(/* id 103, wireType 2 =*/ 826) - .bytes(message.fetchResBody); - if ( - message.readFileSyncFilename != null && - message.hasOwnProperty("readFileSyncFilename") - ) - writer - .uint32(/* id 110, wireType 2 =*/ 882) - .string(message.readFileSyncFilename); - if ( - message.readFileSyncData != null && - message.hasOwnProperty("readFileSyncData") - ) - writer - .uint32(/* id 120, wireType 2 =*/ 962) - .bytes(message.readFileSyncData); - if ( - message.writeFileSyncFilename != null && - message.hasOwnProperty("writeFileSyncFilename") - ) - writer - .uint32(/* id 130, wireType 2 =*/ 1042) - .string(message.writeFileSyncFilename); - if ( - message.writeFileSyncData != null && - message.hasOwnProperty("writeFileSyncData") - ) - writer - .uint32(/* id 131, wireType 2 =*/ 1050) - .bytes(message.writeFileSyncData); - if ( - message.writeFileSyncPerm != null && - message.hasOwnProperty("writeFileSyncPerm") - ) - writer - .uint32(/* id 132, wireType 0 =*/ 1056) - .uint32(message.writeFileSyncPerm); - return writer; - }; - - /** - * Encodes the specified Msg message, length delimited. Does not implicitly {@link main.Msg.verify|verify} messages. - * @function encodeDelimited - * @memberof main.Msg - * @static - * @param {main.IMsg} message Msg message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Msg.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a Msg message from the specified reader or buffer. - * @function decode - * @memberof main.Msg - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {main.Msg} Msg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Msg.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, - message = new $root.main.Msg(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.command = reader.int32(); - break; - case 2: - message.error = reader.string(); - break; - case 10: - message.startCwd = reader.string(); - break; - case 11: - if (!(message.startArgv && message.startArgv.length)) - message.startArgv = []; - message.startArgv.push(reader.string()); - break; - case 12: - message.startDebugFlag = reader.bool(); - break; - case 13: - message.startMainJs = reader.string(); - break; - case 14: - message.startMainMap = reader.string(); - break; - case 20: - message.codeFetchModuleSpecifier = reader.string(); - break; - case 21: - message.codeFetchContainingFile = reader.string(); - break; - case 30: - message.codeFetchResModuleName = reader.string(); - break; - case 31: - message.codeFetchResFilename = reader.string(); - break; - case 32: - message.codeFetchResSourceCode = reader.string(); - break; - case 33: - message.codeFetchResOutputCode = reader.string(); - break; - case 41: - message.codeCacheFilename = reader.string(); - break; - case 42: - message.codeCacheSourceCode = reader.string(); - break; - case 43: - message.codeCacheOutputCode = reader.string(); - break; - case 50: - message.exitCode = reader.int32(); - break; - case 60: - message.timerStartId = reader.int32(); - break; - case 61: - message.timerStartInterval = reader.bool(); - break; - case 62: - message.timerStartDelay = reader.int32(); - break; - case 70: - message.timerReadyId = reader.int32(); - break; - case 71: - message.timerReadyDone = reader.bool(); - break; - case 80: - message.timerClearId = reader.int32(); - break; - case 90: - message.fetchReqId = reader.int32(); - break; - case 91: - message.fetchReqUrl = reader.string(); - break; - case 100: - message.fetchResId = reader.int32(); - break; - case 101: - message.fetchResStatus = reader.int32(); - break; - case 102: - if ( - !( - message.fetchResHeaderLine && - message.fetchResHeaderLine.length - ) - ) - message.fetchResHeaderLine = []; - message.fetchResHeaderLine.push(reader.string()); - break; - case 103: - message.fetchResBody = reader.bytes(); - break; - case 110: - message.readFileSyncFilename = reader.string(); - break; - case 120: - message.readFileSyncData = reader.bytes(); - break; - case 130: - message.writeFileSyncFilename = reader.string(); - break; - case 131: - message.writeFileSyncData = reader.bytes(); - break; - case 132: - message.writeFileSyncPerm = reader.uint32(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a Msg message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof main.Msg - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {main.Msg} Msg - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Msg.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a Msg message. - * @function verify - * @memberof main.Msg - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Msg.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.command != null && message.hasOwnProperty("command")) - switch (message.command) { - default: - return "command: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - break; - } - if (message.error != null && message.hasOwnProperty("error")) - if (!$util.isString(message.error)) return "error: string expected"; - if (message.startCwd != null && message.hasOwnProperty("startCwd")) - if (!$util.isString(message.startCwd)) - return "startCwd: string expected"; - if (message.startArgv != null && message.hasOwnProperty("startArgv")) { - if (!Array.isArray(message.startArgv)) - return "startArgv: array expected"; - for (var i = 0; i < message.startArgv.length; ++i) - if (!$util.isString(message.startArgv[i])) - return "startArgv: string[] expected"; - } - if ( - message.startDebugFlag != null && - message.hasOwnProperty("startDebugFlag") - ) - if (typeof message.startDebugFlag !== "boolean") - return "startDebugFlag: boolean expected"; - if ( - message.startMainJs != null && - message.hasOwnProperty("startMainJs") - ) - if (!$util.isString(message.startMainJs)) - return "startMainJs: string expected"; - if ( - message.startMainMap != null && - message.hasOwnProperty("startMainMap") - ) - if (!$util.isString(message.startMainMap)) - return "startMainMap: string expected"; - if ( - message.codeFetchModuleSpecifier != null && - message.hasOwnProperty("codeFetchModuleSpecifier") - ) - if (!$util.isString(message.codeFetchModuleSpecifier)) - return "codeFetchModuleSpecifier: string expected"; - if ( - message.codeFetchContainingFile != null && - message.hasOwnProperty("codeFetchContainingFile") - ) - if (!$util.isString(message.codeFetchContainingFile)) - return "codeFetchContainingFile: string expected"; - if ( - message.codeFetchResModuleName != null && - message.hasOwnProperty("codeFetchResModuleName") - ) - if (!$util.isString(message.codeFetchResModuleName)) - return "codeFetchResModuleName: string expected"; - if ( - message.codeFetchResFilename != null && - message.hasOwnProperty("codeFetchResFilename") - ) - if (!$util.isString(message.codeFetchResFilename)) - return "codeFetchResFilename: string expected"; - if ( - message.codeFetchResSourceCode != null && - message.hasOwnProperty("codeFetchResSourceCode") - ) - if (!$util.isString(message.codeFetchResSourceCode)) - return "codeFetchResSourceCode: string expected"; - if ( - message.codeFetchResOutputCode != null && - message.hasOwnProperty("codeFetchResOutputCode") - ) - if (!$util.isString(message.codeFetchResOutputCode)) - return "codeFetchResOutputCode: string expected"; - if ( - message.codeCacheFilename != null && - message.hasOwnProperty("codeCacheFilename") - ) - if (!$util.isString(message.codeCacheFilename)) - return "codeCacheFilename: string expected"; - if ( - message.codeCacheSourceCode != null && - message.hasOwnProperty("codeCacheSourceCode") - ) - if (!$util.isString(message.codeCacheSourceCode)) - return "codeCacheSourceCode: string expected"; - if ( - message.codeCacheOutputCode != null && - message.hasOwnProperty("codeCacheOutputCode") - ) - if (!$util.isString(message.codeCacheOutputCode)) - return "codeCacheOutputCode: string expected"; - if (message.exitCode != null && message.hasOwnProperty("exitCode")) - if (!$util.isInteger(message.exitCode)) - return "exitCode: integer expected"; - if ( - message.timerStartId != null && - message.hasOwnProperty("timerStartId") - ) - if (!$util.isInteger(message.timerStartId)) - return "timerStartId: integer expected"; - if ( - message.timerStartInterval != null && - message.hasOwnProperty("timerStartInterval") - ) - if (typeof message.timerStartInterval !== "boolean") - return "timerStartInterval: boolean expected"; - if ( - message.timerStartDelay != null && - message.hasOwnProperty("timerStartDelay") - ) - if (!$util.isInteger(message.timerStartDelay)) - return "timerStartDelay: integer expected"; - if ( - message.timerReadyId != null && - message.hasOwnProperty("timerReadyId") - ) - if (!$util.isInteger(message.timerReadyId)) - return "timerReadyId: integer expected"; - if ( - message.timerReadyDone != null && - message.hasOwnProperty("timerReadyDone") - ) - if (typeof message.timerReadyDone !== "boolean") - return "timerReadyDone: boolean expected"; - if ( - message.timerClearId != null && - message.hasOwnProperty("timerClearId") - ) - if (!$util.isInteger(message.timerClearId)) - return "timerClearId: integer expected"; - if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) - if (!$util.isInteger(message.fetchReqId)) - return "fetchReqId: integer expected"; - if ( - message.fetchReqUrl != null && - message.hasOwnProperty("fetchReqUrl") - ) - if (!$util.isString(message.fetchReqUrl)) - return "fetchReqUrl: string expected"; - if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) - if (!$util.isInteger(message.fetchResId)) - return "fetchResId: integer expected"; - if ( - message.fetchResStatus != null && - message.hasOwnProperty("fetchResStatus") - ) - if (!$util.isInteger(message.fetchResStatus)) - return "fetchResStatus: integer expected"; - if ( - message.fetchResHeaderLine != null && - message.hasOwnProperty("fetchResHeaderLine") - ) { - if (!Array.isArray(message.fetchResHeaderLine)) - return "fetchResHeaderLine: array expected"; - for (var i = 0; i < message.fetchResHeaderLine.length; ++i) - if (!$util.isString(message.fetchResHeaderLine[i])) - return "fetchResHeaderLine: string[] expected"; - } - if ( - message.fetchResBody != null && - message.hasOwnProperty("fetchResBody") - ) - if ( - !( - (message.fetchResBody && - typeof message.fetchResBody.length === "number") || - $util.isString(message.fetchResBody) - ) - ) - return "fetchResBody: buffer expected"; - if ( - message.readFileSyncFilename != null && - message.hasOwnProperty("readFileSyncFilename") - ) - if (!$util.isString(message.readFileSyncFilename)) - return "readFileSyncFilename: string expected"; - if ( - message.readFileSyncData != null && - message.hasOwnProperty("readFileSyncData") - ) - if ( - !( - (message.readFileSyncData && - typeof message.readFileSyncData.length === "number") || - $util.isString(message.readFileSyncData) - ) - ) - return "readFileSyncData: buffer expected"; - if ( - message.writeFileSyncFilename != null && - message.hasOwnProperty("writeFileSyncFilename") - ) - if (!$util.isString(message.writeFileSyncFilename)) - return "writeFileSyncFilename: string expected"; - if ( - message.writeFileSyncData != null && - message.hasOwnProperty("writeFileSyncData") - ) - if ( - !( - (message.writeFileSyncData && - typeof message.writeFileSyncData.length === "number") || - $util.isString(message.writeFileSyncData) - ) - ) - return "writeFileSyncData: buffer expected"; - if ( - message.writeFileSyncPerm != null && - message.hasOwnProperty("writeFileSyncPerm") - ) - if (!$util.isInteger(message.writeFileSyncPerm)) - return "writeFileSyncPerm: integer expected"; - return null; - }; - - /** - * Creates a Msg message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof main.Msg - * @static - * @param {Object.} object Plain object - * @returns {main.Msg} Msg - */ - Msg.fromObject = function fromObject(object) { - if (object instanceof $root.main.Msg) return object; - var message = new $root.main.Msg(); - switch (object.command) { - case "ERROR": - case 0: - message.command = 0; - break; - case "START": - case 1: - message.command = 1; - break; - case "CODE_FETCH": - case 2: - message.command = 2; - break; - case "CODE_FETCH_RES": - case 3: - message.command = 3; - break; - case "CODE_CACHE": - case 4: - message.command = 4; - break; - case "EXIT": - case 5: - message.command = 5; - break; - case "TIMER_START": - case 6: - message.command = 6; - break; - case "TIMER_READY": - case 7: - message.command = 7; - break; - case "TIMER_CLEAR": - case 8: - message.command = 8; - break; - case "FETCH_REQ": - case 9: - message.command = 9; - break; - case "FETCH_RES": - case 10: - message.command = 10; - break; - case "READ_FILE_SYNC": - case 11: - message.command = 11; - break; - case "READ_FILE_SYNC_RES": - case 12: - message.command = 12; - break; - case "WRITE_FILE_SYNC": - case 13: - message.command = 13; - break; - } - if (object.error != null) message.error = String(object.error); - if (object.startCwd != null) message.startCwd = String(object.startCwd); - if (object.startArgv) { - if (!Array.isArray(object.startArgv)) - throw TypeError(".main.Msg.startArgv: array expected"); - message.startArgv = []; - for (var i = 0; i < object.startArgv.length; ++i) - message.startArgv[i] = String(object.startArgv[i]); - } - if (object.startDebugFlag != null) - message.startDebugFlag = Boolean(object.startDebugFlag); - if (object.startMainJs != null) - message.startMainJs = String(object.startMainJs); - if (object.startMainMap != null) - message.startMainMap = String(object.startMainMap); - if (object.codeFetchModuleSpecifier != null) - message.codeFetchModuleSpecifier = String( - object.codeFetchModuleSpecifier - ); - if (object.codeFetchContainingFile != null) - message.codeFetchContainingFile = String( - object.codeFetchContainingFile - ); - if (object.codeFetchResModuleName != null) - message.codeFetchResModuleName = String( - object.codeFetchResModuleName - ); - if (object.codeFetchResFilename != null) - message.codeFetchResFilename = String(object.codeFetchResFilename); - if (object.codeFetchResSourceCode != null) - message.codeFetchResSourceCode = String( - object.codeFetchResSourceCode - ); - if (object.codeFetchResOutputCode != null) - message.codeFetchResOutputCode = String( - object.codeFetchResOutputCode - ); - if (object.codeCacheFilename != null) - message.codeCacheFilename = String(object.codeCacheFilename); - if (object.codeCacheSourceCode != null) - message.codeCacheSourceCode = String(object.codeCacheSourceCode); - if (object.codeCacheOutputCode != null) - message.codeCacheOutputCode = String(object.codeCacheOutputCode); - if (object.exitCode != null) message.exitCode = object.exitCode | 0; - if (object.timerStartId != null) - message.timerStartId = object.timerStartId | 0; - if (object.timerStartInterval != null) - message.timerStartInterval = Boolean(object.timerStartInterval); - if (object.timerStartDelay != null) - message.timerStartDelay = object.timerStartDelay | 0; - if (object.timerReadyId != null) - message.timerReadyId = object.timerReadyId | 0; - if (object.timerReadyDone != null) - message.timerReadyDone = Boolean(object.timerReadyDone); - if (object.timerClearId != null) - message.timerClearId = object.timerClearId | 0; - if (object.fetchReqId != null) - message.fetchReqId = object.fetchReqId | 0; - if (object.fetchReqUrl != null) - message.fetchReqUrl = String(object.fetchReqUrl); - if (object.fetchResId != null) - message.fetchResId = object.fetchResId | 0; - if (object.fetchResStatus != null) - message.fetchResStatus = object.fetchResStatus | 0; - if (object.fetchResHeaderLine) { - if (!Array.isArray(object.fetchResHeaderLine)) - throw TypeError(".main.Msg.fetchResHeaderLine: array expected"); - message.fetchResHeaderLine = []; - for (var i = 0; i < object.fetchResHeaderLine.length; ++i) - message.fetchResHeaderLine[i] = String( - object.fetchResHeaderLine[i] - ); - } - if (object.fetchResBody != null) - if (typeof object.fetchResBody === "string") - $util.base64.decode( - object.fetchResBody, - (message.fetchResBody = $util.newBuffer( - $util.base64.length(object.fetchResBody) - )), - 0 - ); - else if (object.fetchResBody.length) - message.fetchResBody = object.fetchResBody; - if (object.readFileSyncFilename != null) - message.readFileSyncFilename = String(object.readFileSyncFilename); - if (object.readFileSyncData != null) - if (typeof object.readFileSyncData === "string") - $util.base64.decode( - object.readFileSyncData, - (message.readFileSyncData = $util.newBuffer( - $util.base64.length(object.readFileSyncData) - )), - 0 - ); - else if (object.readFileSyncData.length) - message.readFileSyncData = object.readFileSyncData; - if (object.writeFileSyncFilename != null) - message.writeFileSyncFilename = String(object.writeFileSyncFilename); - if (object.writeFileSyncData != null) - if (typeof object.writeFileSyncData === "string") - $util.base64.decode( - object.writeFileSyncData, - (message.writeFileSyncData = $util.newBuffer( - $util.base64.length(object.writeFileSyncData) - )), - 0 - ); - else if (object.writeFileSyncData.length) - message.writeFileSyncData = object.writeFileSyncData; - if (object.writeFileSyncPerm != null) - message.writeFileSyncPerm = object.writeFileSyncPerm >>> 0; - return message; - }; - - /** - * Creates a plain object from a Msg message. Also converts values to other types if specified. - * @function toObject - * @memberof main.Msg - * @static - * @param {main.Msg} message Msg - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Msg.toObject = function toObject(message, options) { - if (!options) options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.startArgv = []; - object.fetchResHeaderLine = []; - } - if (options.defaults) { - object.command = options.enums === String ? "ERROR" : 0; - object.error = ""; - object.startCwd = ""; - object.startDebugFlag = false; - object.startMainJs = ""; - object.startMainMap = ""; - object.codeFetchModuleSpecifier = ""; - object.codeFetchContainingFile = ""; - object.codeFetchResModuleName = ""; - object.codeFetchResFilename = ""; - object.codeFetchResSourceCode = ""; - object.codeFetchResOutputCode = ""; - object.codeCacheFilename = ""; - object.codeCacheSourceCode = ""; - object.codeCacheOutputCode = ""; - object.exitCode = 0; - object.timerStartId = 0; - object.timerStartInterval = false; - object.timerStartDelay = 0; - object.timerReadyId = 0; - object.timerReadyDone = false; - object.timerClearId = 0; - object.fetchReqId = 0; - object.fetchReqUrl = ""; - object.fetchResId = 0; - object.fetchResStatus = 0; - object.fetchResBody = options.bytes === String ? "" : []; - object.readFileSyncFilename = ""; - object.readFileSyncData = options.bytes === String ? "" : []; - object.writeFileSyncFilename = ""; - object.writeFileSyncData = options.bytes === String ? "" : []; - object.writeFileSyncPerm = 0; - } - if (message.command != null && message.hasOwnProperty("command")) - object.command = - options.enums === String - ? $root.main.Msg.Command[message.command] - : message.command; - if (message.error != null && message.hasOwnProperty("error")) - object.error = message.error; - if (message.startCwd != null && message.hasOwnProperty("startCwd")) - object.startCwd = message.startCwd; - if (message.startArgv && message.startArgv.length) { - object.startArgv = []; - for (var j = 0; j < message.startArgv.length; ++j) - object.startArgv[j] = message.startArgv[j]; - } - if ( - message.startDebugFlag != null && - message.hasOwnProperty("startDebugFlag") - ) - object.startDebugFlag = message.startDebugFlag; - if ( - message.startMainJs != null && - message.hasOwnProperty("startMainJs") - ) - object.startMainJs = message.startMainJs; - if ( - message.startMainMap != null && - message.hasOwnProperty("startMainMap") - ) - object.startMainMap = message.startMainMap; - if ( - message.codeFetchModuleSpecifier != null && - message.hasOwnProperty("codeFetchModuleSpecifier") - ) - object.codeFetchModuleSpecifier = message.codeFetchModuleSpecifier; - if ( - message.codeFetchContainingFile != null && - message.hasOwnProperty("codeFetchContainingFile") - ) - object.codeFetchContainingFile = message.codeFetchContainingFile; - if ( - message.codeFetchResModuleName != null && - message.hasOwnProperty("codeFetchResModuleName") - ) - object.codeFetchResModuleName = message.codeFetchResModuleName; - if ( - message.codeFetchResFilename != null && - message.hasOwnProperty("codeFetchResFilename") - ) - object.codeFetchResFilename = message.codeFetchResFilename; - if ( - message.codeFetchResSourceCode != null && - message.hasOwnProperty("codeFetchResSourceCode") - ) - object.codeFetchResSourceCode = message.codeFetchResSourceCode; - if ( - message.codeFetchResOutputCode != null && - message.hasOwnProperty("codeFetchResOutputCode") - ) - object.codeFetchResOutputCode = message.codeFetchResOutputCode; - if ( - message.codeCacheFilename != null && - message.hasOwnProperty("codeCacheFilename") - ) - object.codeCacheFilename = message.codeCacheFilename; - if ( - message.codeCacheSourceCode != null && - message.hasOwnProperty("codeCacheSourceCode") - ) - object.codeCacheSourceCode = message.codeCacheSourceCode; - if ( - message.codeCacheOutputCode != null && - message.hasOwnProperty("codeCacheOutputCode") - ) - object.codeCacheOutputCode = message.codeCacheOutputCode; - if (message.exitCode != null && message.hasOwnProperty("exitCode")) - object.exitCode = message.exitCode; - if ( - message.timerStartId != null && - message.hasOwnProperty("timerStartId") - ) - object.timerStartId = message.timerStartId; - if ( - message.timerStartInterval != null && - message.hasOwnProperty("timerStartInterval") - ) - object.timerStartInterval = message.timerStartInterval; - if ( - message.timerStartDelay != null && - message.hasOwnProperty("timerStartDelay") - ) - object.timerStartDelay = message.timerStartDelay; - if ( - message.timerReadyId != null && - message.hasOwnProperty("timerReadyId") - ) - object.timerReadyId = message.timerReadyId; - if ( - message.timerReadyDone != null && - message.hasOwnProperty("timerReadyDone") - ) - object.timerReadyDone = message.timerReadyDone; - if ( - message.timerClearId != null && - message.hasOwnProperty("timerClearId") - ) - object.timerClearId = message.timerClearId; - if (message.fetchReqId != null && message.hasOwnProperty("fetchReqId")) - object.fetchReqId = message.fetchReqId; - if ( - message.fetchReqUrl != null && - message.hasOwnProperty("fetchReqUrl") - ) - object.fetchReqUrl = message.fetchReqUrl; - if (message.fetchResId != null && message.hasOwnProperty("fetchResId")) - object.fetchResId = message.fetchResId; - if ( - message.fetchResStatus != null && - message.hasOwnProperty("fetchResStatus") - ) - object.fetchResStatus = message.fetchResStatus; - if (message.fetchResHeaderLine && message.fetchResHeaderLine.length) { - object.fetchResHeaderLine = []; - for (var j = 0; j < message.fetchResHeaderLine.length; ++j) - object.fetchResHeaderLine[j] = message.fetchResHeaderLine[j]; - } - if ( - message.fetchResBody != null && - message.hasOwnProperty("fetchResBody") - ) - object.fetchResBody = - options.bytes === String - ? $util.base64.encode( - message.fetchResBody, - 0, - message.fetchResBody.length - ) - : options.bytes === Array - ? Array.prototype.slice.call(message.fetchResBody) - : message.fetchResBody; - if ( - message.readFileSyncFilename != null && - message.hasOwnProperty("readFileSyncFilename") - ) - object.readFileSyncFilename = message.readFileSyncFilename; - if ( - message.readFileSyncData != null && - message.hasOwnProperty("readFileSyncData") - ) - object.readFileSyncData = - options.bytes === String - ? $util.base64.encode( - message.readFileSyncData, - 0, - message.readFileSyncData.length - ) - : options.bytes === Array - ? Array.prototype.slice.call(message.readFileSyncData) - : message.readFileSyncData; - if ( - message.writeFileSyncFilename != null && - message.hasOwnProperty("writeFileSyncFilename") - ) - object.writeFileSyncFilename = message.writeFileSyncFilename; - if ( - message.writeFileSyncData != null && - message.hasOwnProperty("writeFileSyncData") - ) - object.writeFileSyncData = - options.bytes === String - ? $util.base64.encode( - message.writeFileSyncData, - 0, - message.writeFileSyncData.length - ) - : options.bytes === Array - ? Array.prototype.slice.call(message.writeFileSyncData) - : message.writeFileSyncData; - if ( - message.writeFileSyncPerm != null && - message.hasOwnProperty("writeFileSyncPerm") - ) - object.writeFileSyncPerm = message.writeFileSyncPerm; - return object; - }; - - /** - * Converts this Msg to JSON. - * @function toJSON - * @memberof main.Msg - * @instance - * @returns {Object.} JSON object - */ - Msg.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Command enum. - * @name main.Msg.Command - * @enum {string} - * @property {number} ERROR=0 ERROR value - * @property {number} START=1 START value - * @property {number} CODE_FETCH=2 CODE_FETCH value - * @property {number} CODE_FETCH_RES=3 CODE_FETCH_RES value - * @property {number} CODE_CACHE=4 CODE_CACHE value - * @property {number} EXIT=5 EXIT value - * @property {number} TIMER_START=6 TIMER_START value - * @property {number} TIMER_READY=7 TIMER_READY value - * @property {number} TIMER_CLEAR=8 TIMER_CLEAR value - * @property {number} FETCH_REQ=9 FETCH_REQ value - * @property {number} FETCH_RES=10 FETCH_RES value - * @property {number} READ_FILE_SYNC=11 READ_FILE_SYNC value - * @property {number} READ_FILE_SYNC_RES=12 READ_FILE_SYNC_RES value - * @property {number} WRITE_FILE_SYNC=13 WRITE_FILE_SYNC value - */ - Msg.Command = (function() { - var valuesById = {}, - values = Object.create(valuesById); - values[(valuesById[0] = "ERROR")] = 0; - values[(valuesById[1] = "START")] = 1; - values[(valuesById[2] = "CODE_FETCH")] = 2; - values[(valuesById[3] = "CODE_FETCH_RES")] = 3; - values[(valuesById[4] = "CODE_CACHE")] = 4; - values[(valuesById[5] = "EXIT")] = 5; - values[(valuesById[6] = "TIMER_START")] = 6; - values[(valuesById[7] = "TIMER_READY")] = 7; - values[(valuesById[8] = "TIMER_CLEAR")] = 8; - values[(valuesById[9] = "FETCH_REQ")] = 9; - values[(valuesById[10] = "FETCH_RES")] = 10; - values[(valuesById[11] = "READ_FILE_SYNC")] = 11; - values[(valuesById[12] = "READ_FILE_SYNC_RES")] = 12; - values[(valuesById[13] = "WRITE_FILE_SYNC")] = 13; - return values; - })(); - - return Msg; - })(); - - return main; - })(); - - return $root; + return $root; }); diff --git a/deno2/js/pbjs_hack.py b/deno2/js/pbjs_hack.py index f0cfa01a57..a4cc7dfb35 100755 --- a/deno2/js/pbjs_hack.py +++ b/deno2/js/pbjs_hack.py @@ -10,6 +10,7 @@ import sys import os js_path = os.path.dirname(os.path.realpath(__file__)) +#bin_path = os.path.join(js_path, "deno_protobufjs", "bin") bin_path = os.path.join(js_path, "node_modules", ".bin") pbjs_bin = os.path.join(bin_path, "pbjs") pbts_bin = os.path.join(bin_path, "pbts") @@ -28,8 +29,8 @@ def touch(fname): open(fname, 'a').close() subprocess.check_call([ - "node", pbjs_bin, + #"--dependency=./deno_protobufjs/minimal", "--target=static-module", "--wraper=commonjs", "--out=" + msg_pbjs_out, @@ -45,5 +46,4 @@ subprocess.check_call([ ]) assert os.path.exists(msg_pbts_out) - touch(stamp_file) diff --git a/deno2/mock_runtime_test.cc b/deno2/mock_runtime_test.cc index ea5ef4bf3e..bdaf30416a 100644 --- a/deno2/mock_runtime_test.cc +++ b/deno2/mock_runtime_test.cc @@ -85,6 +85,12 @@ TEST(MockRuntimeTest, DoubleSubFails) { deno_delete(d); } +TEST(MockRuntimeTest, TypedArraySnapshots) { + Deno* d = deno_new(NULL, NULL); + EXPECT_TRUE(deno_execute(d, "a.js", "TypedArraySnapshots()")); + deno_delete(d); +} + int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); deno_init(); diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index bf377535af..8441e766f2 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -1,5 +1,6 @@ // Copyright 2018 Ryan Dahl // All rights reserved. MIT License. +// Hint: --trace_serializer is a useful debugging flag. #include #include #include @@ -126,6 +127,8 @@ int main(int argc, char** argv) { const char* natives_out_cc = argv[4]; const char* snapshot_out_cc = argv[5]; + v8::V8::SetFlagsFromCommandLine(&argc, argv, true); + auto js_data = ReadFile(js_fn); auto natives_blob = ReadFile(natives_in_bin); auto snapshot_in_blob = ReadFile(snapshot_in_bin); diff --git a/deno2/tools/format.sh b/deno2/tools/format.sh index 69d7099193..d8f08f725e 100755 --- a/deno2/tools/format.sh +++ b/deno2/tools/format.sh @@ -4,4 +4,12 @@ clang-format -i -style Google *.cc *.h include/*.h gn format BUILD.gn gn format .gn yapf -i tools/*.py -prettier --write js/*.ts js/*.js js/*.json +prettier --write \ + js/deno.d.ts \ + js/main.ts \ + js/mock_runtime.js \ + js/package.json \ + js/tsconfig.json +# Do not format these. +# js/msg.pb.js +# js/msg.pb.d.ts From 7d9a43638a72aeac38c7f3dfe0e5a0612ce50ddf Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 12 Jun 2018 17:41:27 +0200 Subject: [PATCH 41/44] Fix git versions in gclient --- deno2/.gclient | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deno2/.gclient b/deno2/.gclient index 0e138e7a5f..7524a255c5 100644 --- a/deno2/.gclient +++ b/deno2/.gclient @@ -1,5 +1,5 @@ solutions = [{ - 'url': 'https://chromium.googlesource.com/v8/v8.git', + 'url': 'https://chromium.googlesource.com/v8/v8.git@2530a044126ae6a1d3dff0d8c61999762847d9f0', 'custom_vars': { 'build_for_node': True }, @@ -22,17 +22,17 @@ solutions = [{ 'v8/tools/luci-go': None } }, { - 'url': 'https://github.com/ry/protobuf_chromium.git', + 'url': 'https://github.com/ry/protobuf_chromium.git@e62249df45c2a0a9c38e4017e8ab604020b986c5', 'name': 'third_party/protobuf', 'deps_file': 'DEPS' }, { 'url': - 'https://chromium.googlesource.com/chromium/src/tools/protoc_wrapper', + 'https://chromium.googlesource.com/chromium/src/tools/protoc_wrapper@9af82fef8cb9ca3ccc13e2ed958f58f2c21f449b', 'name': 'tools/protoc_wrapper' }, { 'url': - 'https://chromium.googlesource.com/chromium/src/third_party/zlib', + 'https://chromium.googlesource.com/chromium/src/third_party/zlib@39b4a6260702da4c089eca57136abf40a39667e9', 'name': 'third_party/zlib' }] From 36f657c0d2961a8a798b0f209ff40aabd169b766 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Tue, 12 Jun 2018 17:38:47 +0200 Subject: [PATCH 42/44] deno2/main: add missing #include --- deno2/main.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/deno2/main.cc b/deno2/main.cc index 820f15a095..2c0b1b2983 100644 --- a/deno2/main.cc +++ b/deno2/main.cc @@ -2,6 +2,7 @@ // All rights reserved. MIT License. #include #include +#include #include "include/deno.h" From 1676822888ef6c75bb2afff3b7a93d030d63f2ea Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Tue, 12 Jun 2018 22:05:49 +0200 Subject: [PATCH 43/44] deno2: build on Windows --- deno2/.gclient | 1 - deno2/BUILD.gn | 4 ++-- deno2/deno.cc | 2 +- deno2/js/package.json | 3 +++ deno2/js/pbjs_hack.py | 9 +++++---- deno2/js/run_node.py | 15 ++++++++++++++- deno2/js/yarn.lock | 25 +++++++++++++++++++++++++ deno2/snapshot_creator.cc | 4 +++- 8 files changed, 53 insertions(+), 10 deletions(-) diff --git a/deno2/.gclient b/deno2/.gclient index 7524a255c5..e597912f2c 100644 --- a/deno2/.gclient +++ b/deno2/.gclient @@ -11,7 +11,6 @@ solutions = [{ 'v8/testing/gmock': None, 'v8/tools/swarming_client': None, 'v8/third_party/instrumented_libraries': None, - 'v8/tools/gyp': None, 'v8/third_party/android_tools': None, 'v8/test/wasm-js': None, 'v8/test/benchmarks/data': None, diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index 58859293ff..749667d3ac 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -88,7 +88,7 @@ run_node("bundle") { ":run_tsc", ] args = [ - "./node_modules/.bin/browserify", + "./node_modules/browserify/bin/cmd.js", rebase_path(main_source, root_build_dir), "-o", rebase_path(main_output, root_build_dir), @@ -112,7 +112,7 @@ run_node("run_tsc") { ":pbjs_hack", ] args = [ - "./node_modules/.bin/tsc", + "./node_modules/typescript/bin/tsc", "-p", rebase_path("js/tsconfig.json", root_build_dir), "--outDir", diff --git a/deno2/deno.cc b/deno2/deno.cc index 991654612e..521eb7cf9f 100644 --- a/deno2/deno.cc +++ b/deno2/deno.cc @@ -243,7 +243,7 @@ v8::StartupData MakeSnapshot(v8::StartupData* prev_natives_blob, CHECK(global->Set(context, deno::v8_str("denoPub"), pub_val).FromJust()); bool r = Execute(context, js_filename, js_source); - assert(r); + CHECK(r); creator->SetDefaultContext(context, v8::SerializeInternalFieldsCallback( SerializeInternalFields, nullptr)); diff --git a/deno2/js/package.json b/deno2/js/package.json index 03987fe085..f11e25f13e 100644 --- a/deno2/js/package.json +++ b/deno2/js/package.json @@ -1,7 +1,10 @@ { "devDependencies": { + "@types/base64-js": "^1.2.5", + "@types/source-map-support": "^0.4.1", "browserify": "^16.2.2", "protobufjs": "^6.8.6", + "source-map-support": "^0.5.6", "typescript": "^2.9.1" } } diff --git a/deno2/js/pbjs_hack.py b/deno2/js/pbjs_hack.py index a4cc7dfb35..354f3a5a14 100755 --- a/deno2/js/pbjs_hack.py +++ b/deno2/js/pbjs_hack.py @@ -11,9 +11,9 @@ import os js_path = os.path.dirname(os.path.realpath(__file__)) #bin_path = os.path.join(js_path, "deno_protobufjs", "bin") -bin_path = os.path.join(js_path, "node_modules", ".bin") -pbjs_bin = os.path.join(bin_path, "pbjs") -pbts_bin = os.path.join(bin_path, "pbts") +pbjs_path = os.path.join(js_path, "node_modules", "protobufjs", "bin") +pbjs_bin = os.path.join(pbjs_path, "pbjs") +pbts_bin = os.path.join(pbjs_path, "pbts") msg_pbjs_out = os.path.join(js_path, "msg.pb.js") msg_pbts_out = os.path.join(js_path, "msg.pb.d.ts") assert os.path.exists(pbjs_bin) @@ -29,10 +29,11 @@ def touch(fname): open(fname, 'a').close() subprocess.check_call([ + "node", pbjs_bin, #"--dependency=./deno_protobufjs/minimal", "--target=static-module", - "--wraper=commonjs", + "--wrapper=commonjs", "--out=" + msg_pbjs_out, proto_in ]) diff --git a/deno2/js/run_node.py b/deno2/js/run_node.py index 1a1dc5cc71..8f650a5348 100755 --- a/deno2/js/run_node.py +++ b/deno2/js/run_node.py @@ -6,13 +6,26 @@ import subprocess import sys import os +def symlink(target, name, target_is_dir=False): + if os.name == "nt": + from ctypes import windll, WinError + CreateSymbolicLinkW = windll.kernel32.CreateSymbolicLinkW + flags = 0x02 # SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE + if (target_is_dir): + flags |= 0x01 # SYMBOLIC_LINK_FLAG_DIRECTORY + if not CreateSymbolicLinkW(name.encode('utf-16le'), + target.encode('utf-16le'), + flags): + raise WinError() + else: + os.symlink(target, name) js_path = os.path.dirname(os.path.realpath(__file__)) node_modules_path = os.path.join(js_path, "node_modules") # root_out_dir if not os.path.exists("node_modules"): - os.symlink(node_modules_path, "node_modules") + symlink(node_modules_path, "node_modules", True) args = ["node"] + sys.argv[1:] sys.exit(subprocess.call(args)) diff --git a/deno2/js/yarn.lock b/deno2/js/yarn.lock index aa93de3f09..10e28c9464 100644 --- a/deno2/js/yarn.lock +++ b/deno2/js/yarn.lock @@ -45,14 +45,28 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" +"@types/base64-js@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.2.5.tgz#582b2476169a6cba460a214d476c744441d873d5" + "@types/long@^3.0.32": version "3.0.32" resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" +"@types/node@*": + version "10.3.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.2.tgz#3840ec6c12556fdda6e0e6d036df853101d732a4" + "@types/node@^8.9.4": version "8.10.19" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.19.tgz#66b5b6325c048cbf4512b7a88b0e79c2ee99d3d2" +"@types/source-map-support@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@types/source-map-support/-/source-map-support-0.4.1.tgz#ad77158e8c6695a16629ef82b9fb9dfe7c610ac0" + dependencies: + "@types/node" "*" + JSONStream@^1.0.3: version "1.3.3" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" @@ -826,6 +840,17 @@ shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" +source-map-support@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" diff --git a/deno2/snapshot_creator.cc b/deno2/snapshot_creator.cc index 8441e766f2..1cd39cce54 100644 --- a/deno2/snapshot_creator.cc +++ b/deno2/snapshot_creator.cc @@ -130,12 +130,14 @@ int main(int argc, char** argv) { v8::V8::SetFlagsFromCommandLine(&argc, argv, true); auto js_data = ReadFile(js_fn); + // Ensure js_source is null-terminated. + std::string js_source(js_data.data, js_data.raw_size); auto natives_blob = ReadFile(natives_in_bin); auto snapshot_in_blob = ReadFile(snapshot_in_bin); deno_init(); auto snapshot_blob = - deno::MakeSnapshot(&natives_blob, &snapshot_in_blob, js_fn, js_data.data); + deno::MakeSnapshot(&natives_blob, &snapshot_in_blob, js_fn, js_source.c_str()); StartupDataCppWriter nativesWriter("natives", natives_out_cc, natives_blob); nativesWriter.Write(); From bb6222c91872695cbe98aa2a75166265f52cec2e Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 13 Jun 2018 14:58:06 +0200 Subject: [PATCH 44/44] Clean up the build (replace browserify with parcel) --- deno2/BUILD.gn | 47 +- deno2/js/package.json | 5 +- deno2/js/pbjs_hack.py | 14 +- deno2/js/run_node.py | 5 +- deno2/js/yarn.lock | 3278 +++++++++++++++++++++++++++++++++++++---- 5 files changed, 3008 insertions(+), 341 deletions(-) diff --git a/deno2/BUILD.gn b/deno2/BUILD.gn index 749667d3ac..7b358e7c68 100644 --- a/deno2/BUILD.gn +++ b/deno2/BUILD.gn @@ -76,51 +76,64 @@ template("run_node") { } run_node("bundle") { - main_source = "$target_gen_dir/tsc_dist/main.js" - main_output = "$target_gen_dir/bundle/main.js" + out_dir = "$target_gen_dir/bundle/" sources = [ - main_source, + "$target_gen_dir/tsc_dist/main.js", # Not real input. See run_tsc comment. + "js/main.ts", ] outputs = [ - main_output, + out_dir + "main.js", ] deps = [ ":run_tsc", ] args = [ - "./node_modules/browserify/bin/cmd.js", - rebase_path(main_source, root_build_dir), - "-o", - rebase_path(main_output, root_build_dir), + "./node_modules/parcel-bundler/bin/cli.js", + "build", + "--no-minify", + "--out-dir", + rebase_path(out_dir, root_build_dir), + rebase_path("js/main.ts", root_build_dir), ] } +# Due to bugs in Parcel we must run TSC independently in order to catch errors. +# https://github.com/parcel-bundler/parcel/issues/954 run_node("run_tsc") { - main_source = "js/main.ts" + main = "js/main.ts" + tsconfig = "js/tsconfig.json" + out_dir = "$target_gen_dir/tsc_dist/" sources = [ - #"js/msg.pb.d.ts", + "js/msg.pb.d.ts", "js/msg.pb.js", - "js/tsconfig.json", - main_source, + main, + tsconfig, ] - out_dir = "$target_gen_dir/tsc_dist" outputs = [ out_dir + "/main.js", out_dir + "/main.map", ] deps = [ - ":pbjs_hack", + ":protobufjs", ] args = [ "./node_modules/typescript/bin/tsc", - "-p", - rebase_path("js/tsconfig.json", root_build_dir), + "--project", + rebase_path(tsconfig, root_build_dir), "--outDir", rebase_path(out_dir, root_build_dir), ] } -action("pbjs_hack") { +# Generates protobufjs code. +# TODO(ry) Ideally protobufjs output files should be written into +# target_gen_dir, but its difficult to get this working in a way that the +# bundler can resolve their location. (The bundler does not support NODE_PATH?) +# Therefore this hack: write the generated msg.pb.js and msg.pb.d.ts outputs +# into the js/ folder, and we check them into the repo. Hopefully this hack can +# be removed at some point. If msg.proto is changed, commit changes to the +# generated JS files. The stamp file is just to make gn work. +action("protobufjs") { script = "js/pbjs_hack.py" sources = [ "msg.proto", diff --git a/deno2/js/package.json b/deno2/js/package.json index f11e25f13e..7bc37323e4 100644 --- a/deno2/js/package.json +++ b/deno2/js/package.json @@ -1,10 +1,7 @@ { "devDependencies": { - "@types/base64-js": "^1.2.5", - "@types/source-map-support": "^0.4.1", - "browserify": "^16.2.2", + "parcel-bundler": "^1.8.1", "protobufjs": "^6.8.6", - "source-map-support": "^0.5.6", "typescript": "^2.9.1" } } diff --git a/deno2/js/pbjs_hack.py b/deno2/js/pbjs_hack.py index 354f3a5a14..e0e1ab06f6 100755 --- a/deno2/js/pbjs_hack.py +++ b/deno2/js/pbjs_hack.py @@ -1,16 +1,21 @@ #!/usr/bin/env python """ gn can only run python scripts. -protobuf.js must generate some javascript files. -it's very difficult to get this into the gn build sanely. -therefore we write them into the source directory. + +Generates protobufjs code. """ import subprocess import sys import os +# TODO(ry) Ideally protobufjs output files should be written into +# target_gen_dir, but its difficult to get this working in a way that parcel can +# resolve their location. (Parcel does not support NODE_PATH.) Therefore this +# hack: write the generated msg.pb.js and msg.pb.d.ts outputs into the js/ +# folder, and we check them into the repo. Hopefully this hack can be removed at +# some point. If msg.proto is changed, commit changes to the generated JS +# files. js_path = os.path.dirname(os.path.realpath(__file__)) -#bin_path = os.path.join(js_path, "deno_protobufjs", "bin") pbjs_path = os.path.join(js_path, "node_modules", "protobufjs", "bin") pbjs_bin = os.path.join(pbjs_path, "pbjs") pbts_bin = os.path.join(pbjs_path, "pbts") @@ -31,7 +36,6 @@ def touch(fname): subprocess.check_call([ "node", pbjs_bin, - #"--dependency=./deno_protobufjs/minimal", "--target=static-module", "--wrapper=commonjs", "--out=" + msg_pbjs_out, diff --git a/deno2/js/run_node.py b/deno2/js/run_node.py index 8f650a5348..1a69dc502f 100755 --- a/deno2/js/run_node.py +++ b/deno2/js/run_node.py @@ -1,6 +1,8 @@ #!/usr/bin/env python """ -gn can only run python scripts. +gn can only run python scripts. This launches a subprocess Node process. +The working dir of this program is out/Debug/ (AKA root_build_dir) +Before running node, we symlink js/node_modules to out/Debug/node_modules. """ import subprocess import sys @@ -23,7 +25,6 @@ def symlink(target, name, target_is_dir=False): js_path = os.path.dirname(os.path.realpath(__file__)) node_modules_path = os.path.join(js_path, "node_modules") -# root_out_dir if not os.path.exists("node_modules"): symlink(node_modules_path, "node_modules", True) diff --git a/deno2/js/yarn.lock b/deno2/js/yarn.lock index 10e28c9464..f7ab0c5416 100644 --- a/deno2/js/yarn.lock +++ b/deno2/js/yarn.lock @@ -45,61 +45,83 @@ version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" -"@types/base64-js@^1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/base64-js/-/base64-js-1.2.5.tgz#582b2476169a6cba460a214d476c744441d873d5" - "@types/long@^3.0.32": version "3.0.32" resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" -"@types/node@*": - version "10.3.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.2.tgz#3840ec6c12556fdda6e0e6d036df853101d732a4" - "@types/node@^8.9.4": version "8.10.19" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.19.tgz#66b5b6325c048cbf4512b7a88b0e79c2ee99d3d2" -"@types/source-map-support@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/source-map-support/-/source-map-support-0.4.1.tgz#ad77158e8c6695a16629ef82b9fb9dfe7c610ac0" - dependencies: - "@types/node" "*" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" -JSONStream@^1.0.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -acorn-node@^1.2.0, acorn-node@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.3.0.tgz#5f86d73346743810ef1269b901dbcbded020861b" - dependencies: - acorn "^5.4.1" - xtend "^4.0.1" - -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.4.1: +acorn@^5.0.0: version "5.6.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.6.2.tgz#b1da1d7be2ac1b4a327fb9eab851702c5045b4e7" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" +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" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" asn1.js@^4.0.0: version "4.10.1" @@ -109,17 +131,528 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -assert@^1.4.0: +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" -astw@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/astw/-/astw-2.2.0.tgz#7bd41784d32493987aeb239b6b4e1c57a873b917" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + +atob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + +autoprefixer@^6.3.1: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" dependencies: - acorn "^4.0.3" + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.25.0, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.25.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1, babel-plugin-transform-es2015-modules-commonjs@^6.26.0: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-env@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.15.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon-walk@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce" + dependencies: + babel-runtime "^6.11.6" + babel-types "^6.15.0" + lodash.clone "^4.5.0" + +babylon@^6.17.4, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +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@^1.0.0: version "1.0.0" @@ -129,10 +662,38 @@ base64-js@^1.0.2: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +bindings@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" + +bluebird@^3.0.5: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -140,27 +701,34 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brfs@^1.2.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + dependencies: + quote-stream "^1.0.1" + resolve "^1.1.5" + static-module "^2.2.0" + through2 "^2.0.0" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" -browser-pack@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" - dependencies: - JSONStream "^1.0.3" - combine-source-map "~0.8.0" - defined "^1.0.0" - safe-buffer "^5.1.1" - through2 "^2.0.0" - umd "^3.0.0" - -browser-resolve@^1.11.0, browser-resolve@^1.7.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -207,64 +775,29 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@~0.2.0: +browserify-zlib@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" dependencies: pako "~1.0.5" -browserify@^16.2.2: - version "16.2.2" - resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.2.tgz#4b1f66ba0e54fa39dbc5aa4be9629142143d91b0" +browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" dependencies: - JSONStream "^1.0.3" - assert "^1.4.0" - browser-pack "^6.0.1" - browser-resolve "^1.11.0" - browserify-zlib "~0.2.0" - buffer "^5.0.2" - cached-path-relative "^1.0.0" - concat-stream "^1.6.0" - console-browserify "^1.1.0" - constants-browserify "~1.0.0" - crypto-browserify "^3.0.0" - defined "^1.0.0" - deps-sort "^2.0.0" - domain-browser "^1.2.0" - duplexer2 "~0.1.2" - events "^2.0.0" - glob "^7.1.0" - has "^1.0.0" - htmlescape "^1.1.0" - https-browserify "^1.0.0" - inherits "~2.0.1" - insert-module-globals "^7.0.0" - labeled-stream-splicer "^2.0.0" - mkdirp "^0.5.0" - module-deps "^6.0.0" - os-browserify "~0.3.0" - parents "^1.0.1" - path-browserify "~0.0.0" - process "~0.11.0" - punycode "^1.3.2" - querystring-es3 "~0.2.0" - read-only-stream "^2.0.0" - readable-stream "^2.0.2" - resolve "^1.1.4" - shasum "^1.0.0" - shell-quote "^1.6.1" - stream-browserify "^2.0.0" - stream-http "^2.0.0" - string_decoder "^1.1.1" - subarg "^1.0.0" - syntax-error "^1.1.1" - through2 "^2.0.0" - timers-browserify "^1.0.1" - tty-browserify "0.0.1" - url "~0.11.0" - util "~0.10.1" - vm-browserify "^1.0.0" - xtend "^4.0.0" + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" buffer-from@^1.0.0: version "1.1.0" @@ -274,20 +807,88 @@ buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.1.0.tgz#c913e43678c7cb7c8bd16afbcddb6c5505e8f9fe" +buffer@^4.3.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" builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" -cached-path-relative@^1.0.0: +cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.1.tgz#d09c4b52800aa4c078e2dd81a869aac90d2e54e7" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caniuse-api@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" + dependencies: + browserslist "^1.3.6" + caniuse-db "^1.0.30000529" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000853" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000853.tgz#32901a7d6b93a87d59f08aaee47ea8ff6ec90fdf" + +caniuse-lite@^1.0.30000844: + version "1.0.30000853" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000853.tgz#505249fc78d60e20ad47af3c13706d6f9fd209fd" + +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" + +chalk@^2.1.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -296,20 +897,113 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -combine-source-map@^0.8.0, combine-source-map@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" +clap@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" dependencies: - convert-source-map "~1.1.0" - inline-source-map "~0.6.0" - lodash.memoize "~3.0.3" - source-map "~0.5.3" + chalk "^1.1.3" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +clones@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/clones/-/clones-1.1.0.tgz#87e904132d6140c5c0b72006c08c0d05bd7b63b3" + +coa@~1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" + dependencies: + q "^1.1.2" + +coa@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" + 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" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.3.0, color-convert@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + dependencies: + color-name "1.1.1" + +color-name@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + +color-name@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +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" + +command-exists@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.6.tgz#577f8e5feb0cb0f159cd557a51a9be1bdd76e09e" + +commander@^2.11.0, commander@^2.9.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: +concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -318,19 +1012,38 @@ concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@~1.1.5: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + 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" -constants-browserify@~1.0.0: +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" + +constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -convert-source-map@~1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" +convert-source-map@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" core-util-is@~1.0.0: version "1.0.2" @@ -364,7 +1077,17 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -crypto-browserify@^3.0.0: +cross-spawn@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -380,22 +1103,165 @@ crypto-browserify@^3.0.0: randombytes "^2.0.0" randomfill "^1.0.3" +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-select-base-adapter@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990" + +css-select@~1.3.0-rc0: + version "1.3.0-rc0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.3.0-rc0.tgz#6f93196aaae737666ea1036a8cb14a8fcb7a9231" + dependencies: + boolbase "^1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "^1.0.1" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha25: + version "1.0.0-alpha25" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha25.tgz#1bbfabfbf6eeef4f01d9108ff2edd0be2fe35597" + dependencies: + mdn-data "^1.0.0" + source-map "^0.5.3" + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssnano@^3.10.0, cssnano@^3.4.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" + 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@^3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + dependencies: + css-tree "1.0.0-alpha.29" + +csso@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" + dependencies: + clap "^1.0.9" + source-map "^0.5.3" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +deasync@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea" + dependencies: + bindings "~1.2.1" + nan "^2.0.7" + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" -deps-sort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" - dependencies: - JSONStream "^1.0.3" - shasum "^1.0.0" - subarg "^1.0.0" - through2 "^2.0.0" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" des.js@^1.0.0: version "1.0.0" @@ -404,13 +1270,19 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detective@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.1.0.tgz#7a20d89236d7b331ccea65832e7123b5551bb7cb" +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: - acorn-node "^1.3.0" - defined "^1.0.0" - minimist "^1.1.1" + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" diffie-hellman@^5.0.0: version "5.0.3" @@ -420,16 +1292,73 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -domain-browser@^1.2.0: +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.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" -duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: +domelementtype@1, domelementtype@^1.3.0: + 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.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + 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" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + dependencies: + dom-serializer "0" + domelementtype "1" + +dotenv@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + +duplexer2@~0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: readable-stream "^2.0.2" +editorconfig@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.13.3.tgz#e5219e587951d60958fd94ea9a9a008cdeff1b34" + dependencies: + bluebird "^3.0.5" + commander "^2.9.0" + lru-cache "^3.2.0" + semver "^5.1.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47: + version "1.3.48" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900" + elliptic@^6.0.0: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" @@ -442,9 +1371,89 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -events@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +es-abstract@^1.5.1, es-abstract@^1.6.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.10.0.tgz#f647395de22519fbd0d928ffcf1d17e0dec2603e" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@~1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^2.6.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -453,15 +1462,142 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +falafel@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" + dependencies: + acorn "^5.0.0" + foreach "^2.0.5" + isarray "0.0.1" + object-keys "^1.0.6" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +filesize@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +flatten@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -function-bind@^1.1.1: +fsevents@^1.1.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -glob@^7.1.0: +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + 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" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -472,7 +1608,67 @@ glob@^7.1.0: once "^1.3.0" path-is-absolute "^1.0.0" -has@^1.0.0: +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +grapheme-breaker@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac" + dependencies: + brfs "^1.2.0" + unicode-trie "^0.3.1" + +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-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" dependencies: @@ -500,18 +1696,76 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -htmlescape@^1.1.0: +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/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" + +htmlnano@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.9.tgz#e6137aea84d20311a3875c42eb2799a1ff352627" + dependencies: + cssnano "^3.4.0" + object-assign "^4.0.1" + posthtml "^0.11.3" + posthtml-render "^1.1.3" + svgo "^1.0.5" + uglify-es "^3.3.9" + +htmlparser2@^3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +iconv-lite@^0.4.4: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +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" @@ -527,74 +1781,331 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -inline-source-map@~0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" - dependencies: - source-map "~0.5.3" +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -insert-module-globals@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.1.0.tgz#dbb3cea71d3a43d5a07ef0310fe5f078aa4dbf35" +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: - JSONStream "^1.0.3" - combine-source-map "^0.8.0" - concat-stream "^1.6.1" - is-buffer "^1.1.0" - lexical-scope "^1.2.0" - path-is-absolute "^1.0.1" - process "~0.11.0" - through2 "^2.0.0" - xtend "^4.0.0" + loose-envify "^1.0.0" -is-buffer@^1.1.0: +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +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.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" -isarray@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" -isarray@~1.0.0: +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.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-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +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-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +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-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +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-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-url@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +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" -json-stable-stringify@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0, isobject@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" dependencies: - jsonify "~0.0.0" + isarray "1.0.0" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" -jsonparse@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" +js-base64@^2.1.9: + version "2.4.5" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.5.tgz#e293cd3c7c82f070d700fc7a1ca0a2e69f101f92" -labeled-stream-splicer@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" +js-beautify@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.7.5.tgz#69d9651ef60dbb649f65527b53674950138a7919" dependencies: - inherits "^2.0.1" - isarray "^2.0.4" - stream-splicer "^2.0.0" + config-chain "~1.1.5" + editorconfig "^0.13.2" + mkdirp "~0.5.0" + nopt "~3.0.1" -lexical-scope@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/lexical-scope/-/lexical-scope-1.2.0.tgz#fcea5edc704a4b3a8796cdca419c3a0afaf22df4" +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.10.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: - astw "^2.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -lodash.memoize@~3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" +js-yaml@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" + dependencies: + argparse "^1.0.7" + esprima "^2.6.0" + +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" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + dependencies: + minimist "^1.2.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash@^4.17.4: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" long@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + dependencies: + pseudomap "^1.0.1" + +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + dependencies: + vlq "^0.2.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +math-expression-evaluator@^1.2.14: + version "1.2.17" + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" + md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" @@ -602,6 +2113,34 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +mdn-data@^1.0.0, mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + +merge-source-map@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + dependencies: + source-map "^0.5.6" + +micromatch@^3.0.4, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -609,6 +2148,10 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -617,7 +2160,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -627,35 +2170,239 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0, minimist@^1.1.1: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@^0.5.0: +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +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" -module-deps@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.1.0.tgz#d1e1efc481c6886269f7112c52c3236188e16479" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nan@^2.0.7, nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" dependencies: - JSONStream "^1.0.3" - browser-resolve "^1.7.0" - cached-path-relative "^1.0.0" - concat-stream "~1.6.0" - defined "^1.0.0" - detective "^5.0.2" - duplexer2 "^0.1.2" - inherits "^2.0.1" - parents "^1.0.0" - readable-stream "^2.0.2" - resolve "^1.4.0" - stream-combiner2 "^1.1.1" - subarg "^1.0.0" - through2 "^2.0.0" - xtend "^4.0.0" + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + +node-forge@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@~3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +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.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + 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" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + +object-keys@^1.0.6, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +object.values@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" once@^1.3.0: version "1.4.0" @@ -663,19 +2410,104 @@ once@^1.3.0: dependencies: wrappy "1" -os-browserify@~0.3.0: +opn@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" +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.0, os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" -parents@^1.0.0, parents@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" +parcel-bundler@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.8.1.tgz#ac62d0690786f51d7f309694bab6856f685a6986" dependencies: - path-platform "~0.11.15" + babel-code-frame "^6.26.0" + babel-core "^6.25.0" + babel-generator "^6.25.0" + babel-plugin-transform-es2015-modules-commonjs "^6.26.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-preset-env "^1.6.1" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.17.4" + babylon-walk "^1.0.2" + browserslist "^3.2.6" + chalk "^2.1.0" + chokidar "^2.0.3" + command-exists "^1.2.6" + commander "^2.11.0" + cross-spawn "^6.0.4" + cssnano "^3.10.0" + deasync "^0.1.12" + dotenv "^5.0.0" + filesize "^3.6.0" + get-port "^3.2.0" + glob "^7.1.2" + grapheme-breaker "^0.3.2" + htmlnano "^0.1.9" + is-url "^1.2.2" + js-yaml "^3.10.0" + json5 "^1.0.1" + micromatch "^3.0.4" + mkdirp "^0.5.1" + node-forge "^0.7.1" + node-libs-browser "^2.0.0" + opn "^5.1.0" + physical-cpu-count "^2.0.0" + postcss "^6.0.19" + postcss-value-parser "^3.3.0" + posthtml "^0.11.2" + posthtml-parser "^0.4.0" + posthtml-render "^1.1.3" + resolve "^1.4.0" + semver "^5.4.1" + serialize-to-js "^1.1.1" + serve-static "^1.12.4" + source-map "0.6.1" + strip-ansi "^4.0.0" + toml "^2.3.3" + tomlify-j0.4 "^3.0.0" + uglify-es "^3.2.1" + v8-compile-cache "^2.0.0" + ws "^5.1.1" parse-asn1@^5.0.0: version "5.1.1" @@ -687,22 +2519,34 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" -path-browserify@~0.0.0: +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" -path-platform@~0.11.15: - version "0.11.15" - resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" - pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" @@ -713,14 +2557,283 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +physical-cpu-count@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +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.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" + dependencies: + colormin "^1.0.5" + postcss "^5.0.13" + postcss-value-parser "^3.2.3" + +postcss-convert-values@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" + 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.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" + 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.3" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" + dependencies: + postcss "^5.0.14" + uniqs "^2.0.0" + +postcss-filter-plugins@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" + dependencies: + postcss "^5.0.4" + +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.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" + dependencies: + postcss "^5.0.4" + +postcss-merge-rules@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" + dependencies: + browserslist "^1.5.2" + caniuse-api "^1.5.2" + postcss "^5.0.4" + postcss-selector-parser "^2.2.2" + 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.2.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" + 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.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" + dependencies: + alphanum-sort "^1.0.2" + has "^1.0.1" + postcss "^5.0.14" + postcss-selector-parser "^2.0.0" + +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.8" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" + 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.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.1" + +postcss-reduce-idents@^2.2.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" + dependencies: + postcss "^5.0.4" + postcss-value-parser "^3.0.2" + +postcss-reduce-initial@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" + 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, postcss-selector-parser@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^2.1.1: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" + 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.2.0" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" + dependencies: + has "^1.0.1" + 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.8, postcss@^5.2.16: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.19: + version "6.0.22" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3" + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +posthtml-parser@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz#3fe986fca9f00c0f109d731ba590b192f26e776d" + dependencies: + htmlparser2 "^3.9.2" + isobject "^2.1.0" + object-assign "^4.1.1" + +posthtml-parser@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.1.tgz#95b78fef766fbbe0a6f861b6e95582bc3d1ff933" + dependencies: + htmlparser2 "^3.9.2" + object-assign "^4.1.1" + +posthtml-render@^1.1.0, posthtml-render@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" + +posthtml@^0.11.2, posthtml@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz#17ea2921b0555b7455f33c977bd16d8b8cb74f27" + dependencies: + object-assign "^4.1.1" + posthtml-parser "^0.3.3" + posthtml-render "^1.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" -process@~0.11.0: +process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + protobufjs@^6.8.6: version "6.8.6" resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.6.tgz#ce3cf4fff9625b62966c455fc4c15e4331a11ca2" @@ -739,6 +2852,10 @@ protobufjs@^6.8.6: "@types/node" "^8.9.4" long "^4.0.0" +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + public-encrypt@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" @@ -753,11 +2870,22 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@^1.3.2: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -querystring-es3@~0.2.0: +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + 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" @@ -765,6 +2893,14 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +quote-stream@^1.0.1, quote-stream@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + dependencies: + buffer-equal "0.0.1" + minimist "^1.1.3" + through2 "^2.0.0" + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" @@ -778,13 +2914,20 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -read-only-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" - dependencies: - readable-stream "^2.0.2" +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6: +rc@^1.1.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -796,16 +2939,108 @@ readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +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" -resolve@^1.1.4, resolve@^1.4.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.2" + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" + dependencies: + balanced-match "^0.4.2" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +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" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +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.6.1: + 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" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@^1.1.5, resolve@^1.4.0: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" dependencies: path-parse "^1.0.5" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -813,63 +3048,258 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +safer-eval@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/safer-eval/-/safer-eval-1.2.3.tgz#73ba74a34bc8a07d6a44135c815fd18a8eebe7a0" + dependencies: + clones "^1.1.0" + +sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-to-js@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-1.2.1.tgz#2e87f61f938826d24c463a7cbd0dd2929ec38008" + dependencies: + js-beautify "^1.7.5" + safer-eval "^1.2.3" + +serve-static@^1.12.4: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.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" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" -shasum@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" - dependencies: - json-stable-stringify "~0.0.0" - sha.js "~2.4.4" +shallow-copy@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" + shebang-regex "^1.0.0" -source-map-support@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" -source-map@^0.6.0: +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +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-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@0.6.1, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@~0.5.3: +source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -stream-browserify@^2.0.0: +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +stable@~0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + +static-eval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864" + dependencies: + escodegen "^1.8.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +static-module@^2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" + dependencies: + concat-stream "~1.6.0" + convert-source-map "^1.5.1" + duplexer2 "~0.1.4" + escodegen "~1.9.0" + falafel "^2.1.0" + has "^1.0.1" + magic-string "^0.22.4" + merge-source-map "1.0.4" + object-inspect "~1.4.0" + quote-stream "~1.0.2" + readable-stream "~2.3.3" + shallow-copy "~0.0.1" + static-eval "^2.0.0" + through2 "~2.0.3" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" dependencies: inherits "~2.0.1" readable-stream "^2.0.2" -stream-combiner2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" - dependencies: - duplexer2 "~0.1.0" - readable-stream "^2.0.2" - -stream-http@^2.0.0: +stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" dependencies: @@ -879,55 +3309,174 @@ stream-http@^2.0.0: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-splicer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.2" +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_decoder@^1.1.1, string_decoder@~1.1.1: +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-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" dependencies: safe-buffer "~5.1.0" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" +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: - minimist "^1.1.0" + ansi-regex "^2.0.0" -syntax-error@^1.1.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" dependencies: - acorn-node "^1.2.0" + ansi-regex "^3.0.0" -through2@^2.0.0: +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +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.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +svgo@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" + dependencies: + coa "~1.0.1" + colors "~1.1.2" + csso "~2.3.1" + js-yaml "~3.7.0" + mkdirp "~0.5.1" + sax "~1.2.1" + whet.extend "~0.9.9" + +svgo@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.0.5.tgz#7040364c062a0538abacff4401cea6a26a7a389a" + dependencies: + coa "~2.0.1" + colors "~1.1.2" + css-select "~1.3.0-rc0" + css-select-base-adapter "~0.1.0" + css-tree "1.0.0-alpha25" + css-url-regex "^1.1.0" + csso "^3.5.0" + js-yaml "~3.10.0" + mkdirp "~0.5.1" + object.values "^1.0.4" + sax "~1.2.4" + stable "~0.1.6" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tar@^4: + version "4.4.4" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +through2@^2.0.0, through2@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: readable-stream "^2.1.5" xtend "~4.0.1" -"through@>=2.2.7 <3": - 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" +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" dependencies: - process "~0.11.0" + setimmediate "^1.0.4" + +tiny-inflate@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7" to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -tty-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toml@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" + +tomlify-j0.4@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" typedarray@^0.0.6: version "0.0.6" @@ -937,41 +3486,144 @@ typescript@^2.9.1: version "2.9.1" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.1.tgz#fdb19d2c67a15d11995fd15640e373e09ab09961" -umd@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" +uglify-es@^3.2.1, uglify-es@^3.3.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" -url@~0.11.0: +unicode-trie@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" dependencies: punycode "1.3.2" querystring "0.2.0" +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.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" -util@~0.10.1: +util@^0.10.3: version "0.10.4" resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" dependencies: inherits "2.0.3" -vm-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.0.1.tgz#a15d7762c4c48fa6bf9f3309a21340f00ed23063" +v8-compile-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" + +vendors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + +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" + +whet.extend@~0.9.9: + version "0.9.9" + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +ws@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.0.tgz#9fd95e3ac7c76f6ae8bcc868a0e3f11f1290c33e" + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"